BVB Source Codes

CRYENGINE Show AttachmentPRow.h Source code

Return Download CRYENGINE: download AttachmentPRow.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #pragma once
  4.  
  5. #include "AttachmentBase.h"
  6.  
  7. class CAttachmentManager;
  8. class CCharInstance;
  9.  
  10. #define MAX_JOINTS_PER_ROW (100)
  11.  
  12. //dynamic members
  13. struct Particle
  14. {
  15.         Vec2        m_vDistance;
  16.         Vec3        m_vBobPosition; //this is a world-position
  17.         Vec3        m_vBobVelocity;
  18.         Vec3        m_vAttModelRelativePrev;
  19.         QuatT       m_vLocationPrev;   //location from last frame
  20.         JointIdType m_jointID;
  21.         JointIdType m_childID;
  22.  
  23.         Particle()
  24.         {
  25.                 m_jointID = JointIdType(-1);
  26.                 m_childID = JointIdType(-1);
  27.                 m_vDistance.zero();
  28.                 m_vBobPosition.zero();
  29.                 m_vBobVelocity.zero();
  30.                 m_vLocationPrev.SetIdentity();
  31.                 m_vAttModelRelativePrev = Vec3(ZERO);
  32.         };
  33. };
  34.  
  35. struct CPendulaRow : public RowSimulationParams
  36. {
  37.         CPendulaRow()
  38.         {
  39.                 m_nParticlesPerRow = 0;
  40.                 m_nAnimOverrideJoint = -1;
  41.                 m_fMaxAngleCos = DEG2COS(m_fConeAngle);
  42.                 m_fMaxAngleHCos = DEG2HCOS(m_fConeAngle);
  43.                 m_vConeRotHCos.x = clamp_tpl(DEG2HCOS(m_vConeRotation.x), -1.0f, 1.0f);
  44.                 m_vConeRotHCos.y = clamp_tpl(DEG2HCOS(m_vConeRotation.y), -1.0f, 1.0f);
  45.                 m_vConeRotHCos.z = clamp_tpl(DEG2HCOS(m_vConeRotation.z), -1.0f, 1.0f);
  46.                 m_vConeRotHSin.x = clamp_tpl(DEG2HSIN(m_vConeRotation.x), -1.0f, 1.0f);
  47.                 m_vConeRotHSin.y = clamp_tpl(DEG2HSIN(m_vConeRotation.y), -1.0f, 1.0f);
  48.                 m_vConeRotHSin.z = clamp_tpl(DEG2HSIN(m_vConeRotation.z), -1.0f, 1.0f);
  49.                 m_pitchc = 1, m_pitchs = 0, m_rollc = 1, m_rolls = 0;
  50.                 m_fTimeAccumulator = 0;
  51.                 m_idxDirTransJoint = -1;
  52.         };
  53.  
  54.         void PostUpdate(const CAttachmentManager* pAttachmentManager, const char* pJointName);
  55.         void UpdatePendulumRow(const CAttachmentManager* pAttachmentManager, Skeleton::CPoseData& rPoseData, const char* pAttName);
  56.         void Draw(const QuatTS& qt, const ColorB clr, const uint32 tesselation, const Vec3& vdir);
  57.  
  58.         //these members store the optimized parameters
  59.         uint16             m_nParticlesPerRow;
  60.         int16              m_nAnimOverrideJoint;
  61.         f32                m_fMaxAngleCos, m_fMaxAngleHCos; //cosine and half-cosine for the angle
  62.         Vec3               m_vConeRotHCos;
  63.         Vec3               m_vConeRotHSin;
  64.         f32                m_pitchc, m_pitchs, m_rollc, m_rolls; //half-cosines of yaw & pitch
  65.         f32                m_fTimeAccumulator;
  66.         int32              m_idxDirTransJoint;
  67.  
  68.         DynArray<int16>    m_arrProxyIndex;     //the indices to the proxies (atm only lozenges)
  69.         DynArray<Particle> m_arrParticles;
  70. };
  71.  
  72. class CAttachmentPROW : public SAttachmentBase
  73. {
  74. public:
  75.  
  76.         CAttachmentPROW()
  77.         {
  78.                 m_nRowJointID = -1;
  79.         }
  80.  
  81.         virtual ~CAttachmentPROW() {}
  82.  
  83.         virtual void AddRef()
  84.         {
  85.                 ++m_nRefCounter;
  86.         }
  87.  
  88.         virtual void Release()
  89.         {
  90.                 if (--m_nRefCounter == 0)
  91.                         delete this;
  92.         }
  93.  
  94.         virtual uint32               GetType() const { return CA_PROW; }
  95.         virtual uint32               SetJointName(const char* szJointName);
  96.  
  97.         virtual const char*          GetName() const                                                                                    { return m_strSocketName; }
  98.         virtual uint32               GetNameCRC() const                                                                                 { return m_nSocketCRC32; }
  99.         virtual uint32               ReName(const char* strSocketName, uint32 crc)                                                      { m_strSocketName.clear();  m_strSocketName = strSocketName; m_nSocketCRC32 = crc;  return 1; };
  100.  
  101.         virtual uint32               GetFlags() const                                                                                   { return m_AttFlags; }
  102.         virtual void                 SetFlags(uint32 flags)                                                                             { m_AttFlags = flags; }
  103.  
  104.         virtual uint32               Immediate_AddBinding(IAttachmentObject* pModel, ISkin* pISkinRender = 0, uint32 nLoadingFlags = 0) { return 0; }
  105.         virtual void                 Immediate_ClearBinding(uint32 nLoadingFlags = 0)                                                   {};
  106.         virtual uint32               Immediate_SwapBinding(IAttachment* pNewAttachment)                                                 { return 0; }
  107.  
  108.         virtual void                 HideAttachment(uint32 x)                                                                           {}
  109.         virtual uint32               IsAttachmentHidden() const                                                                         { return m_AttFlags & FLAGS_ATTACH_HIDE_MAIN_PASS; }
  110.         virtual void                 HideInRecursion(uint32 x);
  111.         virtual uint32               IsAttachmentHiddenInRecursion() const                                                              { return m_AttFlags & FLAGS_ATTACH_HIDE_RECURSION; }
  112.         virtual void                 HideInShadow(uint32 x);
  113.         virtual uint32               IsAttachmentHiddenInShadow() const                                                                 { return m_AttFlags & FLAGS_ATTACH_HIDE_SHADOW_PASS; }
  114.  
  115.         virtual void                 SetAttAbsoluteDefault(const QuatT& qt)                                                             {};
  116.         virtual void                 SetAttRelativeDefault(const QuatT& qt)                                                             {};
  117.         virtual const QuatT&         GetAttAbsoluteDefault() const                                                                      { return g_IdentityQuatT; };
  118.         virtual const QuatT&         GetAttRelativeDefault() const                                                                      { return g_IdentityQuatT; };
  119.  
  120.         virtual const QuatT&         GetAttModelRelative() const                                                                        { return g_IdentityQuatT;  };//this is relative to the animated bone
  121.         virtual const QuatTS         GetAttWorldAbsolute() const;
  122.         virtual const QuatT&         GetAdditionalTransformation() const                                                                { return g_IdentityQuatT; }
  123.         virtual void                 UpdateAttModelRelative()                                                                           {};
  124.  
  125.         virtual uint32               GetJointID() const                                                                                 { return -1; };
  126.         virtual void                 AlignJointAttachment()                                                                             {};
  127.  
  128.         virtual RowSimulationParams& GetRowParams()                                                                                     { return m_rowparams;   };
  129.         virtual void                 PostUpdateSimulationParams(bool bAttachmentSortingRequired, const char* pJointName = 0);
  130.  
  131.         virtual void                 Serialize(TSerialize ser)                                                          {};
  132.         virtual size_t               SizeOfThis() const                                                                 { return 0; };
  133.         virtual void                 GetMemoryUsage(ICrySizer* pSizer) const                                            {};
  134.         virtual void                 TriggerMeshStreaming(uint32 nDesiredRenderLOD, const SRenderingPassInfo& passInfo) {};
  135.  
  136.         virtual IAttachmentObject*   GetIAttachmentObject() const                                                       { return 0; }
  137.         virtual IAttachmentSkin*     GetIAttachmentSkin()                                                               { return 0; }
  138.  
  139. public:
  140.         void UpdateRow(Skeleton::CPoseData& rPoseData);
  141.         string      m_strRowJointName;
  142.         int32       m_nRowJointID;
  143.         CPendulaRow m_rowparams;
  144. };
  145.  
downloadAttachmentPRow.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