CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

imesh/emit.h

00001 /*
00002     Copyright (C) 2000 by Jorrit Tyberghein
00003     Copyright (C) 2001 by W.C.A. Wijngaards
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 */
00019 
00020 #ifndef __CS_IMESH_EMIT_H__
00021 #define __CS_IMESH_EMIT_H__
00022 
00023 #include "csutil/scf.h"
00024 
00025 class csColor;
00026 
00027 SCF_VERSION (iEmitGen3D, 0, 0, 1);
00028 SCF_VERSION (iEmitFixed, 0, 0, 1);
00029 SCF_VERSION (iEmitSphere, 0, 0, 1);
00030 SCF_VERSION (iEmitBox, 0, 0, 1);
00031 SCF_VERSION (iEmitCone, 0, 0, 1);
00032 SCF_VERSION (iEmitCylinder, 0, 0, 1);
00033 SCF_VERSION (iEmitMix, 0, 0, 1);
00034 SCF_VERSION (iEmitLine, 0, 0, 1);
00035 SCF_VERSION (iEmitSphereTangent, 0, 0, 1);
00036 SCF_VERSION (iEmitCylinderTangent, 0, 0, 1);
00037 
00042 struct iEmitGen3D : public iBase
00043 {
00045   virtual void GetValue(csVector3& value, csVector3 &given) = 0;
00046 };
00047 
00049 struct iEmitFixed : public iEmitGen3D
00050 {
00052   virtual void SetValue(const csVector3& value) = 0;
00053 };
00054 
00056 struct iEmitSphere : public iEmitGen3D
00057 {
00059   virtual void SetContent(const csVector3& center, float min, float max) = 0;
00061   virtual void GetContent(csVector3& center, float& min, float& max) = 0;
00062 };
00063 
00065 struct iEmitBox : public iEmitGen3D
00066 {
00068   virtual void SetContent(const csVector3& min, const csVector3& max) = 0;
00070   virtual void GetContent(csVector3& min, csVector3& max) = 0;
00071 };
00072 
00074 struct iEmitCone : public iEmitGen3D
00075 {
00080   virtual void SetContent(const csVector3& origin, float elevation,
00081     float azimuth, float aperture, float min, float max) = 0;
00083   virtual void GetContent(csVector3& origin, float& elevation,
00084     float& azimuth, float& aperture, float& min, float& max) = 0;
00085 };
00086 
00088 struct iEmitMix : public iEmitGen3D
00089 {
00091   virtual void AddEmitter(float weight, iEmitGen3D* emit) = 0;
00095   virtual void RemoveEmitter(int num) = 0;
00097   virtual float GetTotalWeight() = 0;
00099   virtual int GetEmitterCount() = 0;
00103   virtual void AdjustEmitterWeight(int num,float weight) = 0;
00105   virtual void GetContent(int num, float& weight, iEmitGen3D*& emit) = 0;
00106 };
00107 
00109 struct iEmitLine : public iEmitGen3D
00110 {
00112   virtual void SetContent(const csVector3& start, const csVector3& end) = 0;
00114   virtual void GetContent(csVector3& start, csVector3& end) = 0;
00115 };
00116 
00118 struct iEmitCylinder : public iEmitGen3D
00119 {
00121   virtual void SetContent(const csVector3& start, const csVector3& end,
00122     float min, float max) = 0;
00124   virtual void GetContent(csVector3& start, csVector3& end,
00125     float& min, float& max) = 0;
00126 };
00127 
00132 struct iEmitSphereTangent : public iEmitGen3D
00133 {
00135   virtual void SetContent(const csVector3& center, float min, float max) = 0;
00137   virtual void GetContent(csVector3& center, float& min, float& max) = 0;
00138 };
00139 
00144 struct iEmitCylinderTangent : public iEmitGen3D
00145 {
00147   virtual void SetContent(const csVector3& start, const csVector3& end,
00148     float min, float max) = 0;
00150   virtual void GetContent(csVector3& start, csVector3& end,
00151     float& min, float& max) = 0;
00152 };
00153 
00154 SCF_VERSION (iEmitFactoryState, 0, 0, 1);
00155 
00159 struct iEmitFactoryState : public iBase
00160 {
00162   virtual iEmitFixed* CreateFixed() = 0;
00164   virtual iEmitBox* CreateBox() = 0;
00166   virtual iEmitSphere* CreateSphere() = 0;
00168   virtual iEmitCone* CreateCone() = 0;
00170   virtual iEmitMix* CreateMix() = 0;
00172   virtual iEmitLine* CreateLine() = 0;
00174   virtual iEmitCylinder* CreateCylinder() = 0;
00176   virtual iEmitSphereTangent* CreateSphereTangent() = 0;
00178   virtual iEmitCylinderTangent* CreateCylinderTangent() = 0;
00179 
00180 };
00181 
00182 SCF_VERSION (iEmitState, 0, 0, 1);
00183 
00187 struct iEmitState : public iBase
00188 {
00190   virtual void SetParticleCount (int num) = 0;
00192   virtual int GetParticleCount () const = 0;
00194   virtual void SetLighting (bool l) = 0;
00196   virtual bool GetLighting () const = 0;
00198   virtual void SetParticleTime(int ttl) = 0;
00200   virtual int GetParticleTime() const = 0;
00202   virtual void SetStartPosEmit(iEmitGen3D *emit) = 0;
00204   virtual iEmitGen3D* GetStartPosEmit() const = 0;
00206   virtual void SetStartSpeedEmit(iEmitGen3D *emit) = 0;
00208   virtual iEmitGen3D* GetStartSpeedEmit() const = 0;
00210   virtual void SetStartAccelEmit(iEmitGen3D *emit) = 0;
00212   virtual iEmitGen3D* GetStartAccelEmit() const = 0;
00214   virtual void SetAttractorEmit(iEmitGen3D *emit) = 0;
00216   virtual iEmitGen3D* GetAttractorEmit() const = 0;
00217 
00219   virtual void SetAttractorForce(float f) = 0;
00221   virtual float GetAttractorForce() const = 0;
00222 
00224   virtual void SetFieldSpeedEmit(iEmitGen3D *emit) = 0;
00226   virtual iEmitGen3D* GetFieldSpeedEmit() const = 0;
00228   virtual void SetFieldAccelEmit(iEmitGen3D *emit) = 0;
00230   virtual iEmitGen3D* GetFieldAccelEmit() const = 0;
00231 
00242   virtual void AddAge(int time, const csColor& color, float alpha,
00243     float swirl, float rotspeed, float scale) = 0;
00245   virtual int GetAgingCount() const = 0;
00247   virtual void GetAgingMoment(int i, int& time, csColor& color, float &alpha,
00248     float& swirl, float& rotspeed, float& scale) = 0;
00250   virtual void RemoveAge(int time, const csColor& color, float alpha,
00251         float swirl, float rotspeed, float scale) = 0;
00253   virtual void ReplaceAge(int time, const csColor& color, float alpha,
00254     float swirl, float rotspeed, float scale) = 0;
00255 
00257   virtual void SetRectParticles(float w, float h) = 0;
00259   virtual void SetRegularParticles(int n, float radius) = 0;
00261   virtual bool UsingRectParticles() const = 0;
00263   virtual void GetRectParticles(float &w, float &h) const = 0;
00265   virtual void GetRegularParticles(int& n, float& radius) const = 0;
00266 
00268   virtual void SetContainerBox(bool enabled, const csVector3& min, 
00269     const csVector3& max) = 0;
00276   virtual bool GetContainerBox(csVector3& min, csVector3& max) const = 0;
00277 };
00278 
00279 #endif // __CS_IMESH_EMIT_H__
00280 

Generated for Crystal Space by doxygen 1.2.18