Fix crash
[ryzomcore.git] / snowballs2 / client / src / physics.h
blob3d0acf10f07bb91337de0e85dc33b86c4405a10f
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef PHYSICS_H
18 #define PHYSICS_H
21 // Includes
24 #include <nel/misc/types_nl.h>
26 #include <nel/misc/vector.h>
27 #include <nel/misc/time_nl.h>
29 namespace SBCLIENT {
32 // External classes
35 class CTrajectory
37 NLMISC::CVector _StartPosition;
38 NLMISC::CVector _EndPosition;
39 float _Speed;
40 NLMISC::TLocalTime _StartTime;
41 NLMISC::TLocalTime _StopTime;
42 float _Distance;
44 public:
45 void init(const NLMISC::CVector &position, const NLMISC::CVector &target, float speed, NLMISC::TLocalTime startTime)
47 _StartPosition = position;
48 _EndPosition = target;
49 _Speed = speed;
50 _StartTime = startTime;
51 _Distance = (_EndPosition-_StartPosition).norm();
52 _StopTime = (NLMISC::TLocalTime)(_Distance / _Speed + _StartTime);
55 // void compute(const NLMISC::CVector &position, const NLMISC::CVector &target, float speed, NLMISC::TTime startTime);
57 NLMISC::CVector eval(NLMISC::TLocalTime t) const;
58 NLMISC::CVector evalSpeed(NLMISC::TLocalTime t) const;
60 NLMISC::TLocalTime getStartTime() const { return _StartTime; }
61 NLMISC::CVector getStartPosition() const { return _StartPosition; }
62 NLMISC::TLocalTime getStopTime() const { return _StopTime; }
65 } /* namespace SBCLIENT */
67 #endif // PHYSICS_H
69 /* End of physics.h */