Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

joint.h File Reference

The header file that describes the Joint uber-class, and its derivatives. More...

#include "engineAbstract.h"
#include <iostream>
#include <string>

Go to the source code of this file.

Namespaces

namespace  std

Compounds

class  Joint
 Abstract representaiton of a degree-of-freedom. More...

class  NodeJoint
 Concrete class that controls nodes. More...

class  ParticleJoint
 Joint type that controls a feature of a particle system. More...

class  PropertyJoint
 Joint that controls an in-engine variable. More...


Defines

#define JOINT_NUM   0x0001
 ID code for type Joint. More...

#define NODEJOINT_NUM   0x0002
 ID code for type NodeJoint. More...

#define PROPERTYJOINT_NUM   0x0004
 ID code for type PropertyJoint. More...

#define PARTICLEJOINT_NUM   0x0008
 ID code for type ParticleJoint. More...

#define OUT_OF_BOUNDS   -1
 Returned when array bounds exceeded. More...

#define MASSIVE_POINTER_FAILURE   -2
 Returned when memory is unexpectedly unavailable. More...


Typedefs

typedef JointJointPtr
 Pointer to Joint. More...


Enumerations

enum  JointPart {
  JP_ACTION_CODE = 0, JP_NAME, JP_SUPPLEMENTAL_DATA, JP_VALUE,
  JP_VALUE_START, JP_VALUE_END, JP_TARGET
}
 Abstract parts of a joint that can be manipulated/changed. More...

enum  NodeAction { NA_NOTHING = 0, NA_ROTATE, NA_TRANSLATE }
 The operations it is possible to perform on a node. More...

enum  PuppetProperty {
  PP_NOTHING = 50, PP_POSITION, PP_SCALE, PP_LIGHT_R,
  PP_LIGHT_G, PP_LIGHT_B, PP_LIGHT_RADIUS, PP_PARTICLE_SPAWN_RATE = 100,
  PP_PARTICLE_GRAVITY, PP_PARTICLE_R, PP_PARTICLE_G, PP_PARTICLE_B,
  PP_PARTICLE_LIFETIME, PP_PARTICLE_VEL_X, PP_PARTICLE_VEL_Y, PP_PARTICLE_VEL_Z
}
 An enumeration of in-engine properties that a joint could effect. More...


Detailed Description

The header file that describes the Joint uber-class, and its derivatives.

A joint describes a single degree-of-freedom, and connects that axis to a single source (joystick, MIDI slider, controller, etc.). The actual feature controlled can vary from joint to joint, and most (but not all) can be assigned to any flavor of Puppet. This file also contains quite a few enumerations and definitions that codify the various actions and errors that can occur throughout the process of a show.


Define Documentation

#define JOINT_NUM   0x0001
 

ID code for type Joint.

A number that uniquely identifies the abstract joint class. Can be logically compounded with other joint IDs.

#define MASSIVE_POINTER_FAILURE   -2
 

Returned when memory is unexpectedly unavailable.

This error code indicates an applicaiton-threatening problem with required pointers being NULL or somehow corrupted. Usually a swift termination message and copious debugging information should follow.

#define NODEJOINT_NUM   0x0002
 

ID code for type NodeJoint.

A number that uniquely identifies the Node joint class. Can be logically compounded with other joint IDs.

#define OUT_OF_BOUNDS   -1
 

Returned when array bounds exceeded.

This error code is only returned when a fixed-size array runs out of space, or the array index is outside the min and max restrictions.

#define PARTICLEJOINT_NUM   0x0008
 

ID code for type ParticleJoint.

A number that uniquely identifies the Particle joint class. Can be logially compounded with other joint IDs.

#define PROPERTYJOINT_NUM   0x0004
 

ID code for type PropertyJoint.

A number that uniquely identifies the Property joint class. Can be logially compounded with other joint IDs.


Typedef Documentation

typedef Joint * JointPtr
 

Pointer to Joint.

A pointer to a joint class.


Enumeration Type Documentation

enum JointPart
 

Abstract parts of a joint that can be manipulated/changed.

The enum JointPart is required for the Modify command, and classfies which portion of the joint needs to be changed...we need this because the Puppet might not know what parts/variables a given joint has, but needs to transfer modify requests regardless.

Enumeration values:
JP_ACTION_CODE  The type of action performed.
JP_NAME  The name of the joint.
JP_SUPPLEMENTAL_DATA  The supplemental data in the joint.
JP_VALUE  The current value.
JP_VALUE_START  One end of the value range.
JP_VALUE_END  The other end of the value range.
JP_TARGET  The target of the action performed.

enum NodeAction
 

The operations it is possible to perform on a node.

The various transformations/actions that can be assigned to a given joint. The same node/direction combo could have several joints attached to it, as long as there were different actions involved.

Enumeration values:
NA_NOTHING  Empty, null action.
NA_ROTATE  Rotates by value along axis defined by supplement.
NA_TRANSLATE  Translates by value in the direction of supplement.

enum PuppetProperty
 

An enumeration of in-engine properties that a joint could effect.

PuppetProperty is a current tabulation of all engine-specific properties or parts that a joint could conceivably alter. Obviously the code for changing these items is engine-specific, but the list should remain constant throughout.

Enumeration values:
PP_NOTHING  Non-existant property.
PP_POSITION  Position in worldspace.
PP_SCALE  Scale in worldspace.
PP_LIGHT_R  Red coloration component of a light.
PP_LIGHT_G  Green coloration component of a light.
PP_LIGHT_B  Blue coloration component of a light.
PP_LIGHT_RADIUS  Radius of a light.
PP_PARTICLE_SPAWN_RATE  Rate at which new particles in the system are created.
PP_PARTICLE_GRAVITY  Gavitational constant for particles.
PP_PARTICLE_R  Red axis of new particle color.
PP_PARTICLE_G  Green axis of new particle color.
PP_PARTICLE_B  Blue axis of new particle color.
PP_PARTICLE_LIFETIME  How long particles in a system remain alive.
PP_PARTICLE_VEL_X  The starting x-axis velocity of particles in the system.
PP_PARTICLE_VEL_Y  The starting y-axis velocity of particles in the system.
PP_PARTICLE_VEL_Z  The starting z-axis velocity of particles in the system.


Generated on Tue Oct 16 13:42:10 2001 for The Stage by doxygen1.2.11 written by Dimitri van Heesch, © 1997-2001