00001 #ifndef __DUSTY_WAYPOINT_ROTATE_INTERPOLATED_TASK_H__
00002 #define __DUSTY_WAYPOINT_ROTATE_INTERPOLATED_TASK_H__
00003
00004 #include "dustyengine.h"
00005
00006 namespace DustyEngine
00007 {
00008 struct WaypointPoint;
00009 struct WaypointListItem;
00010 class RotateInterpolatedTask;
00011
00016 class DUSTYENGINE_API WaypointRotateInterpolatedTask : public RotateInterpolatedTask
00017 {
00018 public:
00020 WaypointRotateInterpolatedTask();
00021 virtual ~WaypointRotateInterpolatedTask();
00022
00024
00029
00030
00031 void AddWaypoint(irr::core::vector3df point, irr::u32 time = 0);
00032
00033
00034
00035 void SetInterpolationTime(irr::u32 time);
00036
00037
00038 void SetStartVector(irr::core::vector3df sv);
00039 void SetEndVector(irr::core::vector3df ev);
00040
00042 void ClearWaypoints();
00043
00044 void OnUpdate();
00045
00048 irr::u32 NumWaypoints()
00049 {
00050 return waypoints.size();
00051 }
00052
00053 protected:
00054 void UpdateVectorsAndTime();
00055 void UpdateWaypointList();
00056 void AddWaypointToList(irr::core::vector3df start, irr::core::vector3df end, irr::u32 startTime, irr::u32 endTime);
00057
00058 irr::core::array<WaypointPoint> waypoints;
00059 irr::core::array<WaypointListItem> waypointList;
00060 };
00061 }
00062
00063 #endif
00064