mirror of
https://github.com/ENSL/NS.git
synced 2024-11-14 17:01:29 +00:00
204 lines
5.5 KiB
C
204 lines
5.5 KiB
C
#ifndef AVH_PARTICLE_TEMPLATE_H
|
|
#define AVH_PARTICLE_TEMPLATE_H
|
|
|
|
//
|
|
// Describes a type of particle system
|
|
// Exists both on client and server
|
|
// Reads and writes from network stream
|
|
// A list of these are created on the server after parsing modname.ps and mapname.ps
|
|
// They are sent to the client on connect (they don't change during the game)
|
|
// Order of list is identical on both client and server
|
|
// Data and networking only, no particle behavior
|
|
//
|
|
#include "types.h"
|
|
//#include "utils/common/mathlib.h"
|
|
|
|
class AvHParticleTemplateList;
|
|
|
|
// Data only, no behavior
|
|
typedef enum
|
|
{
|
|
PS_Point = 0, // Single point
|
|
PS_Line = 1, // Line segment
|
|
PS_Triangle = 2, // Triangle
|
|
PS_Plane = 3, // Arbitrarily-oriented plane
|
|
PS_Box = 4, // Axis-aligned box
|
|
PS_Sphere = 5, // Sphere
|
|
PS_Cylinder = 6, // Cylinder
|
|
PS_Cone = 7, // Cone
|
|
PS_Blob = 8, // Gaussian blob
|
|
PS_Disc = 9, // Arbitrarily-oriented disc
|
|
PS_Rectangle = 10, // Rhombus-shaped planar region
|
|
PS_None = 11
|
|
} ParticleShape;
|
|
|
|
typedef char ShapeType;
|
|
typedef int32 ParticleParams[8];
|
|
typedef float PSVector[3];
|
|
|
|
class AvHParticleTemplate
|
|
{
|
|
public:
|
|
AvHParticleTemplate();
|
|
//AvHParticleTemplate(const AvHParticleTemplate& inTemplate);
|
|
|
|
const string& GetName() const;
|
|
void SetName(const string& inName);
|
|
|
|
uint32 GetMaxParticles() const;
|
|
void SetMaxParticles(uint32 inMaxParticles);
|
|
|
|
float GetParticleSize() const;
|
|
void SetParticleSize(float inSize);
|
|
|
|
float GetParticleSystemLifetime() const;
|
|
void SetParticleSystemLifetime(float inNewLifetime);
|
|
|
|
float GetParticleLifetime() const;
|
|
void SetParticleLifetime(float inNewLifetime);
|
|
|
|
string GetSprite() const;
|
|
void SetSprite(string inSpriteName); //@2014
|
|
|
|
ShapeType GetGenerationShape() const;
|
|
void SetGenerationShape(ShapeType inShape);
|
|
|
|
string GetGenerationEntityName() const;
|
|
void SetGenerationEntityName(const string& inName);
|
|
|
|
string GetParticleSystemToGenerate() const;
|
|
void SetParticleSystemToGenerate(const string& inName);
|
|
|
|
int GetParticleSystemIndexToGenerate() const;
|
|
void SetParticleSystemIndexToGenerate(int inIndex);
|
|
|
|
int GetGenerationEntityIndex() const;
|
|
void SetGenerationEntityIndex(int inIndex);
|
|
|
|
const float GetGenerationEntityParameter() const;
|
|
void SetGenerationEntityParameter(float inEntityParameter);
|
|
|
|
ShapeType GetStartingVelocityShape() const;
|
|
void SetStartingVelocityShape(ShapeType inShape);
|
|
|
|
void GetGenerationParams(ParticleParams& outParams) const;
|
|
void SetGenerationParams(const ParticleParams& inParms);
|
|
|
|
void GetStartingVelocityParams(ParticleParams& outParams) const;
|
|
void SetStartingVelocityParams(const ParticleParams& inParms);
|
|
|
|
//int GetInitialParticles() const;
|
|
//void SetInitialParticles(int inInitialParticles);
|
|
|
|
uint32 GetGenerationRate() const;
|
|
void SetGenerationRate(uint32 inGenRate);
|
|
|
|
bool GetFadeIn() const;
|
|
bool GetFadeOut() const;
|
|
bool GetUseDensity() const;
|
|
bool GetUseWorldGravity() const;
|
|
bool GetUseTrisNotQuads() const;
|
|
bool GetMinimizeEdges() const;
|
|
bool GetConstrainPitch() const;
|
|
bool GetCollide() const;
|
|
bool GetHighDetailOnly() const;
|
|
bool GetFaceUp() const;
|
|
|
|
int GetFlags() const;
|
|
void SetFlags(int inFlags);
|
|
|
|
void GetGravity(PSVector& outGravity) const;
|
|
void SetGravity(const PSVector& inGravity);
|
|
|
|
float GetAnimationSpeed() const;
|
|
void SetAnimationSpeed(float inSpeed);
|
|
|
|
int GetNumSpriteFrames(void) const;
|
|
void SetNumSpriteFrames(int inFrames);
|
|
|
|
float GetParticleScaling() const;
|
|
void SetParticleScaling(float inScaling);
|
|
|
|
int GetRenderMode(void) const;
|
|
void SetRenderMode(int inRenderMode);
|
|
|
|
float GetMaxAlpha() const;
|
|
void SetMaxAlpha(float inMaxAlpha);
|
|
|
|
virtual bool operator==(const AvHParticleTemplate& other) const;
|
|
virtual void operator=(const AvHParticleTemplate& other);
|
|
private:
|
|
string mName;
|
|
|
|
uint32 mMaxParticles;
|
|
|
|
PSVector mBaseColor;
|
|
|
|
string mSprite;
|
|
|
|
float mParticleSize;
|
|
|
|
float mParticleSystemLifetime;
|
|
|
|
float mParticleLifetime;
|
|
|
|
PSVector mGravity;
|
|
|
|
uint32 mGenerationRate;
|
|
|
|
ShapeType mGenerationShape;
|
|
ParticleParams mGenerationParams;
|
|
int mGenerationEntityIndex;
|
|
float mGenerationEntityParameter;
|
|
string mGenerationEntityName;
|
|
|
|
ShapeType mStartingVelocityShape;
|
|
ParticleParams mStartingVelocityParams;
|
|
|
|
ShapeType mDeathShape;
|
|
ParticleParams mDeathParams;
|
|
|
|
ShapeType mCollisionShape;
|
|
ParticleParams mCollisionParams;
|
|
|
|
float mMinSpeed;
|
|
float mMaxSpeed;
|
|
|
|
int mNumSpriteFrames;
|
|
float mAnimationSpeed;
|
|
float mParticleScaling;
|
|
int mRenderMode;
|
|
float mMaxAlpha;
|
|
|
|
//int mInitialParticles;
|
|
bool mFadeIn;
|
|
int mFlags;
|
|
string mParticleSystemToGenerate;
|
|
int mParticleSystemIndexToGenerate;
|
|
};
|
|
|
|
// the template list creates all templates
|
|
class AvHParticleTemplateList
|
|
{
|
|
public:
|
|
AvHParticleTemplateList();
|
|
|
|
virtual void Clear();
|
|
|
|
int CreateTemplateFromIndex(int inBaseIndex = -1);
|
|
|
|
AvHParticleTemplate* GetTemplateAtIndex(uint32 inIndex);
|
|
|
|
const AvHParticleTemplate* GetTemplateAtIndex(uint32 inIndex) const;
|
|
|
|
bool GetTemplateIndexWithName(const string& inName, uint32& outIndex) const;
|
|
|
|
uint32 GetNumberTemplates() const;
|
|
|
|
protected:
|
|
|
|
typedef map<int, AvHParticleTemplate> ParticleTemplateListType;
|
|
ParticleTemplateListType mTemplateList;
|
|
};
|
|
|
|
#endif
|