BVB Source Codes

CRYENGINE Show RopeRenderNode.h Source code

Return Download CRYENGINE: download RopeRenderNode.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef _ROPE_RENDERNODE_
  4. #define _ROPE_RENDERNODE_
  5.  
  6. #pragma once
  7.  
  8. #include <CryMath/ISplines.h>
  9. #include <CryPhysics/IDeferredCollisionEvent.h>
  10.  
  11. class CRopeRenderNode : public IRopeRenderNode, public Cry3DEngineBase
  12. {
  13. public:
  14.         static void StaticReset();
  15.  
  16. public:
  17.         //////////////////////////////////////////////////////////////////////////
  18.         // implements IRenderNode
  19.         virtual void             GetLocalBounds(AABB& bbox);
  20.         virtual void             SetMatrix(const Matrix34& mat);
  21.  
  22.         virtual EERType          GetRenderNodeType();
  23.         virtual const char*      GetEntityClassName() const;
  24.         virtual const char*      GetName() const;
  25.         virtual Vec3             GetPos(bool bWorldOnly = true) const;
  26.         virtual void             Render(const SRendParams& rParam, const SRenderingPassInfo& passInfo);
  27.         virtual IPhysicalEntity* GetPhysics() const;
  28.         virtual void             SetPhysics(IPhysicalEntity*);
  29.         virtual void             Physicalize(bool bInstant = false);
  30.         virtual void             Dephysicalize(bool bKeepIfReferenced = false);
  31.         virtual void             SetMaterial(IMaterial* pMat);
  32.         virtual IMaterial*       GetMaterial(Vec3* pHitPos = 0) const;
  33.         virtual IMaterial*       GetMaterialOverride() { return m_pMaterial; }
  34.         virtual float            GetMaxViewDist();
  35.         virtual void             Precache();
  36.         virtual void             GetMemoryUsage(ICrySizer* pSizer) const;
  37.         virtual void             LinkEndPoints();
  38.         virtual const AABB       GetBBox() const             { return m_WSBBox; }
  39.         virtual void             SetBBox(const AABB& WSBBox) { m_WSBBox = WSBBox; m_bNeedToReRegister = true; }
  40.         virtual void             FillBBox(AABB& aabb);
  41.         virtual void             OffsetPosition(const Vec3& delta);
  42.  
  43.         virtual void             SetEntityOwner(uint32 nEntityId) { m_nEntityOwnerId = nEntityId; }
  44.         virtual uint32           GetEntityOwner() const           { return m_nEntityOwnerId; }
  45.         //////////////////////////////////////////////////////////////////////////
  46.  
  47.         //////////////////////////////////////////////////////////////////////////
  48.         // IRopeRenderNode implementation
  49.         //////////////////////////////////////////////////////////////////////////
  50.         virtual void                                SetName(const char* sNodeName);
  51.         virtual void                                SetParams(const SRopeParams& params);
  52.         virtual const IRopeRenderNode::SRopeParams& GetParams() const;
  53.  
  54.         virtual void                                SetPoints(const Vec3* pPoints, int nCount);
  55.         virtual int                                 GetPointsCount() const;
  56.         virtual const Vec3*                         GetPoints() const;
  57.  
  58.         virtual uint32                              GetLinkedEndsMask() { return m_nLinkedEndsMask; };
  59.         virtual void                                OnPhysicsPostStep();
  60.  
  61.         virtual void                                ResetPoints();
  62.  
  63.         virtual void                                LinkEndEntities(IPhysicalEntity* pStartEntity, IPhysicalEntity* pEndEntity);
  64.         virtual void                                GetEndPointLinks(SEndPointLink* links);
  65.  
  66.         // Sound related
  67.         virtual void SetRopeSound(char const* const pcSoundName, int unsigned const nSegmentToAttachTo, float const fOffset);
  68.         virtual void StopRopeSound();
  69.         virtual void ResetRopeSound();
  70.         //////////////////////////////////////////////////////////////////////////
  71.  
  72. public:
  73.         CRopeRenderNode();
  74.  
  75.         void CreateRenderMesh();
  76.         void UpdateRenderMesh();
  77.         void AnchorEndPoints(pe_params_rope& pr);
  78.         void SyncWithPhysicalRope(bool bForce);
  79.         bool RenderDebugInfo(const SRendParams& rParams, const SRenderingPassInfo& passInfo);
  80.  
  81. private:
  82.         ~CRopeRenderNode();
  83.  
  84. private:
  85.         string                  m_sName;
  86.         uint32                  m_nEntityOwnerId;
  87.         Vec3                    m_pos;
  88.         AABB                    m_localBounds;
  89.         Matrix34                m_worldTM;
  90.         Matrix34                m_InvWorldTM;
  91.         _smart_ptr<IMaterial>   m_pMaterial;
  92.         _smart_ptr<IRenderMesh> m_pRenderMesh;
  93.         IPhysicalEntity*        m_pPhysicalEntity;
  94.  
  95.         uint32                  m_nLinkedEndsMask;
  96.  
  97.         // Flags
  98.         uint32            m_bModified                 : 1;
  99.         uint32            m_bRopeCreatedInsideVisArea : 1;
  100.         uint32            m_bNeedToReRegister         : 1;
  101.         uint32            m_bStaticPhysics            : 1;
  102.  
  103.         std::vector<Vec3> m_points;
  104.         std::vector<Vec3> m_physicsPoints;
  105.  
  106.         SRopeParams       m_params;
  107.  
  108.         typedef spline::CatmullRomSpline<Vec3> SplineType;
  109.         SplineType m_spline;
  110.  
  111.         AABB       m_WSBBox;
  112.  
  113.         // Sound related
  114.         void UpdateSound();
  115.  
  116.         struct SRopeSoundData
  117.         {
  118.                 SRopeSoundData()
  119.                         : //nSoundID(INVALID_SOUNDID), //DEPREC: [RopeRenderNode.h]
  120.                         nSegementToAttachTo(1),
  121.                         fOffset(0.0f){}
  122.                 //tSoundID nSoundID;  //DEPREC: [RopeRenderNode.h]
  123.                 int   nSegementToAttachTo;
  124.                 float fOffset;
  125.         } m_ropeSoundData;
  126. };
  127.  
  128. #endif // _ROPE_RENDERNODE_
  129.  
downloadRopeRenderNode.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top