static void set_local_raw_vec3d (entity *en, vec3d_types type, vec3d *v) { weapon *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { raw->mob.position = *v; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { object *raw; vec3d *v; raw = (object *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_OBJECT_SCALING: //////////////////////////////////////// { v = &raw->object_scaling; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { group *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = (group *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_LAST_KNOWN_POSITION: //////////////////////////////////////// { raw->last_known_position = *v; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { object *raw; ASSERT (v); raw = (object *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_OBJECT_SCALING: //////////////////////////////////////// { *v = raw->object_scaling; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { city *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { weapon *raw; vec3d *v; raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { v = &raw->mob.position; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { weapon *raw; ASSERT (v); raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { *v = raw->mob.position; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { task *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { // is this needed for mobile landing ? // // if parent == keysite then mobile landing entity // /* entity *parent; parent = get_local_entity_parent (en, LIST_TYPE_GENERIC_TASK); if (parent) { if (parent->type == ENTITY_TYPE_KEYSITE) { notify_local_entity (ENTITY_MESSAGE_SET_ENTITY_POSITION, parent, en, v, 0.0, 0.0); } } */ raw->position = *v; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { aircraft *raw; vec3d *v; raw = (aircraft *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_MOTION_VECTOR: //////////////////////////////////////// { v = &raw->mob.motion_vector; break; } //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { v = &raw->mob.position; break; } //////////////////////////////////////// case VEC3D_TYPE_WEAPON_TO_TARGET_VECTOR: //////////////////////////////////////// { v = &raw->weapon_to_target_vector; break; } //////////////////////////////////////// case VEC3D_TYPE_WEAPON_VECTOR: //////////////////////////////////////// { v = &raw->weapon_vector; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { group *raw; vec3d *v; raw = (group *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { entity *member; member = (entity *) get_local_entity_ptr_value (en, PTR_TYPE_GROUP_LEADER); if (member) { v = get_local_entity_vec3d_ptr (member, type); } else { v = NULL; } break; } //////////////////////////////////////// case VEC3D_TYPE_LAST_KNOWN_POSITION: //////////////////////////////////////// { v = &raw->last_known_position; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { task *raw; vec3d *v; raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { v = &raw->position; break; } //////////////////////////////////////// case VEC3D_TYPE_START_POSITION: //////////////////////////////////////// { v = &raw->route_nodes [0]; break; } //////////////////////////////////////// case VEC3D_TYPE_STOP_POSITION: //////////////////////////////////////// { v = &raw->route_nodes [raw->route_length - 1]; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { group *raw; ASSERT (v); raw = (group *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { #ifdef DEBUG debug_fatal ("Invalid call to get group position"); #endif break; } //////////////////////////////////////// case VEC3D_TYPE_LAST_KNOWN_POSITION: //////////////////////////////////////// { #ifdef DEBUG debug_fatal ("Invalid call to get group last known position. Use ptr not vec3d copy"); #endif break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { task *raw; ASSERT (v); raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { *v = raw->position; break; } //////////////////////////////////////// case VEC3D_TYPE_START_POSITION: //////////////////////////////////////// { *v = raw->route_nodes [0]; break; } //////////////////////////////////////// case VEC3D_TYPE_STOP_POSITION: //////////////////////////////////////// { *v = raw->route_nodes [raw->route_length - 1]; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { guide *raw; ASSERT (v); raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_GUIDE_POSITION: //////////////////////////////////////// { get_local_guide_position (en, v); break; } //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { *v = raw->position; break; } //////////////////////////////////////// case VEC3D_TYPE_RELATIVE_POSITION: //////////////////////////////////////// { *v = raw->position; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { guide *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { raw->position = *v; break; } //////////////////////////////////////// case VEC3D_TYPE_RELATIVE_POSITION: //////////////////////////////////////// { raw->position = *v; // No - this isn't a cut'n'paste error !! break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { guide *raw; vec3d *v; raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { v = &raw->position; break; } //////////////////////////////////////// case VEC3D_TYPE_RELATIVE_POSITION: //////////////////////////////////////// { v = &raw->position; // No - this isn't a cut'n'paste error !! break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { city *raw; vec3d *v; raw = (city *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_BOUNDING_BOX_MAX: //////////////////////////////////////// { v = &raw->bounding_box_max; break; } //////////////////////////////////////// case VEC3D_TYPE_BOUNDING_BOX_MIN: //////////////////////////////////////// { v = &raw->bounding_box_min; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { city *raw; ASSERT (v); raw = (city *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_BOUNDING_BOX_MAX: //////////////////////////////////////// { *v = raw->bounding_box_max; break; } //////////////////////////////////////// case VEC3D_TYPE_BOUNDING_BOX_MIN: //////////////////////////////////////// { *v = raw->bounding_box_min; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { object *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = (object *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_OBJECT_SCALING: //////////////////////////////////////// { raw->object_scaling = *v; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void get_local_vec3d (entity *en, vec3d_types type, vec3d *v) { waypoint *raw; ASSERT (v); raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { switch (raw->position_type) { case POSITION_TYPE_VIRTUAL: { entity *position_entity; vec3d *pos; position_entity = get_local_entity_parent (en, LIST_TYPE_TASK_DEPENDENT); if (position_entity) { pos = get_local_entity_vec3d_ptr (position_entity, VEC3D_TYPE_POSITION); v->x = pos->x; v->y = pos->y; v->z = pos->z; } else { v->x = MID_MAP_X; v->y = MID_MAP_Y; v->z = MID_MAP_Z; } break; } default: { *v = raw->position; break; } } break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type) { waypoint *raw; vec3d *v; raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { switch (raw->position_type) { case POSITION_TYPE_VIRTUAL: { entity *position_entity; position_entity = get_local_entity_parent (en, LIST_TYPE_TASK_DEPENDENT); if (position_entity) { v = get_local_entity_vec3d_ptr (position_entity, VEC3D_TYPE_POSITION); } else { v = NULL; } break; } default: { v = &raw->position; break; } } break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } return (v); }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { keysite *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = (keysite *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { int old_x_sec, old_z_sec, new_x_sec, new_z_sec; entity *parent; get_x_sector (old_x_sec, raw->position.x); get_z_sector (old_z_sec, raw->position.z); get_x_sector (new_x_sec, v->x); get_z_sector (new_z_sec, v->z); if ((old_x_sec != new_x_sec) || (old_z_sec != new_z_sec)) { delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); raw->position = *v; parent = get_local_raw_sector_entity (new_x_sec, new_z_sec); insert_local_entity_into_parents_child_list (en, LIST_TYPE_SECTOR, parent, NULL); } else { raw->position = *v; } break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { aircraft *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = (aircraft *) get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_MOTION_VECTOR: //////////////////////////////////////// { raw->mob.motion_vector = *v; break; } //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { float heading; entity *dependent, *special_effect, *old_sector, *new_sector; // // notify dependents of move, must be done before set_vec3d so children can work out delta positions // heading = 0.0; //if (get_local_entity_type (en) == ENTITY_TYPE_HELICOPTER) { heading = get_heading_from_attitude_matrix (raw->mob.attitude); dependent = get_local_entity_first_child (en, LIST_TYPE_MOVEMENT_DEPENDENT); while (dependent) { #if DEBUG_MODULE_AIRCRAFT_POSITION_MESSAGE debug_log ("AIRCRAFT VEC3D: sending set entity position %f, %f, %f", raw->mob.position.x, raw->mob.position.y, raw->mob.position.z); #endif notify_local_entity (ENTITY_MESSAGE_SET_ENTITY_POSITION, dependent, en, v, (double) heading, (double) raw->mob.velocity); dependent = get_local_entity_child_succ (dependent, LIST_TYPE_MOVEMENT_DEPENDENT); } } // // Actual set_vec3d // raw->mob.position = *v; // // check if entered new sector // old_sector = get_local_entity_parent (en, LIST_TYPE_SECTOR); new_sector = get_local_sector_entity (v); if (old_sector != new_sector) { delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); insert_local_entity_into_parents_child_list (en, LIST_TYPE_SECTOR, new_sector, NULL); // // play speech for flown across "front-line" // if (get_comms_model () == COMMS_MODEL_SERVER) { if (get_local_entity_int_value (new_sector, INT_TYPE_SIDE) != get_local_entity_int_value (old_sector, INT_TYPE_SIDE)) { play_aircraft_flown_into_new_sector_speech (en, old_sector, new_sector); } } } // // notify special effects of move // special_effect = get_local_entity_first_child (en, LIST_TYPE_SPECIAL_EFFECT); while (special_effect) { #if DEBUG_MODULE_AIRCRAFT_POSITION_MESSAGE debug_log ("AIRCRAFT VEC3D: sending set entity position %f, %f, %f", raw->mob.position.x, raw->mob.position.y, raw->mob.position.z); #endif notify_local_entity (ENTITY_MESSAGE_SET_ENTITY_POSITION, special_effect, en, &raw->mob.position, (double) heading, (double) raw->mob.velocity); special_effect = get_local_entity_child_succ (special_effect, LIST_TYPE_SPECIAL_EFFECT); } break; } //////////////////////////////////////// case VEC3D_TYPE_WEAPON_TO_TARGET_VECTOR: //////////////////////////////////////// { raw->weapon_to_target_vector = *v; break; } //////////////////////////////////////// case VEC3D_TYPE_WEAPON_VECTOR: //////////////////////////////////////// { raw->weapon_vector = *v; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }
static void set_local_vec3d (entity *en, vec3d_types type, vec3d *v) { weapon *raw; ASSERT (v); #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_VEC3D, en, type, v); #endif raw = get_local_entity_data (en); switch (type) { //////////////////////////////////////// case VEC3D_TYPE_POSITION: //////////////////////////////////////// { entity *special_effect, *old_sector, *new_sector; raw->mob.position = *v; old_sector = get_local_entity_parent (en, LIST_TYPE_SECTOR); new_sector = get_local_sector_entity (v); if (old_sector != new_sector) { delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); insert_local_entity_into_parents_child_list (en, LIST_TYPE_SECTOR, new_sector, NULL); } // // notify special effects of move // special_effect = get_local_entity_first_child (en, LIST_TYPE_SPECIAL_EFFECT); while (special_effect) { #if DEBUG_MODULE debug_log ("WEAPON VEC3D: sending set entity position %f, %f, %f", raw->mob.position.x, raw->mob.position.y, raw->mob.position.z); #endif notify_local_entity (ENTITY_MESSAGE_SET_ENTITY_POSITION, special_effect, en, &raw->mob.position, 0.0, 0.0); special_effect = get_local_entity_child_succ (special_effect, LIST_TYPE_SPECIAL_EFFECT); } break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal_invalid_vec3d_type (en, type); break; } } }