本文整理汇总了C++中Transform::GetLocalRotation方法的典型用法代码示例。如果您正苦于以下问题:C++ Transform::GetLocalRotation方法的具体用法?C++ Transform::GetLocalRotation怎么用?C++ Transform::GetLocalRotation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transform
的用法示例。
在下文中一共展示了Transform::GetLocalRotation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetParent
void GameObject::SetParent(GameObject *newParent, bool keepWorldTransform)
{
if (keepWorldTransform)
Debug_Log("Set parent of " << this << " to " << newParent);
if (m_parent != newParent)
{
if (m_parent)
{
m_parent->m_children.Remove(this);
}
if (keepWorldTransform)
{
// TODO: Not working yet (sometimes scaling breaks)
Matrix4 oldParentToWorld;
parent->transform->GetLocalToWorldMatrix(&oldParentToWorld);
//Debug_Log("LOCAL TO WORLD: " << Transform::FromTransformMatrix(oldParentToWorld));
Matrix4 worldToNewParent;
if (newParent)
{
newParent->transform->GetLocalToWorldMatrix(&worldToNewParent);
worldToNewParent = worldToNewParent.Inversed();
//Debug_Log("WORLD TO NEW PARENT: " << Transform::FromTransformMatrix(worldToNewParent));
}
Matrix4 keepWorldTransformMatrix =
worldToNewParent * oldParentToWorld * transform->GetLocalToParentMatrix();
//Debug_Log("LOCALTOPARENT: " <<
// Quaternion::EulerAngles(
// Transform::GetRotationFromMatrix4(transform->GetLocalToParentMatrix())));
//Debug_Log("KEEPWORLDMATRIX: " << Transform::FromTransformMatrix(keepWorldTransformMatrix));
Transform t = Transform::FromTransformMatrix(keepWorldTransformMatrix);
transform->SetLocalPosition(t.GetLocalPosition());
transform->SetLocalRotation(t.GetLocalRotation());
transform->SetLocalScale (t.GetLocalScale());
}
m_parent = newParent;
if (m_parent)
{
m_parent->m_children.PushBack(this);
}
}
}