Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages
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 class csVector3; 00027 00028 SCF_VERSION (iEmitGen3D, 0, 0, 1); 00029 SCF_VERSION (iEmitFixed, 0, 0, 1); 00030 SCF_VERSION (iEmitSphere, 0, 0, 1); 00031 SCF_VERSION (iEmitBox, 0, 0, 1); 00032 SCF_VERSION (iEmitCone, 0, 0, 1); 00033 SCF_VERSION (iEmitCylinder, 0, 0, 1); 00034 SCF_VERSION (iEmitMix, 0, 0, 1); 00035 SCF_VERSION (iEmitLine, 0, 0, 1); 00036 SCF_VERSION (iEmitSphereTangent, 0, 0, 1); 00037 SCF_VERSION (iEmitCylinderTangent, 0, 0, 1); 00038 00048 struct iEmitGen3D : public iBase 00049 { 00051 virtual void GetValue(csVector3& value, csVector3 &given) = 0; 00052 }; 00053 00066 struct iEmitFixed : public iEmitGen3D 00067 { 00069 virtual void SetValue(const csVector3& value) = 0; 00070 }; 00071 00084 struct iEmitSphere : public iEmitGen3D 00085 { 00087 virtual void SetContent(const csVector3& center, float min, float max) = 0; 00089 virtual void GetContent(csVector3& center, float& min, float& max) = 0; 00090 }; 00091 00104 struct iEmitBox : public iEmitGen3D 00105 { 00107 virtual void SetContent(const csVector3& min, const csVector3& max) = 0; 00109 virtual void GetContent(csVector3& min, csVector3& max) = 0; 00110 }; 00111 00124 struct iEmitCone : public iEmitGen3D 00125 { 00130 virtual void SetContent(const csVector3& origin, float elevation, 00131 float azimuth, float aperture, float min, float max) = 0; 00133 virtual void GetContent(csVector3& origin, float& elevation, 00134 float& azimuth, float& aperture, float& min, float& max) = 0; 00135 }; 00136 00149 struct iEmitMix : public iEmitGen3D 00150 { 00152 virtual void AddEmitter(float weight, iEmitGen3D* emit) = 0; 00156 virtual void RemoveEmitter(int num) = 0; 00158 virtual float GetTotalWeight() = 0; 00160 virtual int GetEmitterCount() = 0; 00164 virtual void AdjustEmitterWeight(int num,float weight) = 0; 00166 virtual void GetContent(int num, float& weight, iEmitGen3D*& emit) = 0; 00167 }; 00168 00181 struct iEmitLine : public iEmitGen3D 00182 { 00184 virtual void SetContent(const csVector3& start, const csVector3& end) = 0; 00186 virtual void GetContent(csVector3& start, csVector3& end) = 0; 00187 }; 00188 00201 struct iEmitCylinder : public iEmitGen3D 00202 { 00204 virtual void SetContent(const csVector3& start, const csVector3& end, 00205 float min, float max) = 0; 00207 virtual void GetContent(csVector3& start, csVector3& end, 00208 float& min, float& max) = 0; 00209 }; 00210 00224 struct iEmitSphereTangent : public iEmitGen3D 00225 { 00227 virtual void SetContent(const csVector3& center, float min, float max) = 0; 00229 virtual void GetContent(csVector3& center, float& min, float& max) = 0; 00230 }; 00231 00245 struct iEmitCylinderTangent : public iEmitGen3D 00246 { 00248 virtual void SetContent(const csVector3& start, const csVector3& end, 00249 float min, float max) = 0; 00251 virtual void GetContent(csVector3& start, csVector3& end, 00252 float& min, float& max) = 0; 00253 }; 00254 00255 SCF_VERSION (iEmitFactoryState, 0, 0, 2); 00256 00274 struct iEmitFactoryState : public iBase 00275 { 00277 virtual csRef<iEmitFixed> CreateFixed() = 0; 00279 virtual csRef<iEmitBox> CreateBox() = 0; 00281 virtual csRef<iEmitSphere> CreateSphere() = 0; 00283 virtual csRef<iEmitCone> CreateCone() = 0; 00285 virtual csRef<iEmitMix> CreateMix() = 0; 00287 virtual csRef<iEmitLine> CreateLine() = 0; 00289 virtual csRef<iEmitCylinder> CreateCylinder() = 0; 00291 virtual csRef<iEmitSphereTangent> CreateSphereTangent() = 0; 00293 virtual csRef<iEmitCylinderTangent> CreateCylinderTangent() = 0; 00294 }; 00295 00296 SCF_VERSION (iEmitState, 0, 0, 1); 00297 00315 struct iEmitState : public iBase 00316 { 00318 virtual void SetParticleCount (int num) = 0; 00320 virtual int GetParticleCount () const = 0; 00322 virtual void SetLighting (bool l) = 0; 00324 virtual bool GetLighting () const = 0; 00326 virtual void SetParticleTime(int ttl) = 0; 00328 virtual int GetParticleTime() const = 0; 00330 virtual void SetStartPosEmit(iEmitGen3D *emit) = 0; 00332 virtual iEmitGen3D* GetStartPosEmit() const = 0; 00334 virtual void SetStartSpeedEmit(iEmitGen3D *emit) = 0; 00336 virtual iEmitGen3D* GetStartSpeedEmit() const = 0; 00338 virtual void SetStartAccelEmit(iEmitGen3D *emit) = 0; 00340 virtual iEmitGen3D* GetStartAccelEmit() const = 0; 00342 virtual void SetAttractorEmit(iEmitGen3D *emit) = 0; 00344 virtual iEmitGen3D* GetAttractorEmit() const = 0; 00345 00347 virtual void SetAttractorForce(float f) = 0; 00349 virtual float GetAttractorForce() const = 0; 00350 00352 virtual void SetFieldSpeedEmit(iEmitGen3D *emit) = 0; 00354 virtual iEmitGen3D* GetFieldSpeedEmit() const = 0; 00356 virtual void SetFieldAccelEmit(iEmitGen3D *emit) = 0; 00358 virtual iEmitGen3D* GetFieldAccelEmit() const = 0; 00359 00370 virtual void AddAge(int time, const csColor& color, float alpha, 00371 float swirl, float rotspeed, float scale) = 0; 00373 virtual int GetAgingCount() const = 0; 00375 virtual void GetAgingMoment(int i, int& time, csColor& color, float &alpha, 00376 float& swirl, float& rotspeed, float& scale) = 0; 00378 virtual void RemoveAge(int time, const csColor& color, float alpha, 00379 float swirl, float rotspeed, float scale) = 0; 00381 virtual void ReplaceAge(int time, const csColor& color, float alpha, 00382 float swirl, float rotspeed, float scale) = 0; 00383 00385 virtual void SetRectParticles(float w, float h) = 0; 00387 virtual void SetRegularParticles(int n, float radius) = 0; 00389 virtual bool UsingRectParticles() const = 0; 00391 virtual void GetRectParticles(float &w, float &h) const = 0; 00393 virtual void GetRegularParticles(int& n, float& radius) const = 0; 00394 00396 virtual void SetContainerBox(bool enabled, const csVector3& min, 00397 const csVector3& max) = 0; 00404 virtual bool GetContainerBox(csVector3& min, csVector3& max) const = 0; 00405 }; 00406 00407 #endif // __CS_IMESH_EMIT_H__ 00408
Generated for Crystal Space by doxygen 1.4.4