next up previous contents index
Next: Gateway Objects Up: More Mirage Features Previous: Gaseous Objects

Flags

    Each object has a field called flags. flags is of type uint and is a set of bit flags describe the type of object it is. You can set the flags using bit operations.

To turn on a flag (whether it is on or off).

  //bitwise or with FLAGS_NAME
  obj->flags |= FLAGS_NAME;

To turn off a flag (whether it is on or off).

  //bitwise and with NOT( FLAGS_NAME )
  obj->flags &= ~FLAGS_NAME;

To turn a flag on if it is off and off if it is on.

  //bitwise xor with FLAGs_NAME
  obj->flags ^= FLAGS_NAME;

FLAGS_NAME stands for any of the flags defined below.

  //sets the type of object
  FLAGS_DAG  
  FLAGS_PRIM  
  FLAGS_CAMERA
  FLAGS_LIGHT

  //sets the type of object to undefined
  FLAGS_NOTYPE 

  //sets the object to have a partially transparent shadow.
  #define FLAGS_TRANSLUCENT  

  //sets the types of rays which the object appears in.
  FLAGS_NOPRIMARY  //can't be seen unless it's a reflected or transmitted 
                   //or shadow ray.
  FLAGS_NOSHADOW   // doesn't cast a shadow. (lights: doesn't cast shadows) 
  FLAGS_NOREFLECT  // doesn't appear in mirrors.
  FLAGS_NOTRANSMIT // doesn't appear in transmitted rays.
  FLAGS_ONLYTRANSMIT // only appears in transmitted rays

  //indicates that when the dag-graph is traversed this object is one that 
  //needs to have its position placed in the global label-list. 
  //This flag has no meaning for primnodes. 
  FLAGS_LABELED   

  // designates that there is more than one texture applied to a given primnode, 
  // and that the texcol pointer should be used rather than the texture pointer. 
  // Set automatically when the primnode is created.
  FLAGS_MULTITEXTURE  

  //Defined in the gateway objects section.
  FLAGS_GATEWAY
  FLAGS_ONEWAY_GATEWAY 
  FLAGS_NOT_THROUGH_GATEWAY
  FLAGS_ONLY_THROUGH_GATEWAY





Sophie Day
Fri Feb 20 15:47:19 NZDT 1998