/** * nslExternalAnimation.cpp v2.0 * * Copyright (c) 2011, Fumi.Iseki * */ #include "linden_common.h" #include "llcharacter.h" #include "nslExternalAnimation.h" using namespace nsl; static std::string SLJointName[] = { "mPelvis", "mTorso", "mChest", "mNeck", "mHead", "mCollarLeft", "mShoulderLeft", "mElbowLeft", "mWristLeft", "mCollarRight", "mShoulderRight", "mElbowRight", "mWristRight", "mHipLeft", "mKneeLeft", "mAnkleLeft", "mHipRight", "mKneeRight", "mAnkleRight" }; void ExternalAnimation::init(LLUUID id) { uuid = id; isExternal = FALSE; indexHandle = NULL; ptrIndex = NULL; for (int i=0; i=EXANIM_JOINT_NUM ) return; if (ptrShm[n]==NULL) { if (mapHandle[n]==NULL) { mapHandle[n] = OpenFileMappingA(FILE_MAP_READ, FALSE, SLJointName[n].c_str()); } if (mapHandle[n]!=NULL) { ptrShm[n] = (double*)MapViewOfFile(mapHandle[n], FILE_MAP_READ, 0, 0, EXANIM_DATA_SIZE *EXANIM_CHANNEL_NUM); } } } void ExternalAnimation::CloseShm(void) { CloseIndexShm(); for (int i=0; i=0) isExternal = TRUE; else isExternal = FALSE; } ///////////////////////////////////////////////////////////////////////////////////// // Get Joint Data LLQuaternion ExternalAnimation::GetAnimationRotation(std::string joint_name) { LLQuaternion quat(0.0, 0.0, 0.0, 1.0); char* ptr = NULL; for (int i=0; i