From 865c8d97a311b616534bacc3da488c5a48b29908 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 3 Dec 2012 23:41:14 +0100 Subject: [PATCH] Updated experimental demo to use node parents Former-commit-id: f99d90c6242886cce8973b666adb28a242d1e17d --- examples/AnimatedMesh/main.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/examples/AnimatedMesh/main.cpp b/examples/AnimatedMesh/main.cpp index a933b480d..77b668ee4 100644 --- a/examples/AnimatedMesh/main.cpp +++ b/examples/AnimatedMesh/main.cpp @@ -285,12 +285,23 @@ int main() drfreak.SetSequence("stand"); // Afin de synchroniser le quaternion avec les angles d'euler - camRot = camera.GetDerivedRotation().ToEulerAngles(); + NzQuaternionf globalRot = camera.GetDerivedRotation(); + NzVector3f globalPos = camera.GetDerivedTranslation(); + camRot = globalRot.ToEulerAngles(); + + camera.SetParent(); // On détache la caméra du docteur + camera.SetRotation(globalRot); + camera.SetTranslation(globalPos); thirdPerson = false; } else + { + camera.SetParent(drfreak); // On accroche la caméra au Dr. Freak + camera.SetRotation(NzEulerAnglesf(-35.f, 0.f, 0.f)); // Une rotation pour regarder vers le bas + camera.SetTranslation(NzVector3f(0.f, 30.f + drfreak.GetTranslation().y, 50.f)); thirdPerson = true; + } } break; @@ -442,14 +453,6 @@ int main() camera.Translate(up * speed * elapsedTime, nzCoordSys_Global); } - if (thirdPerson) - { - static NzQuaternionf rotDown(NzEulerAnglesf(-35.f, 0.f, 0.f)); // Une rotation pour regarder vers le bas - camera.SetRotation(drfreak.GetDerivedRotation() * rotDown); - - camera.SetTranslation(drfreak.GetDerivedTranslation() + camera.GetDerivedRotation() * NzVector3f(0.f, 30.f, 50.f)); - } - // Animation if (!paused) {