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