x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
BoneVisObj.cpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\GameFactory\BoneVisObj.cpp
Girar
Efecto
Propiedad
Historial
#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
Dirección de la página
Dirección del archivo
Anterior 1/55
Siguiente
Descargar
( 2 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.