Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | 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 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 00047 struct iEmitGen3D : public iBase 00048 { 00050 virtual void GetValue(csVector3& value, csVector3 &given) = 0; 00051 }; 00052 00065 struct iEmitFixed : public iEmitGen3D 00066 { 00068 virtual void SetValue(const csVector3& value) = 0; 00069 }; 00070 00083 struct iEmitSphere : public iEmitGen3D 00084 { 00086 virtual void SetContent(const csVector3& center, float min, float max) = 0; 00088 virtual void GetContent(csVector3& center, float& min, float& max) = 0; 00089 }; 00090 00103 struct iEmitBox : public iEmitGen3D 00104 { 00106 virtual void SetContent(const csVector3& min, const csVector3& max) = 0; 00108 virtual void GetContent(csVector3& min, csVector3& max) = 0; 00109 }; 00110 00123 struct iEmitCone : public iEmitGen3D 00124 { 00129 virtual void SetContent(const csVector3& origin, float elevation, 00130 float azimuth, float aperture, float min, float max) = 0; 00132 virtual void GetContent(csVector3& origin, float& elevation, 00133 float& azimuth, float& aperture, float& min, float& max) = 0; 00134 }; 00135 00148 struct iEmitMix : public iEmitGen3D 00149 { 00151 virtual void AddEmitter(float weight, iEmitGen3D* emit) = 0; 00155 virtual void RemoveEmitter(int num) = 0; 00157 virtual float GetTotalWeight() = 0; 00159 virtual int GetEmitterCount() = 0; 00163 virtual void AdjustEmitterWeight(int num,float weight) = 0; 00165 virtual void GetContent(int num, float& weight, iEmitGen3D*& emit) = 0; 00166 }; 00167 00180 struct iEmitLine : public iEmitGen3D 00181 { 00183 virtual void SetContent(const csVector3& start, const csVector3& end) = 0; 00185 virtual void GetContent(csVector3& start, csVector3& end) = 0; 00186 }; 00187 00200 struct iEmitCylinder : public iEmitGen3D 00201 { 00203 virtual void SetContent(const csVector3& start, const csVector3& end, 00204 float min, float max) = 0; 00206 virtual void GetContent(csVector3& start, csVector3& end, 00207 float& min, float& max) = 0; 00208 }; 00209 00223 struct iEmitSphereTangent : public iEmitGen3D 00224 { 00226 virtual void SetContent(const csVector3& center, float min, float max) = 0; 00228 virtual void GetContent(csVector3& center, float& min, float& max) = 0; 00229 }; 00230 00244 struct iEmitCylinderTangent : public iEmitGen3D 00245 { 00247 virtual void SetContent(const csVector3& start, const csVector3& end, 00248 float min, float max) = 0; 00250 virtual void GetContent(csVector3& start, csVector3& end, 00251 float& min, float& max) = 0; 00252 }; 00253 00254 SCF_VERSION (iEmitFactoryState, 0, 0, 2); 00255 00273 struct iEmitFactoryState : public iBase 00274 { 00276 virtual csRef<iEmitFixed> CreateFixed() = 0; 00278 virtual csRef<iEmitBox> CreateBox() = 0; 00280 virtual csRef<iEmitSphere> CreateSphere() = 0; 00282 virtual csRef<iEmitCone> CreateCone() = 0; 00284 virtual csRef<iEmitMix> CreateMix() = 0; 00286 virtual csRef<iEmitLine> CreateLine() = 0; 00288 virtual csRef<iEmitCylinder> CreateCylinder() = 0; 00290 virtual csRef<iEmitSphereTangent> CreateSphereTangent() = 0; 00292 virtual csRef<iEmitCylinderTangent> CreateCylinderTangent() = 0; 00293 }; 00294 00295 SCF_VERSION (iEmitState, 0, 0, 1); 00296 00314 struct iEmitState : public iBase 00315 { 00317 virtual void SetParticleCount (int num) = 0; 00319 virtual int GetParticleCount () const = 0; 00321 virtual void SetLighting (bool l) = 0; 00323 virtual bool GetLighting () const = 0; 00325 virtual void SetParticleTime(int ttl) = 0; 00327 virtual int GetParticleTime() const = 0; 00329 virtual void SetStartPosEmit(iEmitGen3D *emit) = 0; 00331 virtual iEmitGen3D* GetStartPosEmit() const = 0; 00333 virtual void SetStartSpeedEmit(iEmitGen3D *emit) = 0; 00335 virtual iEmitGen3D* GetStartSpeedEmit() const = 0; 00337 virtual void SetStartAccelEmit(iEmitGen3D *emit) = 0; 00339 virtual iEmitGen3D* GetStartAccelEmit() const = 0; 00341 virtual void SetAttractorEmit(iEmitGen3D *emit) = 0; 00343 virtual iEmitGen3D* GetAttractorEmit() const = 0; 00344 00346 virtual void SetAttractorForce(float f) = 0; 00348 virtual float GetAttractorForce() const = 0; 00349 00351 virtual void SetFieldSpeedEmit(iEmitGen3D *emit) = 0; 00353 virtual iEmitGen3D* GetFieldSpeedEmit() const = 0; 00355 virtual void SetFieldAccelEmit(iEmitGen3D *emit) = 0; 00357 virtual iEmitGen3D* GetFieldAccelEmit() const = 0; 00358 00369 virtual void AddAge(int time, const csColor& color, float alpha, 00370 float swirl, float rotspeed, float scale) = 0; 00372 virtual int GetAgingCount() const = 0; 00374 virtual void GetAgingMoment(int i, int& time, csColor& color, float &alpha, 00375 float& swirl, float& rotspeed, float& scale) = 0; 00377 virtual void RemoveAge(int time, const csColor& color, float alpha, 00378 float swirl, float rotspeed, float scale) = 0; 00380 virtual void ReplaceAge(int time, const csColor& color, float alpha, 00381 float swirl, float rotspeed, float scale) = 0; 00382 00384 virtual void SetRectParticles(float w, float h) = 0; 00386 virtual void SetRegularParticles(int n, float radius) = 0; 00388 virtual bool UsingRectParticles() const = 0; 00390 virtual void GetRectParticles(float &w, float &h) const = 0; 00392 virtual void GetRegularParticles(int& n, float& radius) const = 0; 00393 00395 virtual void SetContainerBox(bool enabled, const csVector3& min, 00396 const csVector3& max) = 0; 00403 virtual bool GetContainerBox(csVector3& min, csVector3& max) const = 0; 00404 }; 00405 00406 #endif // __CS_IMESH_EMIT_H__ 00407
Generated for Crystal Space by doxygen 1.3.9.1