Well the code is not easy at all :

----------------

if(Players.elms())
{
Player &plr=Players[0];
if(View==VIEW_TPP)
{
Cam.setSpherical(plr.ctrl_center+Vec(0,1,0), plr.angle.x, plr.angle.y, 0, Cam.dist*ScaleFactor(Ms.wheel()*-0.2));
}else
if(View==VIEW_ISO)
{
if(Ms.bp(0) && (!Gui.ms() || Gui.ms()==Gui.desktop())) // move to
{
Vec pos, dir; ScreenToPosDir(Ms.pos(), pos, dir);
PhysHit phys_hit; if(Physics.ray(pos, dir*D.viewRange(), &phys_hit, ~IndexToFlag(AG_CONTROLLER)))
{
plr.actionMoveTo(phys_hit.plane.pos);
}
}
if(Ms.b(1) || Ms.b(2) || Ms.b(4))
{
Cam.yaw -=Ms.d().x;
Cam.pitch+=Ms.d().y;
Ms.freeze();
}
Cam.setSpherical(plr.ctrl_center+Vec(0,0.5,0), Cam.yaw, Cam.pitch, 0, Cam.dist*ScaleFactor(Ms.wheel()*-0.2));
}else
{
if(OrientP *head_point=plr.cskel.findPoint(8"Head"))
{
OrientP head =*head_point;
Vec up =!PointOnPlane(Vec(0,1,0), head.dir);
Flt blend=Sat((1-Abs(head.dir.y))/0.25)*0.5;
head.perp=Lerp(head.perp, up, blend); // move 'up' towards Vec(0,1,0) to reduce head rolling
head.fixPerp();
Cam.setPosDir(head.pos, head.dir, head.perp);
}else
{
Cam.setAngle(plr.ctrl_center, plr.angle.x, plr.angle.y);
}



----------------------

It's lot more maths and things i don't know.
For me it's low level programming.

To gain time, some of us prefer hight level functions , like
pan, tilt roll etc ... instead of maths and complicated functions.

Even other indie engines , programmed in C# or C++ give hight level functions you can call.

For me Esenthel is less complicated than C4 engine, but this is too low level much programming stuff.
I could learn, but , i prefer to program fast with easy functions and gain time.
The counterpart, is that Esenthel offers BIG POWER, special effects, rendering etc ... with great FPS.

But well , i really think i'll avoid Esenthel for now.

Last edited by ratchet; 11/19/12 21:48.