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