Sry, OT ^^:
Zitat:
Na da macht wohl jemand Schleichwerbung für gewisse Forks?
Joa, benutze LF jetzt schon seit einiger Zeit, weil einfach die Entwicklung schneller vorangeht als bei Irrlicht :p
zB Terrain oder diese SceneNode-Funktionen (mit denen niko keine probleme beim implementieren hätte)...
Ãœbrigends ist LF nicht mehr IrrlichtNX, wurde zu 99% neu geschrieben (bis auf core:: )
Die Nachteile sind halt die winzige Community und die schlechten Docs.
LukasBanana:
Für direkte Bewegung in eine Richtung brauchst du sin() und cos(), um das über Dreiecke auszurechnen.
Ich kann gleich mal gucken, ob ich da schnell was zusammengekleistert bekomme.
EDIT:
Auszug aus LF, CSpacial.cpp:
Code:
//! move forward taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveForward(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(0.0f,0.0f,1.0f);
setPosition(localPosition + (move * stepSize));
transformationChanged = true;
transformationNotify();
}
//! move backward taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveBackward(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(0.0f,0.0f,1.0f);
setPosition(localPosition + (move * -stepSize));
transformationChanged = true;
transformationNotify();
}
//! move left taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveLeft(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(1.0f,0.0f,0.0f);
setPosition(localPosition + (move * -stepSize));
transformationChanged = true;
transformationNotify();
}
//! move right taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveRight(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(1.0f,0.0f,0.0f);
setPosition(localPosition + (move * stepSize));
transformationChanged = true;
transformationNotify();
}
//! move up taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveUp(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(0.0f,1.0f,0.0f);
setPosition(localPosition + (move * stepSize));
transformationChanged = true;
transformationNotify();
}
//! move down taking local rotation into account
//! \param stepSize: how much to move
void CSpacial::moveDown(f32 stepSize)
{
core::vector3df move = localRotation * core::vector3df(0.0f,1.0f,0.0f);
setPosition(localPosition + (move * -stepSize));
transformationChanged = true;
transformationNotify();
}