x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
BoneVisObj.cpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\GameFactory\BoneVisObj.cpp
旋转
特效
属性
历史版本
#include "BoneVisObj.h" BoneVisObj::BoneVisObj(Node* topParent, Node* node, BoneVisObj* attachedBone): mTopParent(topParent),mAttachedBone(attachedBone),mManualControl(false),VisualObject(node){ } BoneVisObj::~BoneVisObj(){ mTopParent = NULL; //should do nothing here } //#include "GameScene.h" void BoneVisObj::FrameMove(Real elapsedTime){ if (mManualControl){ if (mAttachedBone!=NULL){ //set position if (mNode->getParent()==NULL){//root bone //mWorldPosition = Vec3(0,0,1); Vec3 worldPos = mAttachedBone->mTopParent->getWorldOrientation() * mAttachedBone->mNode->getWorldPosition() +mAttachedBone->mTopParent->getWorldPosition(); mTopParent->setPosition(mTopParent->getParent()->getWorldOrientation().Inverse() * (worldPos-mTopParent->getParent()->getWorldPosition())); //GameScene::GetSingleton()->test->SetPosition(mTopParent->getWorldPosition()); //GameScene::GetSingleton()->test->SetOrientation(mTopParent->getWorldOrientation()); SetPosition(worldPos); } SetOrientation(mAttachedBone->mTopParent->getWorldOrientation()*mAttachedBone->mNode->getWorldOrientation()); } //if (mNode->getName().compare("Bip01 Pelvis")==0){ // GameScene::GetSingleton()->test->SetPosition(GetPosition()); // GameScene::GetSingleton()->test->SetOrientation(GetOrientation()); //} //set position //if (mNode->getName().compare("Bip01 R Forearm")==0){ // GameScene::GetSingleton()->test->SetPosition(mWorldPosition); // GameScene::GetSingleton()->test->SetOrientation(mWorldOrientation); //} if (mNode->getParent()==NULL){//root bone mTopParent->setPosition(mTopParent->getParent()->getWorldOrientation().Inverse() * (mWorldPosition-mTopParent->getParent()->getWorldPosition())); mNode->setPosition(Vec3(0,0,0)); } //set orientation if (mNode->getParent()==NULL){ mNode->setOrientation(mTopParent->getWorldOrientation().Inverse()*mWorldOrientation); }else{ mNode->setOrientation(mNode->getParent()->getWorldOrientation().Inverse()*mTopParent->getWorldOrientation().Inverse()*mWorldOrientation); } }else{ //do nothing } } void BoneVisObj::SetManualControl(bool manualControl){ mManualControl = manualControl; (dynamic_cast
(mNode))->setManuallyControlled(mManualControl); } const Vec3 BoneVisObj::GetPosition() const{ if (mManualControl){ return VisualObject::GetPosition(); }else{ Vec3 worldPos; worldPos = mNode->getWorldPosition(); //Matrix3 rot; //mTopParent->getWorldOrientation().ToRotationMatrix(rot); //worldPos = worldPos * rot; worldPos = mTopParent->getWorldOrientation() * worldPos; worldPos += mTopParent->getWorldPosition(); return worldPos; } } const GFQuat BoneVisObj::GetOrientation() const{ if (mManualControl){ return VisualObject::GetOrientation(); }else{ return mTopParent->getWorldOrientation()*mNode->getWorldOrientation(); } }
BoneVisObj.cpp
网页地址
文件地址
上一页 1/55
下一页
下载
( 2 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.