Commit 07280fa0 authored by hybrid's avatar hybrid

Simplify camera methods.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2744 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 9b4d3cbd
...@@ -668,59 +668,54 @@ ICameraSceneNode* CSceneManager::addCameraSceneNode(ISceneNode* parent, ...@@ -668,59 +668,54 @@ ICameraSceneNode* CSceneManager::addCameraSceneNode(ISceneNode* parent,
parent = this; parent = this;
ICameraSceneNode* node = new CCameraSceneNode(parent, this, id, position, lookat); ICameraSceneNode* node = new CCameraSceneNode(parent, this, id, position, lookat);
node->drop();
setActiveCamera(node); setActiveCamera(node);
node->drop();
return node; return node;
} }
//! Adds a camera scene node which is able to be controlld with the mouse similar //! Adds a camera scene node which is able to be controlled with the mouse similar
//! to in the 3D Software Maya by Alias Wavefront. //! to in the 3D Software Maya by Alias Wavefront.
//! The returned pointer must not be dropped. //! The returned pointer must not be dropped.
ICameraSceneNode* CSceneManager::addCameraSceneNodeMaya(ISceneNode* parent, ICameraSceneNode* CSceneManager::addCameraSceneNodeMaya(ISceneNode* parent,
f32 rotateSpeed, f32 zoomSpeed, f32 translationSpeed, s32 id) f32 rotateSpeed, f32 zoomSpeed, f32 translationSpeed, s32 id)
{ {
if (!parent) ICameraSceneNode* node = addCameraSceneNode(parent, core::vector3df(),
parent = this; core::vector3df(0,0,100), id);
if (node)
ICameraSceneNode* node = new CCameraSceneNode(parent, this, id); {
ISceneNodeAnimator* anm = new CSceneNodeAnimatorCameraMaya(CursorControl, ISceneNodeAnimator* anm = new CSceneNodeAnimatorCameraMaya(CursorControl,
rotateSpeed, zoomSpeed, translationSpeed); rotateSpeed, zoomSpeed, translationSpeed);
node->addAnimator(anm);
setActiveCamera(node);
anm->drop(); node->addAnimator(anm);
node->drop(); anm->drop();
}
return node; return node;
} }
//! Adds a camera scene node which is able to be controled with the mouse and keys //! Adds a camera scene node which is able to be controlled with the mouse and keys
//! like in most first person shooters (FPS): //! like in most first person shooters (FPS):
ICameraSceneNode* CSceneManager::addCameraSceneNodeFPS(ISceneNode* parent, ICameraSceneNode* CSceneManager::addCameraSceneNodeFPS(ISceneNode* parent,
f32 rotateSpeed, f32 moveSpeed, s32 id, f32 rotateSpeed, f32 moveSpeed, s32 id,
SKeyMap* keyMapArray, s32 keyMapSize, bool noVerticalMovement, f32 jumpSpeed, bool invertMouseY) SKeyMap* keyMapArray, s32 keyMapSize, bool noVerticalMovement, f32 jumpSpeed, bool invertMouseY)
{ {
if (!parent) ICameraSceneNode* node = addCameraSceneNode(parent, core::vector3df(),
parent = this; core::vector3df(0,0,100), id);
if (node)
ICameraSceneNode* node = new CCameraSceneNode(parent, this, id); {
ISceneNodeAnimator* anm = new CSceneNodeAnimatorCameraFPS(CursorControl, ISceneNodeAnimator* anm = new CSceneNodeAnimatorCameraFPS(CursorControl,
rotateSpeed, moveSpeed, jumpSpeed, rotateSpeed, moveSpeed, jumpSpeed,
keyMapArray, keyMapSize, noVerticalMovement, invertMouseY); keyMapArray, keyMapSize, noVerticalMovement, invertMouseY);
// Bind the node's rotation to its target. This is consistent with 1.4.2 and below. // Bind the node's rotation to its target. This is consistent with 1.4.2 and below.
node->bindTargetAndRotation(true); node->bindTargetAndRotation(true);
node->addAnimator(anm);
node->addAnimator(anm); anm->drop();
setActiveCamera(node); }
anm->drop();
node->drop();
return node; return node;
} }
......
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