Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef PARTICLESFX_H
Toshihiro Shimizu 890ddd
#define PARTICLESFX_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "stdfx.h"
Toshihiro Shimizu 890ddd
#include "tfxparam.h"
Toshihiro Shimizu 890ddd
#include "tspectrumparam.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//******************************************************************
Toshihiro Shimizu 890ddd
//    Particles Fx  class
Toshihiro Shimizu 890ddd
//******************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class ParticlesFx : public TStandardZeraryFx
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	FX_PLUGIN_DECLARATION(ParticlesFx)
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TFxPortDG m_source, m_control;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TIntParamP source_ctrl_val;
Toshihiro Shimizu 890ddd
	TIntParamP bright_thres_val;
Toshihiro Shimizu 890ddd
	TBoolParamP multi_source_val;
Toshihiro Shimizu 890ddd
	TPointParamP center_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP length_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP height_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP maxnum_val;
Toshihiro Shimizu 890ddd
	TRangeParamP lifetime_val;
Toshihiro Shimizu 890ddd
	TIntParamP lifetime_ctrl_val;
Toshihiro Shimizu 890ddd
	TBoolParamP column_lifetime_val;
Toshihiro Shimizu 890ddd
	TIntParamP startpos_val;
Toshihiro Shimizu 890ddd
	TIntParamP randseed_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP gravity_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP g_angle_val;
Toshihiro Shimizu 890ddd
	TIntParamP gravity_ctrl_val;
Toshihiro Shimizu 890ddd
	//  TIntParamP        gravity_radius_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP friction_val;
Toshihiro Shimizu 890ddd
	TIntParamP friction_ctrl_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP windint_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP windangle_val;
Toshihiro Shimizu 890ddd
	TIntEnumParamP swingmode_val;
Toshihiro Shimizu 890ddd
	TRangeParamP randomx_val;
Toshihiro Shimizu 890ddd
	TRangeParamP randomy_val;
Toshihiro Shimizu 890ddd
	TIntParamP randomx_ctrl_val;
Toshihiro Shimizu 890ddd
	TIntParamP randomy_ctrl_val;
Toshihiro Shimizu 890ddd
	TRangeParamP swing_val;
Toshihiro Shimizu 890ddd
	TRangeParamP speed_val;
Toshihiro Shimizu 890ddd
	TIntParamP speed_ctrl_val;
Toshihiro Shimizu 890ddd
	TRangeParamP speeda_val;
Toshihiro Shimizu 890ddd
	TIntParamP speeda_ctrl_val;
Toshihiro Shimizu 890ddd
	TBoolParamP speeda_use_gradient_val;
Toshihiro Shimizu 890ddd
	TBoolParamP speedscale_val;
Toshihiro Shimizu 890ddd
	TIntEnumParamP toplayer_val;
Toshihiro Shimizu 890ddd
	TRangeParamP mass_val;
Toshihiro Shimizu 890ddd
	TRangeParamP scale_val;
Toshihiro Shimizu 890ddd
	TIntParamP scale_ctrl_val;
Toshihiro Shimizu 890ddd
	TBoolParamP scale_ctrl_all_val;
Toshihiro Shimizu 890ddd
	TRangeParamP rot_val;
Toshihiro Shimizu 890ddd
	TIntParamP rot_ctrl_val;
Toshihiro Shimizu 890ddd
	TRangeParamP trail_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP trailstep_val;
Toshihiro Shimizu 890ddd
	TIntEnumParamP rotswingmode_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP rotspeed_val;
Toshihiro Shimizu 890ddd
	TRangeParamP rotsca_val;
Toshihiro Shimizu 890ddd
	TRangeParamP rotswing_val;
Toshihiro Shimizu 890ddd
	TBoolParamP pathaim_val;
Toshihiro Shimizu 890ddd
	TRangeParamP opacity_val;
Toshihiro Shimizu 890ddd
	TIntParamP opacity_ctrl_val;
Toshihiro Shimizu 890ddd
	TRangeParamP trailopacity_val;
Toshihiro Shimizu 890ddd
	TRangeParamP scalestep_val;
Toshihiro Shimizu 890ddd
	TIntParamP scalestep_ctrl_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP fadein_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP fadeout_val;
Toshihiro Shimizu 890ddd
	TIntEnumParamP animation_val;
Toshihiro Shimizu 890ddd
	TIntParamP step_val;
Toshihiro Shimizu 890ddd
	TSpectrumParamP gencol_val;
Toshihiro Shimizu 890ddd
	TIntParamP gencol_ctrl_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP gencol_spread_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP genfadecol_val;
Toshihiro Shimizu 890ddd
	TSpectrumParamP fincol_val;
Toshihiro Shimizu 890ddd
	TIntParamP fincol_ctrl_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP fincol_spread_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP finrangecol_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP finfadecol_val;
Toshihiro Shimizu 890ddd
	TSpectrumParamP foutcol_val;
Toshihiro Shimizu 890ddd
	TIntParamP foutcol_ctrl_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP foutcol_spread_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP foutrangecol_val;
Toshihiro Shimizu 890ddd
	TDoubleParamP foutfadecol_val;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TBoolParamP source_gradation_val;
Toshihiro Shimizu 890ddd
	TBoolParamP pick_color_for_every_frame_val;
Toshihiro Shimizu 890ddd
	TBoolParamP perspective_distribution_val;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	enum { UNIT_SMALL_INCH,
Toshihiro Shimizu 890ddd
		   UNIT_INCH };
Toshihiro Shimizu 890ddd
	enum { MATTE_REF,
Toshihiro Shimizu 890ddd
		   GRAY_REF,
Toshihiro Shimizu 890ddd
		   H_REF };
Toshihiro Shimizu 890ddd
	enum { SWING_RANDOM,
Toshihiro Shimizu 890ddd
		   SWING_SMOOTH };
Toshihiro Shimizu 890ddd
	enum { ANIM_HOLD,
Toshihiro Shimizu 890ddd
		   ANIM_RANDOM,
Toshihiro Shimizu 890ddd
		   ANIM_CYCLE,
Toshihiro Shimizu 890ddd
		   ANIM_R_CYCLE,
Toshihiro Shimizu 890ddd
		   ANIM_S_CYCLE,
Toshihiro Shimizu 890ddd
		   ANIM_SR_CYCLE };
Toshihiro Shimizu 890ddd
	enum { TOP_YOUNGER,
Toshihiro Shimizu 890ddd
		   TOP_OLDER,
Toshihiro Shimizu 890ddd
		   TOP_SMALLER,
Toshihiro Shimizu 890ddd
		   TOP_BIGGER,
Toshihiro Shimizu 890ddd
		   TOP_RANDOM };
Toshihiro Shimizu 890ddd
	enum { CTRL_NONE = -1,
Toshihiro Shimizu 890ddd
		   CTRL_1,
Toshihiro Shimizu 890ddd
		   CTRL_2 };
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ParticlesFx();
Toshihiro Shimizu 890ddd
	~ParticlesFx();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	bool isZerary() const { return true; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int dynamicPortGroupsCount() const { return 2; }
Toshihiro Shimizu 890ddd
	const TFxPortDG *dynamicPortGroup(int g) const
Toshihiro Shimizu 890ddd
	{
Toshihiro Shimizu 890ddd
		return (g == 0) ? &m_source : (g == 1) ? &m_control : 0;
Toshihiro Shimizu 890ddd
	}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	bool canHandle(const TRenderSettings &info, double frame) { return true; }
Toshihiro Shimizu 890ddd
	bool allowUserCacheOnPort(int port);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	string getAlias(double frame, const TRenderSettings &info) const;
Toshihiro Shimizu 890ddd
	bool doGetBBox(double frame, TRectD &bBox, const TRenderSettings &info);
Toshihiro Shimizu 890ddd
	TFxTimeRegion getTimeRegion() const { return TFxTimeRegion::createUnlimited(); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void doDryCompute(TRectD &rect, double frame, const TRenderSettings &info);
Toshihiro Shimizu 890ddd
	void doCompute(TTile &tile, double frame, const TRenderSettings &ri);
Toshihiro Shimizu 890ddd
	void compute(TFlash &flash, int frame);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void getParamUIs(TParamUIConcept *&concepts, int &length);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void compatibilityTranslatePort(int majorVersion, int minorVersion, std::string &portName);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif // PARTICLESFX_H