aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/waypoints.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/waypoints.cpp')
-rw-r--r--engines/bladerunner/waypoints.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/engines/bladerunner/waypoints.cpp b/engines/bladerunner/waypoints.cpp
new file mode 100644
index 0000000000..d174e26cbc
--- /dev/null
+++ b/engines/bladerunner/waypoints.cpp
@@ -0,0 +1,55 @@
+#include "bladerunner/waypoints.h"
+namespace BladeRunner {
+
+Waypoints::Waypoints(BladeRunnerEngine* vm, int count) {
+ _count = count;
+ _waypoints = new Waypoint[count];
+}
+
+Waypoints::~Waypoints() {
+}
+
+void Waypoints::getXyz(int waypointId, float *x, float *y, float *z) {
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if (waypointId < 0 || waypointId >= _count || !_waypoints[waypointId]._present)
+ return;
+
+ *x = _waypoints[waypointId]._position.x;
+ *y = _waypoints[waypointId]._position.y;
+ *z = _waypoints[waypointId]._position.z;
+}
+
+int Waypoints::getSetId(int waypointId) {
+ if (waypointId < 0 || waypointId >= _count || !_waypoints[waypointId]._present)
+ return -1;
+ return _waypoints[waypointId]._setId;
+}
+
+bool Waypoints::set(int waypointId, int setId, Vector3 position) {
+ if (waypointId < 0 || waypointId >= _count)
+ return false;
+
+ _waypoints[waypointId]._setId = setId;
+ _waypoints[waypointId]._position = position;
+ _waypoints[waypointId]._present = true;
+
+ return true;
+}
+
+bool Waypoints::reset(int waypointId) {
+ if (waypointId < 0 || waypointId >= _count)
+ return false;
+
+ _waypoints[waypointId]._setId = -1;
+ _waypoints[waypointId]._position.x = 0;
+ _waypoints[waypointId]._position.y = 0;
+ _waypoints[waypointId]._position.z = 0;
+ _waypoints[waypointId]._present = false;
+
+ return true;
+
+}
+} \ No newline at end of file