XXXX: This document is a (somewhat out of date) work in progress, and does not entirely match the code.

XXXX: Should references be early or late bound (hard or symbolic links)?

General

Flags

XXXX: How many of these can be implicit based on other things?

active
other flags valid; object "alive" (XXXX: Among other things, this allows clean death functions and having items "waiting in the wings" but not slowing down engine)
enabled
in the "on" state (XXXX: does this need to exist?)
visible
render properties valid; not invisible
collides
collision properties valid; takes part in collisions and collision physics, if physical flag also true
physical
takes part in physics calculations, including collisions if collides flag also true
thinks
has AI separate from mere physics

Misc

type
type of object (XXXX: encoded in bless?)
id
id in world cache (XXXX: implicitely specified by cache?)

Placement

position
position in world coords
orientation
orientation; possibly multiple forms:
  • global quaternion
  • local Euler angles
  • rotation matrix
  • derotation matrix (just transpose of above)
radius
bounding radius computed from local origin

Time

created
subjective time of object creation
time
subjective time since object creation (creation == 0)
delta_time
difference in subjective time from last tick (XXXX: Does this need to be different per purpose, such as physics, rendering, and AI?)
update
generic per-tick update (XXXX: different from physics and AI?)
life
lifetime before inactivated (XXXX: is this an AI attr?)

AI

think
custom AI function to think for a tick
ai_data
opaque data store used by AI function

XXXX: Probably want various major classes, such as lights, to have a common set of base AI data

Rendering

Archetype

scale
scaling from archetype model; != (1, 1, 1) implies renormalization of normal vectors required
display_list
name of display list used to draw archetype

Modeling

vertex_group
reference to vertex list used by vertices
vertices
references to all rendered vertices used by object
faces
all rendered faces of object; definitions reference vertices

XXXX: What about levels of detail?

XXXX: What about other primitive types?

Lighting Objects

lit
flag: takes part in lighting (XXXX: may be implicit?)
normal_type
per-face or per-vertex normals (flat or smooth shading)
normals
normals for all faces/vertices

Lights

light_type
directional or positional
eye_relative
location relative to eye or world?
ambient
diffuse
specular
spot_cutoff
spot_exponent
constant_attenuation
linear_attenuation
quadratic_attenuation

Materials

colors
color definitions used by materials; refs to global?
materials
colors for each component in each lighting term, plus shininess info; possibly varying over surface
textures
textures used by object; refs to globals
texture_coords
texture coordinates used for each texture at each vertex of each face

Collision

extents
current world axis-aligned bounding extents?
vertices
vertices used for collisions; may be same as render model vertices (or references thereto?)
bbox_local
local bounding box
bbox_world
bounding box in world coords?
convex_hulls
list of convex hulls that tightly bound the object
faces
list of faces that can collide for exact collisions; may be same as render model faces (or references thereto?)
collide
custom collision functions?

Physics

linear_velocity
angular_velocity
linear_acceleration
angular_acceleration
forces
moments
mass
center_of_mass
moment_of_inertia
physics
custom physics function?

XXXX: various cached copies of transforms, inverses, and such of above in local and global coords