Commit e3fd0142 authored by bitplane's avatar bitplane

Fixed bug id 2074582, CSceneNodeAnimatorCameraMaya uses uninitialized OldTarget.

Animator now remembers the previously used camera and resets the OldTarget on a change

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1553 dfc29bdd-3216-0410-991c-e03cc46cb475
parent a32d8dc4
...@@ -17,14 +17,18 @@ CSceneNodeAnimatorCameraMaya::CSceneNodeAnimatorCameraMaya(gui::ICursorControl* ...@@ -17,14 +17,18 @@ CSceneNodeAnimatorCameraMaya::CSceneNodeAnimatorCameraMaya(gui::ICursorControl*
: CursorControl(cursor), Zooming(false), Rotating(false), Moving(false), Translating(false), : CursorControl(cursor), Zooming(false), Rotating(false), Moving(false), Translating(false),
ZoomSpeed(zoom), RotateSpeed(rotate), TranslateSpeed(translate), ZoomSpeed(zoom), RotateSpeed(rotate), TranslateSpeed(translate),
RotateStartX(0.0f), RotateStartY(0.0f), ZoomStartX(0.0f), ZoomStartY(0.0f), RotateStartX(0.0f), RotateStartY(0.0f), ZoomStartX(0.0f), ZoomStartY(0.0f),
TranslateStartX(0.0f), TranslateStartY(0.0f), CurrentZoom(70.0f), RotX(0.0f), RotY(0.0f) TranslateStartX(0.0f), TranslateStartY(0.0f), CurrentZoom(70.0f), RotX(0.0f), RotY(0.0f),
Target(0,0,0), OldTarget(0,0,0), MousePos(0.5f, 0.5f), OldCamera(0)
{ {
#ifdef _DEBUG #ifdef _DEBUG
setDebugName("CSceneNodeAnimatorCameraMaya"); setDebugName("CSceneNodeAnimatorCameraMaya");
#endif #endif
if (CursorControl) if (CursorControl)
{
CursorControl->grab(); CursorControl->grab();
MousePos = CursorControl->getRelativePosition();
}
allKeysUp(); allKeysUp();
} }
...@@ -93,6 +97,12 @@ void CSceneNodeAnimatorCameraMaya::animateNode(ISceneNode *node, u32 timeMs) ...@@ -93,6 +97,12 @@ void CSceneNodeAnimatorCameraMaya::animateNode(ISceneNode *node, u32 timeMs)
ICameraSceneNode* camera = static_cast<ICameraSceneNode*>(node); ICameraSceneNode* camera = static_cast<ICameraSceneNode*>(node);
if (OldCamera != camera)
{
OldTarget = camera->getTarget();
OldCamera = camera;
}
Target = camera->getTarget(); Target = camera->getTarget();
const SViewFrustum* va = camera->getViewFrustum(); const SViewFrustum* va = camera->getViewFrustum();
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define __C_SCENE_NODE_ANIMATOR_CAMERA_MAYA_H_INCLUDED__ #define __C_SCENE_NODE_ANIMATOR_CAMERA_MAYA_H_INCLUDED__
#include "ISceneNodeAnimatorCameraMaya.h" #include "ISceneNodeAnimatorCameraMaya.h"
#include "ICameraSceneNode.h"
#include "vector2d.h" #include "vector2d.h"
namespace irr namespace irr
...@@ -90,6 +91,7 @@ namespace scene ...@@ -90,6 +91,7 @@ namespace scene
f32 CurrentZoom; f32 CurrentZoom;
f32 RotX, RotY; f32 RotX, RotY;
core::vector3df Target, OldTarget; core::vector3df Target, OldTarget;
scene::ICameraSceneNode* OldCamera;
core::position2d<f32> MousePos; core::position2d<f32> MousePos;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment