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 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, 1); 00255 00273 struct iEmitFactoryState : public iBase 00274 { 00276 virtual iEmitFixed* CreateFixed() = 0; 00278 virtual iEmitBox* CreateBox() = 0; 00280 virtual iEmitSphere* CreateSphere() = 0; 00282 virtual iEmitCone* CreateCone() = 0; 00284 virtual iEmitMix* CreateMix() = 0; 00286 virtual iEmitLine* CreateLine() = 0; 00288 virtual iEmitCylinder* CreateCylinder() = 0; 00290 virtual iEmitSphereTangent* CreateSphereTangent() = 0; 00292 virtual iEmitCylinderTangent* CreateCylinderTangent() = 0; 00293 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.2.18