particle system参数systemquad 支持多大的图

下次自动登录
现在的位置:
& 综合 & 正文
cocos2d-x节点(CCParticleSystemQuad.h)API
本文来自 ,引用必须注明出处!
cocos2d-x节点(CCParticleSystemQuad.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客
ParticleSystemQuad 是 ParticleSystem的子类,它包含 ParticleSystem的所有功能,
增加了,缩放、旋转、批处理
///cocos2d-x-3.0alpha0/cocos2dx/particle_nodes
//ParticleSystemQuad 是 ParticleSystem 的子类,它包含 ParticleSystem 的所有功能, 增加了,缩放、旋转、批处理
#ifndef __CC_PARTICLE_SYSTEM_QUAD_H__
#define __CC_PARTICLE_SYSTEM_QUAD_H__
"CCParticleSystem.h"
NS_CC_BEGIN
class SpriteF
* @addtogroup particle_nodes
/** @brief ParticleSystemQuad 是 ParticleSystem 的子类
它包含 ParticleSystem 的所有功能.
特殊功能和限制:
- Particle size can be any float number.
//粒子尺寸可以是任意 float 数字.
- The system can be scaled
//该系统可缩放
- The particles can be rotated
//这些粒子可以是旋转
- It supports subrects
//它支持主题
- It supports batched rendering since 1.1
//从 1.1 开始,它支持批处理渲染
@since v0.8
class CC_DLL ParticleSystemQuad : public ParticleSystem
/** 创建一个粒子发射器 */
static ParticleSystemQuad * create();
/**使用 粒子数 创建一个粒子发射器 */
static ParticleSystemQuad * createWithTotalParticles(unsigned int numberOfParticles);
/** 从一个plist文件初始化一个 ParticleSystemQuad,这个plist文件可以手动创建或者使用
Particle Designer 创建
static ParticleSystemQuad * create(const char *plistFile);
* @js ctor
ParticleSystemQuad();
virtual ~ParticleSystemQuad();
/** 初始化顶点的 indices(指数) */
void initIndices();
/** 使用 矩形测量点 初始化一个 texture */
void initTexCoordsWithRect(const Rect& rect);
/** 把一个新的 SpriteFrame 设置为 particle.
WARNING: 这个方法正在实验. 请使用 setTextureWithRect 替代.
@since v0.99.4
void setDisplayFrame(SpriteFrame *spriteFrame);
/** 使用 rect 设置一个新的 texture.这个 rect 是 Points 组成的.
@since v0.99.4
void setTextureWithRect(Texture2D *texture, const Rect& rect);
/** 监听 android的 “coming to foreground”事件
void listenBackToForeground(Object *obj);
// Overrides
virtual bool initWithTotalParticles(unsigned int numberOfParticles)
virtual void setTexture(Texture2D* texture)
virtual void updateQuadWithParticle(tParticle* particle, const Point& newPosition)
virtual void postStep()
virtual void draw()
virtual void setBatchNode(ParticleBatchNode* batchNode)
virtual void setTotalParticles(int tp)
#if CC_TEXTURE_ATLAS_USE_VAO
void setupVBOandVAO();
void setupVBO();
bool allocMemory();
protected:
V3F_C4B_T2F_Quad
// quads to be rendered
//要呈现的四边形
// indices
#if CC_TEXTURE_ATLAS_USE_VAO
_buffersVBO[2]; //0: vertex
1: indices
// end of particle_nodes group
#endif //__CC_PARTICLE_SYSTEM_QUAD_H__
&&&&推荐文章:
【上篇】【下篇】A Particle System component simulates fluid entities such as liquids, clouds and flames by generating and animating large numbers of small 2D images in the scene. For a full introduction to particle systems and their uses, see the .
Properties
The Particle System component has many properties and for convenience, the inspector organises them into collapsible sections or “modules”. The modules are documented in . Each module can be expanded and collapsed by clicking the bar that shows its name. At the left side of the bar is a checkbox that can be used to enable or disable the functionality of the properties in that section. For example, if you don’t want to vary the sizes of particles over their lifetime, you can simply uncheck the Size over lifetime section.
Aside from the module bars, the inspector contains a few other controls. The Open Editor button shows the options in a separate editor window that also allows you to edit multiple systems at once. The Resimulate checkbox determines whether or not property changes should be applied immediately to particles already generated by the system (the alternative is that existing particles are left as they are and only the new particles have the changed properties). The Wireframe button shows the outlines of the mesh objects used to show the particles in the scene.
Particle Systems Reference
Particle System Modules下次自动登录
现在的位置:
& 综合 & 正文
cocos2d-x节点(CCParticleSystem.h)API
本文来自 ,引用必须注明出处!
cocos2d-x节点(CCParticleSystem.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客
粒子系统的基类,重力模式、半径模式
备注:变动 是,每一次 增减/减少 的固定值
///cocos2d-x-3.0alpha0/cocos2dx/particle_nodes
//粒子系统的基类,重力模式、半径模式
备注:变动 是,每一次 增减/减少 的固定值
#ifndef __CCPARTICLE_SYSTEM_H__
#define __CCPARTICLE_SYSTEM_H__
#include "CCProtocols.h"
#include "base_nodes/CCNode.h"
#include "cocoa/CCDictionary.h"
#include "cocoa/CCString.h"
NS_CC_BEGIN
* @addtogroup particle_nodes
class ParticleBatchN
包含每个粒子的值的结构
typedef struct sParticle {
unsigned int
//! Mode A: gravity, direction, radial accel, tangential accel
//重力,方向,径向加速度,切向加速度
tangentialA
//! Mode B: radius mode
degreesPerS
//typedef void (*CC_UPDATE_PARTICLE_IMP)(id, SEL, tParticle*, Point);
class Texture2D;
/** @brief 粒子系统的基类。
一个粒子系统的属性:
- 颗粒的发射率
- 重力模式 (Mode A):
- direction
- speed +-
//速度 + -变动
- tangential acceleration +- variance
//切向加速度+ - 变动
- radial acceleration +- variance
//径向加速度+ - 变动
- Radius Mode (Mode B):
//半径模式
- startRadius +- variance
//开始半径+- 变动
- endRadius +- variance
//结束半径+- 变动
- rotate +- variance
//环绕 +- 变动
- Properties common to all modes:
//所有模式共同的属性
- life +- life variance
//life 变动
- start spin +- variance
//开始旋转+ - 变动
- end spin +- variance
//结束旋转+ - 变动
- start size +- variance
//初始尺寸+- 变动
- end size +- variance
//结束尺寸+- 变动
- start color +- variance
//初始+- 变动
- end color +- variance
//结束尺寸+- 变动
- life +- variance
//生命值 +- 变动
- blending function
//混合功能
cocos2d 也支持 Particle Designer 生成 particles (/).
Particle Designer 的 'Radius Mode'使用 30 hz 的固定发射率. 在 cocos2d 里面不能保证
cocos2d 中采用了另一种方法,但结果几乎是相同的
Particle Designer 支持所有 cocos2d 变量,在加上下面一些:
- spinning particles (supported when using ParticleSystemQuad)
//自旋粒子(使用ParticleSystemQuad时支持)
- tangential acceleration (Gravity mode)
//切向加速度(重力模式)
- radial acceleration (Gravity mode)
- radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only)
//半径方向(半径模式)((Particle Designer 只支持从外向内的方向)
在运行时可以自定义任何上述物品,例如:
emitter.radialAccel = 15;
//发射器的径向加速
emitter.startSpin = 0;
//发射器的开始旋转
class CC_DLL ParticleSystem : public Node, public TextureProtocol
enum class Mode
/** @typedef PositionType
粒子位置的可能类型
enum class PositionType
/** 附着于世界的 Living particles 受发射器重新定位影响. */
/** 附着于世界的 Living particles
遵循发射器的重新定位。
使用情况: 在 sprite 上附加发射器,你希望发射器跟随 sprite.
/** Living particles 附着于发射器,和跟随它一起转换. */
/** 粒子发射器永远 lives */
DURATION_INFINITY = -1,
/** 粒子的初始尺寸,等于结束尺寸 */
START_SIZE_EQUAL_TO_END_SIZE = -1,
/** 粒子的起始半径等于结束半径 */
START_RADIUS_EQUAL_TO_END_RADIUS = -1,
/** 从一个plist文件创建并初始化一个粒子系统,这个plist文件可以手动创建或者使用
Particle Designer 创建:
@since v2.0
static ParticleSystem * create(const char *plistFile);
//! 使用 固定数量的颗粒 建立一个系统
static ParticleSystem* createWithTotalParticles(unsigned int numberOfParticles);
* @js ctor
ParticleSystem();
virtual ~ParticleSystem();
/** 初始化一个 ParticleSystem*/
bool init();
/** 从一个plist文件创建并初始化一个粒子系统,这个plist文件可以手动创建或者使用
Particle Designer 创建:
@since v0.99.3
bool initWithFile(const char *plistFile);
/** 使用 Dictionary 初始化一个 QuadParticleSystem .
@since v0.99.3
bool initWithDictionary(Dictionary *dictionary);
/** 使用 NSDictionary,需要加载的 png 文件路径 初始化一个 particle system
@since v2.1
bool initWithDictionary(Dictionary *dictionary, const char *dirname);
//! 使用 固定数量的颗粒 初始化一个系统
virtual bool initWithTotalParticles(unsigned int numberOfParticles);
//! 添加粒子到发射器
bool addParticle();
//! 初始化粒子
void initParticle(tParticle* particle);
//! 停止发射粒子。运行的粒子将继续运行,直到他们死了
void stopSystem();
//! 杀死所有 living 粒子。
void resetSystem();
//! whether or not the system is full
//系统是否充满
bool isFull();
//! 应该由子类重写
virtual void updateQuadWithParticle(tParticle* particle, const Point& newPosition);
//! 应该由子类重写
virtual void postStep();
virtual void updateWithNoTime(void);
virtual bool isAutoRemoveOnFinish()
virtual void setAutoRemoveOnFinish(bool var);
virtual const Point& getGravity();
virtual void setGravity(const Point& g);
virtual float getSpeed()
virtual void setSpeed(float speed);
virtual float getSpeedVar()
virtual void setSpeedVar(float speed);
virtual float getTangentialAccel()
virtual void setTangentialAccel(float t);
virtual float getTangentialAccelVar()
virtual void setTangentialAccelVar(float t);
virtual float getRadialAccel()
virtual void setRadialAccel(float t);
virtual float getRadialAccelVar()
virtual void setRadialAccelVar(float t);
virtual bool getRotationIsDir()
virtual void setRotationIsDir(bool t);
virtual float getStartRadius()
virtual void setStartRadius(float startRadius);
virtual float getStartRadiusVar()
virtual void setStartRadiusVar(float startRadiusVar);
virtual float getEndRadius()
virtual void setEndRadius(float endRadius);
virtual float getEndRadiusVar()
virtual void setEndRadiusVar(float endRadiusVar);
virtual float getRotatePerSecond()
virtual void setRotatePerSecond(float degrees);
virtual float getRotatePerSecondVar()
virtual void setRotatePerSecondVar(float degrees);
virtual void setScale(float s);
virtual void setRotation(float newRotation);
virtual void setScaleX(float newScaleX);
virtual void setScaleY(float newScaleY);
virtual bool isActive()
virtual bool isBlendAdditive()
virtual void setBlendAdditive(bool value);
virtual ParticleBatchNode* getBatchNode()
virtual void setBatchNode(ParticleBatchNode* batchNode);
// 批处理 array 系统的索引
inline int getAtlasIndex() const { return _atlasI };
inline void setAtlasIndex(int index) { _atlasIndex = };
/** 当前时刻被模拟的粒子数量 */
inline unsigned int getParticleCount() const { return _particleC };
/** 发射器将运行多少秒. -1 意味着 'forever' */
inline float getDuration() const { return _ };
inline void setDuration(float duration) { _duration = };
/** sourcePosition of the emitter(发射源的位置) */
inline const Point& getSourcePosition() const { return _sourceP };
inline void setSourcePosition(const Point& pos) { _sourcePosition = };
/** 发射器位置的变动量 */
inline const Point& getPosVar() const { return _posV };
inline void setPosVar(const Point& pos) { _posVar = };
/** life, 每个粒子的 life 变动量 */
inline float getLife() const { return _ };
inline void setLife(float life) { _life = };
/** 每个粒子的 life 变动量 */
inline float getLifeVar() const { return _lifeV };
inline void setLifeVar(float lifeVar) { _lifeVar = lifeV };
/** angle ,每个粒子的角度变化量 */
inline float getAngle() const { return _ };
inline void setAngle(float angle) { _angle = };
/** 每个粒子的角度变化量 */
inline float getAngleVar() const { return _angleV };
inline void setAngleVar(float angleVar) { _angleVar = angleV };
/** 不同类型的发射模式之间的切换:
- kParticleModeGravity: uses gravity, speed, radial and tangential acceleration
- kParticleModeRadius: uses radius movement + rotation
inline Mode getEmitterMode() const { return _emitterM };
inline void setEmitterMode(Mode mode) { _emitterMode = };
/** 每个粒子的初始化时的尺寸(以像素为单位) */
inline float getStartSize() const { return _startS };
inline void setStartSize(float startSize) { _startSize = startS };
/** 每个粒子的尺寸变化量(以像素为单位) */
inline float getStartSizeVar() const { return _startSizeV };
inline void setStartSizeVar(float sizeVar) { _startSizeVar = sizeV };
/** 每个粒子的结束时的尺寸(以像素为单位) */
inline float getEndSize() const { return _endS };
inline void setEndSize(float endSize) { _endSize = endS };
/** 结束时每个粒子的尺寸变化量(以像素为单位) */
inline float getEndSizeVar() const { return _endSizeV };
inline void setEndSizeVar(float sizeVar) { _endSizeVar = sizeV };
/** 每个粒子开始颜色 */
inline const Color4F& getStartColor() const { return _startC };
inline void setStartColor(const Color4F& color) { _startColor = };
/** 每个粒子开始颜色的变动量 */
inline const Color4F& getStartColorVar() const { return _startColorV };
inline void setStartColorVar(const Color4F& color) { _startColorVar = };
/** end color,结束时每个粒子的颜色变化量 */
inline const Color4F& getEndColor() const { return _endC };
inline void setEndColor(const Color4F& color) { _endColor = };
/** 结束时每个粒子的颜色变化量 */
inline const Color4F& getEndColorVar() const { return _endColorV };
inline void setEndColorVar(const Color4F& color) { _endColorVar = };
//* 每个粒子的初始角度
inline float getStartSpin() const { return _startS };
inline void setStartSpin(float spin) { _startSpin = };
//* 每个粒子的初始角度
inline float getStartSpinVar() const { return _startSpinV };
inline void setStartSpinVar(float pinVar) { _startSpinVar = pinV };
//* 每个粒子的初始角度
inline float getEndSpin() const { return _endS };
inline void setEndSpin(float endSpin) { _endSpin = endS };
//* 每个粒子的初始角度
inline float getEndSpinVar() const { return _endSpinV };
inline void setEndSpinVar(float endSpinVar) { _endSpinVar = endSpinV };
/** 粒子的发射率 */
inline float getEmissionRate() const { return _emissionR };
inline void setEmissionRate(float rate) { _emissionRate = };
/** 系统的最大粒子 */
virtual int getTotalParticles()
virtual void setTotalParticles(int totalParticles);
/** 使用alpha值修改颜色 */
inline void setOpacityModifyRGB(bool opacityModifyRGB) { _opacityModifyRGB = opacityModifyRGB; };
inline bool isOpacityModifyRGB() const { return _opacityModifyRGB; };
CC_DEPRECATED_ATTRIBUTE inline bool getOpacityModifyRGB() const { return isOpacityModifyRGB(); }
/** 粒子的运动类型:自由或分组
@since v0.8
inline PositionType getPositionType() const { return _positionT };
inline void setPositionType(PositionType type) { _positionType = };
// Overrides
virtual void update(float dt)
virtual Texture2D* getTexture()
virtual void setTexture(Texture2D *texture)
*当这个函数绑定到 js or lua,输入参数会改变
*In js: var setBlendFunc(var src, var dst)
*In lua: local setBlendFunc(local src, local dst)
virtual void setBlendFunc(const BlendFunc &blendFunc)
virtual const BlendFunc &getBlendFunc()
protected:
virtual void updateBlendFunc();
protected:
/** 添加时是否使用混合功能.
如果启用,下列混合功能将使用
source blend function = GL_SRC_ALPHA;
dest blend function = GL_ONE;
bool _isBlendA
/** 没有 颗粒离开时,节点是否被自动删除
By default it is false.
@since v0.8
bool _isAutoRemoveOnF
std::string _plistF
//! 从系统开始到现在所经历的时间
// Different modes
//! Mode A:Gravity + Tangential Accel + Radial Accel
/** 重力值。仅适用于 'Gravity' 模式. */
/** 每个粒子的速度。仅适用于 'Gravity' 模式.
/** 每个粒子的速度变动. 仅适用于 'Gravity' 模式. */
float speedV
/** 每个粒子的切向加速度. 仅适用于 'Gravity' 模式. */
float tangentialA
/** 每个粒子的切向加速度变动. 仅适用于 'Gravity' 模式. */
float tangentialAccelV
/** 每个粒子的径向加速度. 仅适用于 'Gravity' 模式. */
float radialA
/** 每个粒子的径向加速度变动. 仅适用于 'Gravity' 模式. */
float radialAccelV
/** 设置每个粒子的旋转方向,仅适用于 'Gravity' 模式. */
bool rotationIsD
//! Mode B: circular movement (gravity, radial accel 、 tangential accel 不要在这个模型里面使用)
/** 粒子的起始半径. 仅适用于 'Radius' 模式. */
float startR
/** 粒子的起始半径变动.
仅适用于 'Radius' 模式. */
float startRadiusV
/** 结束时的粒子半径.
仅适用于 'Radius' 模式. */
float endR
/** 结束时粒子半径变动.
仅适用于 'Radius' 模式. */
float endRadiusV
/** 源位置周围的粒子每秒旋转角度.
仅适用于 'Radius' 模式. */
float rotatePerS
/** 每秒的旋转变动. 仅适用于 'Radius' 模式. */
float rotatePerSecondV
//! 粒子 Array
tParticle *_
// 色彩调节
BOOL colorM
//!每秒可发出多少粒子
float _emitC
particle idx
int _particleI
// Optimization
//CC_UPDATE_PARTICLE_IMP
updateParticleI
updateParticleS
/** the SpriteBatchNode 呈现 Sprite 是弱引用 */
ParticleBatchNode* _batchN
// 在批处理 array 里面的索引
int _atlasI
//true 如果 缩放/旋转
bool _transformSystemD
// 分配的粒子数
int _allocatedP
/** 是否激活了发射器 */
/** 当前时刻被模拟的颗粒数量 */
int _particleC
/** 发射器将运行多久 -1 意味着 'forever' */
/** 发射源的位置*/
Point _sourceP
/** 发射器的位置变动量 */
Point _posV
/** life,每个粒子的 life 变动量 */
/** 每个粒子的 life 变动量 */
float _lifeV
/** angle ,每个粒子的角度变化量 */
/** 每个粒子的角度变化量 */
float _angleV
/** 不同类型的发射模式之间切换:
- kParticleModeGravity: uses gravity, speed, radial and tangential acceleration
- kParticleModeRadius: uses radius movement + rotation
Mode _emitterM
/** 每个粒子的初始化尺寸(以像素为单位) */
float _startS
/** 每个粒子的尺寸变化量 */
float _startSizeV
/** 每个粒子的结束时的尺寸(以像素为单位) */
float _endS
/** 每个粒子的尺寸变化量*/
float _endSizeV
/** 每个粒子开始颜色 */
Color4F _startC
/** 每个粒子开始颜色的变动量 */
Color4F _startColorV
/** end color ,结束时每个粒子的颜色变化量 */
Color4F _endC
/** 结束时每个粒子的颜色变化量 */
Color4F _endColorV
//* 每个粒子的初始角度
float _startS
//* 每个粒子的初始角度
float _startSpinV
//* 每个粒子的初始角度
float _endS
//* 每个粒子的初始角度
float _endSpinV
/** 粒子的发射率 */
float _emissionR
/** 系统的最大粒子 */
int _totalP
/** 符合 CocosNodeTexture 协议 */
Texture2D* _
/** 符合 CocosNodeTexture 协议 */
BlendFunc _blendF
/** 使用alpha值修改颜色 */
bool _opacityModifyRGB;
/** 粒子的运动类型:自由或分组
@since v0.8
PositionType _positionT
// end of particle_nodes group
#endif //__CCPARTICLE_SYSTEM_H__
&&&&推荐文章:
【上篇】【下篇】14191人阅读
cocos2d-x 初入学堂(21)
欢迎转载!转载时请注明出处:
第一次接触粒子系统,以前游戏里面的一些小特效,像制作动画一样,是采用一帧一帧的切出来的,由于这种特效,变化无常,切出来的帧,都非常的大,也很耗内存,一下就内存溢出了......呵呵~& 主要是以前都没有接触过... 现在接触了,以后游戏就可以用到了...开心!
& //创建一个CCParticleSystem粒子系统
& CCParticleSystem* ignore = CCParticleSystemQuad::create(&Particles/SmallSun.plist&);
& //第一种创建节点方式
& CCNode *parent1 = CCNode::create();//创建一个节点
& //第二种创建节点方式
& CCNode *parent2 = CCParticleBatchNode::create(ignore-&getTexture());
&&//第一种:创建一个CCParticleSystemQuad系统:每个粒子用4个点(Quad,矩形)表示的粒子系统
& CCParticleSystemQuad *emitter = CCParticleSystemQuad::create(&Particles/SmallSun.plist&);
&&//第二种:创建CCParticleSystemQuad系统
& m_emitter = new CCParticleSystemQuad();
& std::string filename = &Particles/& +“粒子资源文件名字”+ &.plist&;
&&m_emitter-&initWithFile(filename.c_str());
下面是一些常用设置:
& emitter1-&setStartColor(ccc4f(1,0,0,1));//设置粒子RGBA值
& emitter1-&setBlendAdditive(false);//是否添加混合
& emitter1-&setPosition(ccp( s.width/2-30,&&& s.height/2+60*neg));//设置发射粒子的位置
& emitter-&setAutoRemoveOnFinish(true);//完成后制动移除
& //将粒子系统添加到节点(也可以直接将其添加到一个背景精灵CCSprite里面)
& parent1-&addChild(emitter1, 0, 1);
& //然后在添加到层里面
& layer-&addChild(parent1, 10, 1000+i);
CCParticleSystem中的常用设置参数表:
& &&&&& &//重力和方向的向量
&&&&&&& CCP
&&&&&&& //速度
&&&&&&& //粒子的速度差异
&&&&&&& float speedV
&&&&&&& //粒子的切线加速度
&&&&&&& float tangentialA
&&&&&&& //粒子间的切线加速度差异
&&&&&&& float tangentialAccelV
&&&&&&& //粒子的径向加速度
&&&&&&& float radialA
&&&&&&& //粒子间的径向加速度差异
&&&&&&& float radialAccelV
&&& } modeA;
&&&&&&& //粒子开始半径
&&&&&&& float startR
&&&&&&&&//粒子间开始半径差异
&&&&&&& float startRadiusV
&&&&&&& //粒子结束半径
&&&&&&&&float endR
&&&&&& &//粒子间结束半径差异
&&&&&&& float endRadiusV&&&&&&&&&&&&
&&&&&&& //粒子每秒的旋转角度
&&&&&&& float rotatePerS
&&&&&&&&//粒子间每秒的旋转角度差异&&&&&&&&
&&&&&&& float rotatePerSecondV
&&& } modeB;
cocos2dx已经为我们提供了非常多的粒子系统效果:
CCParticleExplosion爆炸
CCParticleFire 火
CCParticleFireworks烟火
CCParticleFlower花
CCParticleGalaxy 银河
CCParticleMeteor 流行
CCParticleRain 下雨
CCParticleSmoke 下雪
CCParticleSnow 炊烟
CCParticleSpiral 螺旋
CCParticleSun 太阳焰
&感谢大家阅览我的博文,希望也能看到大家留下的脚印...呵呵!
如果讲述得有误,或者不对的地方,还望各位指出!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:720071次
积分:8401
积分:8401
排名:第1422名
原创:132篇
转载:67篇
译文:16篇
评论:250条
文章:31篇
阅读:20045
文章:17篇
阅读:184332
(2)(4)(28)(4)(1)(1)(1)(1)(10)(1)(3)(10)(1)(3)(4)(1)(1)(3)(2)(4)(2)(2)(1)(1)(1)(2)(7)(4)(16)(19)(2)(4)(3)(2)(2)(2)(4)(5)(2)(7)(1)(9)(3)(9)(21)(1)

我要回帖

更多关于 ugui particlesystem 的文章

 

随机推荐