[原][osg][粒子特效]spark粒子特效生成流程(自定义类型说明)

enum DLL_SAMPLE_API SPARKTrackType
{
    SPARK_TRACK_FOLLOW = 0,                //!< 粒子发射出的粒子也会随着节点移动
    SPARK_TRACK_STANDALONE = 1,            //!< 粒子发射出的粒子不跟随节点移动
    SPARK_TRACK_MAX
};
    
enum DLL_SAMPLE_API SPARKState
{
    SPARK_PREPARE = 0,
    SPARK_STOP = 1,            //!< 粒子处于关闭状态
    SPARK_START = 2,        //!< 粒子处于开启状态    
    SPARK_REBUILD = 3,        //!< 粒子即将重启    
    SPARK_STATE_MAX
};

enum DLL_SAMPLE_API SPARKDataType
{
    //这里全是控制系数,不是真实的值
    SPARK_DATATYPE_SCALE = 0,    //FLOAT        缩放系数
    SPARK_DATATYPE_LIFETIME = 1, //FLOAT    生命时间
    SPARK_DATATYPE_VELOCITY = 2,  //FLOAT    初速度
    SPARK_DATATYPE_MAX
};

enum DLL_SAMPLE_API SPARK_MODIFIER
{
    SPARKMODIFIER_GRAVITY = 0,
    SPARKMODIFIER_FRICTION = 1,
    SPARKMODIFIER_COLLIDER = 2,
    //SPARKMODIFIER_ROTATOR = 3,
    SPARKMODIFIER_EMITTERATTACHER = 3,
    SPARKMODIFIER_POINTMASS = 4,
    SPARKMODIFIER_RANDOMFORCE = 5,
    SPARKMODIFIER_VORTEX = 6,
    SPARKMODIFIER_ZONE_DOSTROY = 7,
    SPARKMODIFIER_ZONE_LINERFORCE = 8,
    SPARKMODIFIER_ZONE_OBSTACLE = 9,
    SPARKMODIFIER_MAX
};

enum DLL_SAMPLE_API SPARK_EMITTER
{
    SPARK_EMITTER_NORMAL =0, 
    SPARK_EMITTER_RANDOM =1,
    SPARK_EMITTER_SPHERIC =2,//球面,常用
    SPARK_EMITTER_STATIC =3,
    SPARK_EMITTER_STRAIGHT =4,//直喷
    SPARK_EMITTER_MAX
};

enum DLL_SAMPLE_API SPARK_INTERPOLATOR
{
    SPARK_INTERPOLATOR_COLOR = 0,
    SPARK_INTERPOLATOR_SCALE =1,
    SPARK_INTERPOLATOR_TEXTUREINDEX =2,
    SPARK_INTERPOLATOR_ROTATESPEED =3,
    SPARK_INTERPOLATOR_ANGLE =4,
    SPARK_INTERPOLATOR_MASS =5,
    SPARK_INTERPOLATOR_MAX 
};

enum DLL_SAMPLE_API SPARK_INTERPOLATOR_MODE
{
    SPARK_INTERPOLATOR_MODE_DefaultInitializer =0,//固定值
    SPARK_INTERPOLATOR_MODE_GraphInterpolator =1,//不同时间片,按照时间片使用vector中的数据
    SPARK_INTERPOLATOR_MODE_RandomInitializer =2,//随机一个固定插值
    SPARK_INTERPOLATOR_MODE_RandomInterpolator =3,//初随机值变化到末随机值
    SPARK_INTERPOLATOR_MODE_SimpleInterpolator =4,//初固定值变化到末固定值
    SPARK_INTERPOLATOR_MODE_MAX
};

enum DLL_SAMPLE_API SPARK_ZONE
{
    SPARK_ZONE_BOX =0,
    SPARK_ZONE_CYLINDER =1,
    SPARK_ZONE_PLANE =2,
    SPARK_ZONE_POINT =3,
    SPARK_ZONE_RING =4,
    SPARK_ZONE_SPHERE =5,
    SPARK_ZONE_MAX
};

enum DLL_SAMPLE_API SPARK_ZONETEST
{
    SPARK_ZONETEST_INSIDE = 0,
    SPARK_ZONETEST_OUTSIDE = 1,
    SPARK_ZONETEST_INTERSECT =2,//横穿
    SPARK_ZONETEST_ENTER =3,//进入
    SPARK_ZONETEST_LEAVE =4,//离开
    SPARK_ZONETEST_ALWAYS = 5,//    
    SPARK_ZONETEST_MAX
};

enum DLL_SAMPLE_API SPARK_RENDER
{
    SPARK_RENDER_POINT = 0,
    SPARK_RENDER_QUAD = 1,
    SPARK_RENDER_LINE = 2,
    SPARK_RENDER_LINETRAIL = 3,
    SPARK_RENDER_MAX
};

enum DLL_SAMPLE_API SPARK_TEXTURE_PIXELFORMAT
{
    SPARK_TEXTURE_PIXELFORMAT_ALPHA = 0,
    SPARK_TEXTURE_PIXELFORMAT_RGB = 1,
    SPARK_TEXTURE_PIXELFORMAT_RGBA = 2,
    SPARK_TEXTURE_PIXELFORMAT_RED = 3,
    SPARK_TEXTURE_PIXELFORMAT_GREEN = 4,
    SPARK_TEXTURE_PIXELFORMAT_BLUE = 5,
    SPARK_TEXTURE_PIXELFORMAT_MAX
};

enum DLL_SAMPLE_API SPARK_RENDER_BlendMode
{
    SPARK_BLEND_MODE_ALPHA = 0,
    SPARK_BLEND_MODE_ADD = 1,
    SPARK_BLEND_MODE_MAX
};

enum DLL_SAMPLE_API SPARK_RENDER_TextureMode
{
    SPARK_TEXTURE_MODE_2D = 0,    /**< Constant telling a 2D texture is used */
    SPARK_TEXTURE_MODE_3D = 1,    /**< Constant telling a 3D texture is used */
    SPARK_TEXTURE_MODE_MAX
};

enum DLL_SAMPLE_API SPARK_RENDER_Orientation
{
    SPARK_ORIENTATION_CAMERA_PLANE  = 0,        //粒子朝向相机平面(最常见的)
    SPARK_ORIENTATION_CAMERA_POINT = 1,            //粒子朝向相机点(更好的效果,但更浪费效率)
    SPARK_ORIENTATION_DIRECTION = 2,            //粒子是朝向它们的方向的功能,并试图看向相机
    SPARK_ORIENTATION_AROUND_AXIS = 3,            //粒子只能围绕轴旋转并尝试查看相机
    SPARK_ORIENTATION_TOWARDS_POINT = 4,        //粒子朝向宇宙中的一个点
    SPARK_ORIENTATION_FIXED_ORIENTATION = 5,    //粒子在宇宙中具有固定的方向
    SPARK_ORIENTATION_MAX 
};

 

posted @ 2017-09-07 13:24  南水之源  阅读(1106)  评论(0编辑  收藏  举报