CrystalSpace

Public API Reference

imesh/emit.h

Go to the documentation of this file.
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 
00027 #include "csutil/scf.h"
00028 
00029 class csColor;
00030 class csVector3;
00031 
00032 SCF_VERSION (iEmitGen3D, 0, 0, 1);
00033 SCF_VERSION (iEmitFixed, 0, 0, 1);
00034 SCF_VERSION (iEmitSphere, 0, 0, 1);
00035 SCF_VERSION (iEmitBox, 0, 0, 1);
00036 SCF_VERSION (iEmitCone, 0, 0, 1);
00037 SCF_VERSION (iEmitCylinder, 0, 0, 1);
00038 SCF_VERSION (iEmitMix, 0, 0, 1);
00039 SCF_VERSION (iEmitLine, 0, 0, 1);
00040 SCF_VERSION (iEmitSphereTangent, 0, 0, 1);
00041 SCF_VERSION (iEmitCylinderTangent, 0, 0, 1);
00042 
00050 struct iEmitGen3D : public iBase
00051 {
00053   virtual void GetValue(csVector3& value, csVector3 &given) = 0;
00054 };
00055 
00065 struct iEmitFixed : public iEmitGen3D
00066 {
00068   virtual void SetValue(const csVector3& value) = 0;
00069 };
00070 
00080 struct iEmitSphere : public iEmitGen3D
00081 {
00083   virtual void SetContent(const csVector3& center, float min, float max) = 0;
00085   virtual void GetContent(csVector3& center, float& min, float& max) = 0;
00086 };
00087 
00097 struct iEmitBox : public iEmitGen3D
00098 {
00100   virtual void SetContent(const csVector3& min, const csVector3& max) = 0;
00102   virtual void GetContent(csVector3& min, csVector3& max) = 0;
00103 };
00104 
00114 struct iEmitCone : public iEmitGen3D
00115 {
00120   virtual void SetContent(const csVector3& origin, float elevation,
00121     float azimuth, float aperture, float min, float max) = 0;
00123   virtual void GetContent(csVector3& origin, float& elevation,
00124     float& azimuth, float& aperture, float& min, float& max) = 0;
00125 };
00126 
00136 struct iEmitMix : public iEmitGen3D
00137 {
00139   virtual void AddEmitter(float weight, iEmitGen3D* emit) = 0;
00145   virtual void RemoveEmitter(int num) = 0;
00147   virtual float GetTotalWeight() = 0;
00149   virtual int GetEmitterCount() = 0;
00155   virtual void AdjustEmitterWeight(int num,float weight) = 0;
00157   virtual void GetContent(int num, float& weight, iEmitGen3D*& emit) = 0;
00158 };
00159 
00169 struct iEmitLine : public iEmitGen3D
00170 {
00172   virtual void SetContent(const csVector3& start, const csVector3& end) = 0;
00174   virtual void GetContent(csVector3& start, csVector3& end) = 0;
00175 };
00176 
00186 struct iEmitCylinder : public iEmitGen3D
00187 {
00189   virtual void SetContent(const csVector3& start, const csVector3& end,
00190     float min, float max) = 0;
00192   virtual void GetContent(csVector3& start, csVector3& end,
00193     float& min, float& max) = 0;
00194 };
00195 
00206 struct iEmitSphereTangent : public iEmitGen3D
00207 {
00209   virtual void SetContent(const csVector3& center, float min, float max) = 0;
00211   virtual void GetContent(csVector3& center, float& min, float& max) = 0;
00212 };
00213 
00224 struct iEmitCylinderTangent : public iEmitGen3D
00225 {
00227   virtual void SetContent(const csVector3& start, const csVector3& end,
00228     float min, float max) = 0;
00230   virtual void GetContent(csVector3& start, csVector3& end,
00231     float& min, float& max) = 0;
00232 };
00233 
00234 SCF_VERSION (iEmitFactoryState, 0, 0, 2);
00235 
00249 struct iEmitFactoryState : public iBase
00250 {
00252   virtual csRef<iEmitFixed> CreateFixed() = 0;
00254   virtual csRef<iEmitBox> CreateBox() = 0;
00256   virtual csRef<iEmitSphere> CreateSphere() = 0;
00258   virtual csRef<iEmitCone> CreateCone() = 0;
00260   virtual csRef<iEmitMix> CreateMix() = 0;
00262   virtual csRef<iEmitLine> CreateLine() = 0;
00264   virtual csRef<iEmitCylinder> CreateCylinder() = 0;
00266   virtual csRef<iEmitSphereTangent> CreateSphereTangent() = 0;
00268   virtual csRef<iEmitCylinderTangent> CreateCylinderTangent() = 0;
00269 };
00270 
00271 SCF_VERSION (iEmitState, 0, 0, 1);
00272 
00286 struct iEmitState : public iBase
00287 {
00289   virtual void SetParticleCount (int num) = 0;
00291   virtual int GetParticleCount () const = 0;
00293   virtual void SetLighting (bool l) = 0;
00295   virtual bool GetLighting () const = 0;
00297   virtual void SetParticleTime(int ttl) = 0;
00299   virtual int GetParticleTime() const = 0;
00301   virtual void SetStartPosEmit(iEmitGen3D *emit) = 0;
00303   virtual iEmitGen3D* GetStartPosEmit() const = 0;
00305   virtual void SetStartSpeedEmit(iEmitGen3D *emit) = 0;
00307   virtual iEmitGen3D* GetStartSpeedEmit() const = 0;
00309   virtual void SetStartAccelEmit(iEmitGen3D *emit) = 0;
00311   virtual iEmitGen3D* GetStartAccelEmit() const = 0;
00313   virtual void SetAttractorEmit(iEmitGen3D *emit) = 0;
00315   virtual iEmitGen3D* GetAttractorEmit() const = 0;
00316 
00318   virtual void SetAttractorForce(float f) = 0;
00320   virtual float GetAttractorForce() const = 0;
00321 
00323   virtual void SetFieldSpeedEmit(iEmitGen3D *emit) = 0;
00325   virtual iEmitGen3D* GetFieldSpeedEmit() const = 0;
00327   virtual void SetFieldAccelEmit(iEmitGen3D *emit) = 0;
00329   virtual iEmitGen3D* GetFieldAccelEmit() const = 0;
00330 
00341   virtual void AddAge(int time, const csColor& color, float alpha,
00342     float swirl, float rotspeed, float scale) = 0;
00344   virtual int GetAgingCount() const = 0;
00346   virtual void GetAgingMoment(int i, int& time, csColor& color, float &alpha,
00347     float& swirl, float& rotspeed, float& scale) = 0;
00349   virtual void RemoveAge(int time, const csColor& color, float alpha,
00350         float swirl, float rotspeed, float scale) = 0;
00352   virtual void ReplaceAge(int time, const csColor& color, float alpha,
00353     float swirl, float rotspeed, float scale) = 0;
00354 
00356   virtual void SetRectParticles(float w, float h) = 0;
00358   virtual void SetRegularParticles(int n, float radius) = 0;
00360   virtual bool UsingRectParticles() const = 0;
00362   virtual void GetRectParticles(float &w, float &h) const = 0;
00364   virtual void GetRegularParticles(int& n, float& radius) const = 0;
00365 
00367   virtual void SetContainerBox(bool enabled, const csVector3& min, 
00368     const csVector3& max) = 0;
00375   virtual bool GetContainerBox(csVector3& min, csVector3& max) const = 0;
00376 };
00377 
00380 #endif // __CS_IMESH_EMIT_H__
00381 

Generated for Crystal Space by doxygen 1.4.6