[maybe I overlooked it's somewere here but I guees.. if it would be here. Irrlicht developers would already add it to irrlicht]
(Animator source)
http://www.mediafire.com/?em3b9apzzlymois or direct http://www.mediafire.com/file/em3b9apzz ... camera.zip
Scene Manager interface:
Code: Select all
/**
* @param rotateSpeed accelerator for rotation
* @param zoomSpeed accelerator for zooming (depend pretty much on minDist and maxDist)
* @param minDist minimal distance from parent
* @param maxDist maximal distance from target
* @param WorldOrientation orientation of world should be vector with one value specifying up down dimension (this piece of code is tested for 0,0,1)
* @param ctrlMask binary mask for camera control button - 001b (left) 010b (mid) 100b (right) - 101b (right+left) etc...
*/
virtual ICameraSceneNode* addCameraSceneNodeRPG( ISceneNode* parent = 0, f32 rotateSpeed = 3.0f, f32 zoomSpeed = 1.f,
f32 minDist = 0.5f, f32 maxDist=30.f, core::vector3df WorldOrientation = core::vector3df(0,0,1), u8 ctrlMask = 1 );
Code: Select all
ICameraSceneNode* CSceneManager::addCameraSceneNodeRPG( ISceneNode* parent, f32 rotateSpeed, f32 zoomSpeed,
f32 minDist, f32 maxDist, core::vector3df WorldOrientation, u8 ctrlMask)
{
ICameraSceneNode* node = addCameraSceneNode( parent, core::vector3df(0,0,0), core::vector3df(0,3,2) );
node->setUpVector(WorldOrientation);
if (node)
{
ISceneNodeAnimator* anm = new CSceneNodeAnimatorCameraRPG( CursorControl , rotateSpeed, zoomSpeed,
minDist, maxDist, WorldOrientation, ctrlMask);
node->addAnimator(anm);
anm->drop();
}
return node;
}

It get's actually completly bound on it's parent -> it looks on it in specific angle (controlled by mouse). If there's no parent it's bound to 0,0,0.
(it's cool for model viewers and ofc all RPGs)