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)?
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
- type
- type of object (XXXX: encoded in bless?)
- id
- id in world cache (XXXX: implicitely specified by cache?)
- 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
- 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?)
- 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
- scale
- scaling from archetype model; != (1, 1, 1) implies renormalization of normal vectors required
- display_list
- name of display list used to draw archetype
- 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?
- 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
- 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
- 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
- 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?
- 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