From 703f03f31622b357b0951d5a631a987cb888aa25 Mon Sep 17 00:00:00 2001 From: Piotr Dziwinski Date: Wed, 3 Oct 2012 00:30:17 +0200 Subject: CPyro rewrite --- src/graphics/engine/pyro.h | 105 ++++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 49 deletions(-) (limited to 'src/graphics/engine/pyro.h') diff --git a/src/graphics/engine/pyro.h b/src/graphics/engine/pyro.h index d91b049..916cae2 100644 --- a/src/graphics/engine/pyro.h +++ b/src/graphics/engine/pyro.h @@ -33,10 +33,13 @@ class CInstanceManager; class CObject; -class CDisplayText; class CRobotMain; class CSoundInterface; +namespace Ui { +class CDisplayText; +} + // Graphics module namespace namespace Gfx { @@ -48,33 +51,37 @@ class CParticle; class CLight; +/** + * \enum PyroType + * \brief Type of pyro effect + */ enum PyroType { PT_NULL = 0, - PT_FRAGT = 1, // fragmentation of technical object - PT_FRAGO = 2, // fragmentation of organic object - PT_FRAGW = 4, // fragmentation of object under water - PT_EXPLOT = 5, // explosion of technical object - PT_EXPLOO = 6, // explosion of organic object - PT_EXPLOW = 8, // explosion of object under water - PT_SHOTT = 9, // hit technical object - PT_SHOTH = 10, // hit human - PT_SHOTM = 11, // hit queen - PT_SHOTW = 12, // hit under water - PT_EGG = 13, // break the egg - PT_BURNT = 14, // burning of technical object - PT_BURNO = 15, // burning of organic object - PT_SPIDER = 16, // spider explosion - PT_FALL = 17, // cargo falling - PT_WPCHECK = 18, // indicator reaches - PT_FLCREATE = 19, // flag create - PT_FLDELETE = 20, // flag destroy - PT_RESET = 21, // reset position of the object - PT_WIN = 22, // fireworks - PT_LOST = 23, // black smoke - PT_DEADG = 24, // shooting death - PT_DEADW = 25, // drowning death - PT_FINDING = 26, // object discovered + PT_FRAGT = 1, //! < fragmentation of technical object + PT_FRAGO = 2, //! < fragmentation of organic object + PT_FRAGW = 4, //! < fragmentation of object under water + PT_EXPLOT = 5, //! < explosion of technical object + PT_EXPLOO = 6, //! < explosion of organic object + PT_EXPLOW = 8, //! < explosion of object under water + PT_SHOTT = 9, //! < hit technical object + PT_SHOTH = 10, //! < hit human + PT_SHOTM = 11, //! < hit queen + PT_SHOTW = 12, //! < hit under water + PT_EGG = 13, //! < break the egg + PT_BURNT = 14, //! < burning of technical object + PT_BURNO = 15, //! < burning of organic object + PT_SPIDER = 16, //! < spider explosion + PT_FALL = 17, //! < cargo falling + PT_WPCHECK = 18, //! < indicator reaches + PT_FLCREATE = 19, //! < flag create + PT_FLDELETE = 20, //! < flag destroy + PT_RESET = 21, //! < reset position of the object + PT_WIN = 22, //! < fireworks + PT_LOST = 23, //! < black smoke + PT_DEADG = 24, //! < shooting death + PT_DEADW = 25, //! < drowning death + PT_FINDING = 26, //! < object discovered }; @@ -89,8 +96,8 @@ struct PyroBurnPart struct PyroLightOper { - float progress; - float intensity; + float progress; + float intensity; Color color; }; @@ -107,18 +114,18 @@ public: CPyro(CInstanceManager* iMan); ~CPyro(); - void DeleteObject(bool all=false); - bool Create(PyroType type, CObject* pObj, float force=1.0f); - bool EventProcess(const Event &event); + void DeleteObject(); + bool Create(PyroType type, CObject* obj, float force=1.0f); + bool EventProcess(const Event& event); Error IsEnded(); - void CutObjectLink(CObject* pObj); + void CutObjectLink(CObject* obj); protected: - void DisplayError(PyroType type, CObject* pObj); - bool CreateLight(Math::Vector pos, float height); + void DisplayError(PyroType type, CObject* obj); + void CreateLight(Math::Vector pos, float height); void DeleteObject(bool primary, bool secondary); - void CreateTriangle(CObject* pObj, ObjectType oType, int part); + void CreateTriangle(CObject* obj, ObjectType type, int part); void ExploStart(); void ExploTerminate(); @@ -139,38 +146,38 @@ protected: void LightOperFrame(float rTime); protected: - CInstanceManager* m_iMan; - CEngine* m_engine; - CTerrain* m_terrain; - CCamera* m_camera; - CParticle* m_particule; - CLightManager* m_lightMan; - CObject* m_object; - CDisplayText* m_displayText; - CRobotMain* m_main; - CSoundInterface* m_sound; + CInstanceManager* m_iMan; + CEngine* m_engine; + CTerrain* m_terrain; + CCamera* m_camera; + CParticle* m_particle; + CLightManager* m_lightMan; + CObject* m_object; + Ui::CDisplayText* m_displayText; + CRobotMain* m_main; + CSoundInterface* m_sound; Math::Vector m_pos; // center of the effect Math::Vector m_posPower; // center of the battery bool m_power; // battery exists? - PyroType m_type; + PyroType m_type; float m_force; float m_size; float m_progress; float m_speed; float m_time; - float m_lastParticule; - float m_lastParticuleSmoke; + float m_lastParticle; + float m_lastParticleSmoke; int m_soundChannel; int m_lightRank; int m_lightOperTotal; - PyroLightOper m_lightOper[10]; + PyroLightOper m_lightOper[10]; float m_lightHeight; ObjectType m_burnType; int m_burnPartTotal; - PyroBurnPart m_burnPart[10]; + PyroBurnPart m_burnPart[10]; int m_burnKeepPart[10]; float m_burnFall; -- cgit v1.2.3-1-g7c22 From ff99b74b25c34b721f507da18b0b6d26a41b670a Mon Sep 17 00:00:00 2001 From: Piotr Dziwinski Date: Fri, 5 Oct 2012 18:59:03 +0200 Subject: Some CPyro docs --- src/graphics/engine/pyro.h | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/graphics/engine/pyro.h') diff --git a/src/graphics/engine/pyro.h b/src/graphics/engine/pyro.h index 916cae2..0204070 100644 --- a/src/graphics/engine/pyro.h +++ b/src/graphics/engine/pyro.h @@ -106,7 +106,7 @@ struct PyroLightOper * \class CPyro * \brief Fire effect renderer * - * Functions are only stubs for now. + * TODO: documentation */ class CPyro { @@ -114,35 +114,63 @@ public: CPyro(CInstanceManager* iMan); ~CPyro(); - void DeleteObject(); + //! Creates pyrotechnic effect bool Create(PyroType type, CObject* obj, float force=1.0f); - bool EventProcess(const Event& event); + //! Destroys the object + void DeleteObject(); + + //! Indicates whether the pyrotechnic effect is complete Error IsEnded(); + + //! Indicates that the object binds to the effect no longer exists, without deleting it void CutObjectLink(CObject* obj); + //! Management of an event + bool EventProcess(const Event& event); + protected: + //! Displays the error or eventual information + //! Information can be linked to the destruction of an insect, a vehicle or building void DisplayError(PyroType type, CObject* obj); + + //! Creates light to accompany a pyrotechnic effect void CreateLight(Math::Vector pos, float height); + //! Removes the binding to a pyrotechnic effect void DeleteObject(bool primary, bool secondary); + //! Creates an explosion with triangular form of particles void CreateTriangle(CObject* obj, ObjectType type, int part); + //! Starts the explosion of a vehicle void ExploStart(); + //! Ends the explosion of a vehicle void ExploTerminate(); + //! Starts a vehicle fire void BurnStart(); + //! Adds a part move void BurnAddPart(int part, Math::Vector pos, Math::Vector angle); + //! Advances of a vehicle fire void BurnProgress(); + //! Indicates whether a part should be retained bool BurnIsKeepPart(int part); + //! Ends the fire of an insect or a vehicle void BurnTerminate(); + //! Start of an object freight falling void FallStart(); + //! Seeks an object to explode by the falling ball of bees CObject* FallSearchBeeExplo(); + //! Fall of an object's freight void FallProgress(float rTime); + //! Indicates whether the fall is over Error FallIsEnded(); + //! Empty the table of operations of animation of light void LightOperFlush(); + //! Adds an animation operation of the light void LightOperAdd(float progress, float intensity, float r, float g, float b); + //! Updates the associated light void LightOperFrame(float rTime); protected: -- cgit v1.2.3-1-g7c22