File SkeletonSetupManager.hpp
File List > api > cppSDK > SDKBase > SkeletonSetupManager.hpp
Go to the documentation of this file
#ifndef __SKELETONSETUPMANAGER_SDK_HPP__
#define __SKELETONSETUPMANAGER_SDK_HPP__
struct Vertex;
struct Triangle;
struct SkeletonSetupInfo;
struct NodeSetup;
struct ChainSetup;
struct SkeletonSetupArraySizes;
struct MeshSetupInfo;
struct ColliderSetup;
namespace ManusSDK
{
class SkeletonSetup;
class SkeletonSetupManager
{
public:
~SkeletonSetupManager();
// Skeletons
SDKReturnCode CreateSkeletonSetup(const SkeletonSetupInfo& p_Skeleton, uint32_t& p_SkeletonSetupIndex);
SDKReturnCode AddNodeToSkeletonSetup(uint32_t p_SkeletonSetupIndex, const NodeSetup& p_Node);
SDKReturnCode OverwriteSkeletonSetup(uint32_t p_SkeletonSetupIndex, const SkeletonSetupInfo& p_Skeleton);
SDKReturnCode OverwriteChainToSkeletonSetup(uint32_t p_SkeletonSetupIndex, const ChainSetup& p_Chain);
SDKReturnCode OverwriteNodeToSkeletonSetup(uint32_t p_SkeletonSetupIndex, const NodeSetup& p_Node);
SDKReturnCode AddChainToSkeletonSetup(uint32_t p_SkeletonSetupIndex, const ChainSetup& p_Chain);
SDKReturnCode AddColliderToSkeletonSetup(uint32_t p_SkeletonSetupIndex, const ColliderSetup& p_Collider);
SDKReturnCode AddMeshSetupToSkeletonSetup(uint32_t p_SkeletonSetupIndex, uint32_t p_NodeId, uint32_t& p_MeshSetupIndex);
SDKReturnCode AddVertexToMeshSetup(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, const Vertex& p_Vertex);
SDKReturnCode AddTriangleToMeshSetup(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, const Triangle& p_Triangle);
SDKReturnCode GetMeshSetupInfo(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, MeshSetupInfo& p_MeshSetupInfo);
SDKReturnCode GetVertexData(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, uint32_t p_VertexIndex, Vertex& p_Vertex);
SDKReturnCode GetTriangleData(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, uint32_t p_TriangleIndex, Triangle& p_Triangle);
SkeletonSetup* GetSkeletonSetup(uint32_t p_SkeletonSetupIndex);
void ClearSkeletonSetup(uint32_t p_SkeletonSetupIndex);
void InsertSkeletonSetup(uint32_t p_SkeletonSetupIndex, SkeletonSetup* p_LocalSkl);
void ClearAllTemporarySkeletonsFromBuffer();
SDKReturnCode GetSkeletonSetupInfo(uint32_t p_SkeletonSetupIndex, SkeletonSetupInfo* p_SDK);
SDKReturnCode GetSkeletonSetupArraySizes(uint32_t p_SkeletonSetupIndex, SkeletonSetupArraySizes& p_SkeletonInfo);
SDKReturnCode GetSkeletonChains(uint32_t p_SkeletonSetupIndex, ChainSetup* p_SDK);
SDKReturnCode GetSkeletonChains(uint32_t p_SkeletonSetupIndex, ChainSetup* p_ChainSetupArray, uint32_t p_ArraySize);
SDKReturnCode GetSkeletonNodes(uint32_t p_SkeletonSetupIndex, NodeSetup* p_SDK);
SDKReturnCode GetSkeletonNodes(uint32_t p_SkeletonSetupIndex, NodeSetup* p_NodeSetupArray, uint32_t p_ArraySize);
SDKReturnCode GetSkeletonColliders(uint32_t p_SkeletonSetupIndex, ColliderSetup* p_SDK);
std::mutex& GetSkeletonSetupMutex();
size_t GetSkeletonSetupBufferSize();
protected:
// Skeleton chains.
std::mutex m_SkeletonSetupMutex;
void IfEmptyClearSkeletonSetupBuffer();
std::vector<SkeletonSetup*> m_SkeletonSetupBuffer;
std::atomic<bool> m_IsRunning = false;
};
}
#endif