21 this->m_position.
xyz.x = 0.0f;
22 this->m_position.
xyz.y = 0.0f;
23 this->m_position.
xyz.z = 0.0f;
26 this->m_parent_list = NULL;
33 this->m_position.
xyz.x = position->
xyz.x;
34 this->m_position.
xyz.y = position->
xyz.y;
35 this->m_position.
xyz.z = position->
xyz.z;
38 this->m_parent_list = parent_list;
64 this->m_position = *
pos;
69 this->m_name[0] =
'\0';
103 Waypoint_lists.clear();
108 Waypoint_lists.clear();
113 Assert(waypoint_list_index >= 0);
114 Assert(waypoint_index >= 0);
115 return waypoint_list_index * 0x10000 + waypoint_index;
120 Assert(waypoint_instance >= 0);
127 Assert(waypoint_instance >= 0);
128 return waypoint_instance / 0x10000;
133 Assert(waypoint_instance >= 0);
134 return waypoint_instance & 0xffff;
152 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++ii)
155 for (jj = ii->get_waypoints().begin(); jj != ii->get_waypoints().end(); ++jj)
169 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++ii)
184 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++ii)
186 uint len = strlen(ii->get_name());
192 if (*(name + len) !=
':')
196 const char *index_str = name + len + 1;
197 if (*index_str ==
'\0')
199 nprintf((
"waypoints",
"possible error with waypoint name '%s': no waypoint number after the colon\n", name));
205 for (
const char *ch = index_str; *ch !=
'\0'; ch++)
215 nprintf((
"waypoints",
"possible error with waypoint name '%s': string after the colon is not a number\n", name));
223 nprintf((
"waypoints",
"possible error with waypoint name '%s': waypoint number is out of range\n", name));
242 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++ii)
244 for (jj = ii->get_waypoints().begin(); jj != ii->get_waypoints().end(); ++jj)
246 if (jj->get_objnum() == objnum)
256 if (waypoint_instance < 0)
258 if (waypoint_index != NULL)
259 *waypoint_index = -1;
266 if (waypoint_index != NULL)
267 *waypoint_index = -1;
271 if (waypoint_index != NULL)
274 Assert(*waypoint_index >= 0 && (
uint) *waypoint_index < wp_list->get_waypoints().
size());
281 if (waypoint_instance < 0)
298 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++
i, ++ii)
330 for (ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++ii)
332 if (&(*ii) == wp_list)
359 Assert(dest_name != NULL);
362 int index = start_index;
366 sprintf(dest_name,
"Waypoint path %d", index);
371 }
while (collision != NULL);
380 Warning(
LOCATION,
"Waypoint list '%s' already exists in this mission! Not adding the new list...", name);
385 Waypoint_lists.push_back(new_list);
390 for (ii = vec_list.begin(); ii != vec_list.end(); ++ii)
392 waypoint new_waypoint(&(*ii), wp_list);
406 int i, wp_list_index, wp_index;
409 if (waypoint_instance < 0)
417 Waypoint_lists.push_back(new_list);
418 wp_list = &Waypoint_lists.back();
421 wp_list_index = Waypoint_lists.size() - 1;
448 Assert(wp_index < 0x10000);
451 waypoint new_waypoint(pos, wp_list);
455 for (i = 0; i < wp_index; i++)
480 if (Waypoint_lists.size() == 1)
482 Waypoint_lists.clear();
490 for (i = 0, ii = Waypoint_lists.begin(); ii != Waypoint_lists.end(); ++
i, ++ii)
494 Waypoint_lists.erase(ii);
498 Assert(ii != Waypoint_lists.end());
waypoint * find_matching_waypoint(const char *name)
void waypoint_add_list(const char *name, SCP_vector< vec3d > &vec_list)
int calc_waypoint_index(int waypoint_instance)
void waypoint_parse_init()
waypoint_list * find_waypoint_list_with_instance(int waypoint_instance, int *waypoint_index)
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
int find_index_of_waypoint(waypoint_list *wp_list, waypoint *wpt)
struct vec3d::@225::@227 xyz
#define END_OF_LIST(head)
void waypoint_create_game_object(waypoint *wpt, int list_index, int wpt_index)
GLenum GLuint GLenum GLsizei const GLchar * buf
SCP_list< waypoint_list > Waypoint_lists
int calc_waypoint_instance(int waypoint_list_index, int waypoint_index)
waypoint * find_waypoint_with_objnum(int objnum)
SCP_vector< waypoint > & get_waypoints()
waypoint_list * get_parent_list()
void set_name(const char *name)
int obj_create(ubyte type, int parent_obj, int instance, matrix *orient, vec3d *pos, float radius, uint flags)
#define strnicmp(s1, s2, n)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
void waypoint_find_unique_name(char *dest_name, int start_index)
int waypoint_add(vec3d *pos, int waypoint_instance)
const size_t INVALID_WAYPOINT_POSITION
object Objects[MAX_OBJECTS]
waypoint * find_waypoint_with_instance(int waypoint_instance)
GLuint const GLchar * name
void calc_waypoint_indexes(int waypoint_instance, int &waypoint_list_index, int &waypoint_index)
void obj_delete(int objnum)
waypoint_list * find_matching_waypoint_list(const char *name)
waypoint_list * find_waypoint_list_at_index(int index)
void waypoint_level_close()
int find_index_of_waypoint_list(waypoint_list *wp_list)
waypoint * find_waypoint_at_index(waypoint_list *list, int index)
void waypoint_create_game_objects()
void waypoint_remove(waypoint *wpt)
int calc_waypoint_list_index(int waypoint_instance)