24 #define DEFAULT_SHIELD_SECTIONS 4 // Number of sections in standard shields.
31 #define OBJ_NONE 0 //unused object
32 #define OBJ_SHIP 1 //a ship
33 #define OBJ_WEAPON 2 //a laser, missile, etc
34 #define OBJ_FIREBALL 3 //an explosion
35 #define OBJ_START 4 //a starting point marker (player start, etc)
36 #define OBJ_WAYPOINT 5 //a waypoint object, maybe only ever used by Fred
37 #define OBJ_DEBRIS 6 //a flying piece of ship debris
39 #define OBJ_GHOST 8 //so far, just a placeholder for when a player dies.
40 #define OBJ_POINT 9 //generic object type to display a point in Fred.
41 #define OBJ_SHOCKWAVE 10 // a shockwave
42 #define OBJ_WING 11 // not really a type used anywhere, but I need it for Fred.
43 #define OBJ_OBSERVER 12 // used for multiplayer observers (possibly single player later)
44 #define OBJ_ASTEROID 13 // An asteroid, you know, a big rock, like debris, sort of.
45 #define OBJ_JUMP_NODE 14 // A jump node object, used only in Fred.
46 #define OBJ_BEAM 15 // beam weapons. we have to roll them into the object system to get the benefits of the collision pairs
49 #define MAX_OBJECT_TYPES 16
51 #define UNUSED_OBJNUM (-MAX_OBJECTS*2) // Newer systems use this instead of -1 for invalid object.
103 #define OF_RENDERS (1<<0) // It renders as something ( objtype_render gets called)
104 #define OF_COLLIDES (1<<1) // It collides with stuff (objtype_check_impact & objtype_hit gets called)
105 #define OF_PHYSICS (1<<2) // It moves with standard physics.
106 #define OF_SHOULD_BE_DEAD (1<<3) // this object should be dead, so next time we can, we should delete this object.
107 #define OF_INVULNERABLE (1<<4) // invulnerable
108 #define OF_PROTECTED (1<<5) // Don't kill this object, probably mission-critical.
109 #define OF_PLAYER_SHIP (1<<6) // this object under control of some player -- don't do ai stuff on it!!!
110 #define OF_NO_SHIELDS (1<<7) // object has no shield generator system (i.e. no shields)
111 #define OF_JUST_UPDATED (1<<8) // for multiplayer -- indicates that we received object update this frame
112 #define OF_COULD_BE_PLAYER (1<<9) // for multiplayer -- indicates that it is selectable ingame joiners as their ship
113 #define OF_WAS_RENDERED (1<<10) // Set if this object was rendered this frame. Only gets set if OF_RENDERS set. Gets cleared or set in obj_render_all().
114 #define OF_NOT_IN_COLL (1<<11) // object has not been added to collision list
115 #define OF_BEAM_PROTECTED (1<<12) // don't fire beam weapons at this type of object, probably mission critical.
116 #define OF_SPECIAL_WARPIN (1<<13) // Object has special warp-in enabled.
117 #define OF_DOCKED_ALREADY_HANDLED (1<<14) // Goober5000 - a docked object that we already moved
118 #define OF_TARGETABLE_AS_BOMB (1<<15)
119 #define OF_FLAK_PROTECTED (1<<16) // Goober5000 - protected from flak turrets
120 #define OF_LASER_PROTECTED (1<<17) // Goober5000 - protected from laser turrets
121 #define OF_MISSILE_PROTECTED (1<<18) // Goober5000 - protected from missile turrets
122 #define OF_IMMOBILE (1<<19) // Goober5000 - doesn't move, no matter what
125 #define OF_MARKED (1<<29) // Object is marked (Fred). Can be reused in FreeSpace for anything that won't be used by Fred.
126 #define OF_TEMP_MARKED (1<<30) // Temporarily marked (Fred).
127 #define OF_HIDDEN (1<<31) // Object is hidden (not shown) and can't be manipulated
135 #define MAX_OBJECT_FLAG_NAMES 10
177 object(
const object& other);
178 object& operator= (
const object & other);
235 #define OBJ_INDEX(objp) (ptrdiff_t)(objp-Objects)
259 void obj_render_all(
void (*render_function)(
object *
objp),
bool* render_viewer_last );
274 #define OBJ_RECALC_PAIRS(obj_to_reset) do { obj_set_flags(obj_to_reset, obj_to_reset->flags & ~(OF_COLLIDES)); obj_set_flags(obj_to_reset, obj_to_reset->flags | OF_COLLIDES); } while(0);
void obj_queue_render(object *obj, draw_list *scene)
void obj_move_all(float frametime)
int render_order[MAX_OBJECTS]
void obj_observer_move(float frame_time)
int object_get_model(object *objp)
void obj_render_DEPRECATED(object *obj)
void obj_client_pre_interpolate()
void obj_merge_created_list(void)
void obj_get_average_ship_pos(vec3d *pos)
void obj_render_queue_all()
char flag_name[TOKEN_LENGTH]
void object_set_gliding(object *objp, bool enable=true, bool force=false)
struct obj_flag_name obj_flag_name
void obj_client_post_interpolate()
void obj_move_call_physics(object *objp, float frametime)
void obj_init_all_ships_physics()
void obj_delete(int objnum)
void obj_move_one(object *obj, float frametime)
void obj_render(object *obj)
dock_instance * dock_list
void obj_remove_pairs(object *a)
void obj_move_all_post(object *objp, float frametime)
GLboolean GLboolean GLboolean GLboolean a
void obj_player_fire_stuff(object *objp, control_info ci)
int objects_will_collide(object *A, object *B, float duration, float radius_scale)
float get_shield_pct(object *objp)
float get_max_shield_quad(object *objp)
struct checkobject checkobject
bool object_glide_forced(object *objp)
bool object_get_gliding(object *objp)
void obj_move_all_pre(object *objp, float frametime)
int Highest_ever_object_index
int Object_next_signature
void obj_render_all(void(*render_function)(object *objp), bool *render_viewer_last)
obj_flag_name Object_flag_names[]
int object_is_dead_docked(object *objp)
int obj_team(object *objp)
SCP_vector< float > shield_quadrant
int obj_get_SIF(object *objp)
dock_instance * dead_dock_list
GLsizei GLsizei GLuint * obj
int obj_get_by_signature(int sig)
struct object_orient_pos object_orient_pos
void obj_move_one_docked_object(object *objp, object *parent_objp)
void obj_add_pairs(int objnum)
float get_hull_pct(object *objp)
SCP_vector< int > objsnd_num
int object_is_docked(object *objp)
char * Object_type_names[MAX_OBJECT_TYPES]
void obj_set_flags(object *obj, uint new_flags)
float get_sim_hull_pct(object *objp)
int obj_create(ubyte type, int parent_obj, int instance, matrix *orient, vec3d *pos, float radius, uint flags)