MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / Waypoint

Class Waypoint

plugins/serverSideBotSample/serverSideBotSample.cpp:26–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24#define rad2Deg 57.295779513082320876798154814105f
25
26class Waypoint {
27 public:
28 Waypoint(bz_ServerSidePlayerHandler& b, float* t = NULL) : bot(b) {
29 if (t) {
30 memcpy(target, t, sizeof(float) * 3);
31 }
32 else {
33 memset(target, 0, sizeof(float) * 3);
34 }
35 }
36
37 Waypoint(const Waypoint& v) : bot(v.bot) {
38 memcpy(target, v.target, sizeof(float) * 3);
39 }
40
41 bool process(void) {
42 // get the current vec to the target
43 float vec[3];
44 bot.getPosition(vec);
45
46 for (int i = 0; i < 3; i++) {
47 vec[i] = target[i] - vec[i];
48 }
49
50 // see if we are there
51 if (vec[0]*vec[0] + vec[1]*vec[1] < 1) {
52 return true;
53 }
54
55 float angle = atan2(vec[1], vec[0]) * rad2Deg;
56 float angDelta = angle - bot.getFacing();
57
58 float input[2] = {0, 0};
59 if (fabs(angDelta) > 1.0f) {
60 input[0] = angDelta;
61 }
62
63 if (fabs(angDelta) > 25.0f) {
64 input[1] = 1.0f;
65 }
66
67 bot.setMovement(input[1], input[0]);
68
69 return false;
70 }
71
72 float target[3];
73 private:
74 bz_ServerSidePlayerHandler& bot;
75};
76
77class SimpleBotHandler : public bz_ServerSidePlayerHandler {
78 public:

Callers 3

addedMethod · 0.85
thinkMethod · 0.85
playerSpawnedMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected