#pragma once #include "SL/SLJoints.h" #include "Rotation.h" #include "NiToolWin.h" #include "ParameterSet.h" #define NISMEM_CHANNEL_NUM 22 // Local 1 + Network (Oneself 1 + Other 20) #define NISMEM_INDEX_LEN 40 // 36 + 4 #define NISMEM_INDEX_NAME "AnimationIndex" #define NISMEM_DEFAULT_ANIM "f9073e22-6148-ea6f-8906-8378bfe6d44b" using namespace jbxl; class CNiSMemory { public: CNiSMemory(void); ~CNiSMemory(void); public: HANDLE indexHandle; char* ptrAnimIndex; HANDLE mapHandle[SL_MAX_JOINT_NUM]; double* ptrMapData[SL_MAX_JOINT_NUM]; BOOL isCreated; public: CParameterSet appParam; void setParameter(CParameterSet param) { appParam = param;} public: BOOL createSharedMemory(void); void closeSharedMemory (void); void clearSharedMemory (void); void setAnimationIndex(char* uuid, int n=0); void setLocalAnimationIndex(void); void clearLocalAnimationIndex(void); int getNetworkAnimationIndexNum(void); int checkNetworkAnimationIndex(char* uuid); int clearNetworkAnimationIndex(char* uuid); void clearNetworkAnimationIndex(void); void updateLocalAnimationData(Vector* posVect, Quaternion* rotQuat, NiSDK_Lib lib, int joints_num); void clearLocalAnimationData(void); void clearNetworkAnimationData(void); void clearAnimationData(void); // Index + Data void updateNetworkAnimation(char* ptr, char* uuid, int joints, int size); void clearNetworkAnimation(char* uuid); };