/*
 *      PROJECT:
 *      SUBSYSTEM:
 *      MODULE:
 *
 *      FILE:           $RCSfile: vcdefs.h,v $
 *      REVISION:       $Revision: 1.1 $
 *      Date:           $Date: 95/05/18 10:24:10 $
 *      Author:         $Author: john $
 *      RCS Ident:      $Id: vcdefs.h,v 1.3 1995/03/22 12:23:51 jeff Exp $
 *
 *      FUCTION:
 *
 *
 *
 *
 * Copyright (c) 1992 Division Ltd.
 *
 * All Rights Reserved.
 *
 * This Document may not, in whole or in part, be copied,
 * photocopied, reproduced, translated, or reduced to any
 * electronic medium or machine readable form without prior
 * written consent from Division Ltd.
 */

/*---	Local sizing constants */

#define VC_RED                         	0
#define VC_GREEN                       	1
#define VC_BLUE                        	2
#define VC_MAX_OBJECT_ATTRIBUTES       	6

#define VC_ERRTYPE_NONE			0
#define VC_ERRTYPE_VL			1
#define VC_ERRTYPE_DM			2
#define VC_ERRTYPE_VC			3
#define VC_ERRTYPE_SYSTEM		4

#define VC_MAX_SIGNALS			32

#define VC_MAX_SENSORS				4

#define VC_RADIATOR_MAX_POINTS			36
#define VC_RADIATOR_NAME_LENGTH			16

#define VC_LIGHT_ENABLE				0x00000004

#define VC_LIGHT_MODE_MASK			0x00000003
#define VC_LIGHT_MODE_DIRECTIONAL 		0x00000000
#define VC_LIGHT_MODE_POINT       		0x00000001
#define VC_LIGHT_MODE_AMBIENT     		0x00000002
#define VC_LIGHT_MODE_SPOT			0x00000003

#define VC_LOD_NAME_LENGTH		8

#define VC_NO_INSTANCES     -1
#define VC_ALL_INSTANCES     0
#define VC_FIRST_ATTRIBUTE	-1
#define VC_ALL_ATTRIBUTES	-1

#define VC_ALL_ELEMENTS		0
/*
 * Values for Visible field in Visual object
 */

#define VC_ALL_MODES			0xffffffff
#define VC_VISIBLE         		0x01
#define VC_VISUAL_ENABLE		0x01
#define VC_RMODE_POLYGONAL 		0x00
#define VC_RMODE_WIREFRAME 		0x02
#define VC_RMODE_SPARE1 		0x04
#define VC_RMODE_SPARE2 		0x06
#define VC_VISUAL_BILLBOARD		0x08
#define VC_VISUAL_NOVECTINTERSECT	0x10

#define VC_RMODE_MASK			0x06



#define VC_VISUALVIEW_MODE_MASK          0x03
#define VC_VISUALVIEW_RELATIVE_MODE_MASK 0x04

#define VC_VISUALVIEW_MODE_MONO          0x00
#define VC_VISUALVIEW_MODE_LEFT          0x01
#define VC_VISUALVIEW_MODE_RIGHT         0x02
#define VC_VISUALVIEW_RELATIVE_MODE_HEAD 0x00
#define VC_VISUALVIEW_RELATIVE_MODE_EYE  0x04
#define VC_VISUALVIEW_ENABLE             0x08


#define VC_VISUALRESOURCE_FOG_MASK		0x00070000
#define VC_VISUALRESOURCE_FOG_MODE_MASK		0x00000010
#define VC_VISUALRESOURCE_PHASE_MODE_MASK  	0x00003000
#define VC_VISUALRESOURCE_RENDERMODE_MASK  	0x00000001

#define VC_VISUALRESOURCE_MODE_POLYGONAL   	0x00000000
#define VC_VISUALRESOURCE_MODE_WIREFRAME   	0x00000001
#define VC_VISUALRESOURCE_MODE_STATISTICS  	0x00000002
#define VC_VISUALRESOURCE_MODE_TEXTURE     	0x00000004
#define VC_VISUALRESOURCE_MODE_SINGLE_BUF 	0x00000008
#define VC_VISUALRESOURCE_FOG_MODE_PIXEL	0x00000000
#define VC_VISUALRESOURCE_FOG_MODE_VERTEX	0x00000010
#define VC_VISUALRESOURCE_PHASE_MODE_LOCK  	0x00000000
#define VC_VISUALRESOURCE_PHASE_MODE_FLOAT 	0x00001000
#define VC_VISUALRESOURCE_PHASE_MODE_FREE  	0x00002000
#define VC_VISUALRESOURCE_PHASE_MODE_LIMIT 	0x00003000
#define VC_VISUALRESOURCE_ENABLE           	0x00008000
#define VC_VISUALRESOURCE_FOG_DISABLED		0x00000000
#define VC_VISUALRESOURCE_FOG_LINEAR		0x00010000
#define VC_VISUALRESOURCE_FOG_EXP		0x00020000
#define VC_VISUALRESOURCE_FOG_EXP_SQUARED	0x00030000
#define VC_VISUALRESOURCE_Z_CLEAR_ONLY		0x00080000



#define VC_NOT_PICKED	  3
#define VC_NOT_DROPPED    VC_NOT_PICKED
#define VC_FOUND_DEFAULT  2
#define VC_FOUND_EXPLICIT 1
#define VC_OK             0
#define VC_ERR		 -1
#define VC_NOT_FOUND     -1
#define VC_EXISTS        -2
#define VC_BAD_ARGS      -3
#define VC_BAD_ACTOR	 VL_BAD_ACTOR
/*
 * flags to VCAddInstance
 */
#define VC_ADD       0
#define VC_OVERRIDE  1
#define VC_FAIL      2

#define VC_X 0
#define VC_Y 1
#define VC_Z 2
#define VC_W 3

#define VC_MIN_X	0
#define VC_MIN_Y	1
#define VC_MIN_Z	2
#define VC_MAX_X	3
#define VC_MAX_Y	4
#define VC_MAX_Z	5

#define VC_BOUND_ROT_X	6
#define VC_BOUND_ROT_Y	7
#define VC_BOUND_ROT_Z	8

#define VC_BOUND_SIZE	9


#define VC_MIN_PITCH	0
#define VC_MIN_YAW	1
#define VC_MIN_ROLL	2
#define VC_MAX_PITCH	3
#define VC_MAX_YAW	4
#define VC_MAX_ROLL	5

#define VC_RADIUS	3

#define VC_CONSTRAIN_ENABLE	0x80000000
#define VC_CONSTRAIN_MODE_MASK	0x7fffffff

#define VC_CONSTRAIN_NORMAL     0
#define VC_CONSTRAIN_HINGE_X	1
#define VC_CONSTRAIN_HINGE_Y	2
#define VC_CONSTRAIN_HINGE_Z	3



#define VC_PICK_CONSTRAINED		0x00000000
#define VC_PICK_NON_CONSTRAINED		0x00000001
#define VC_PICK_DROP			0x00000002
#define VC_PICK_IDLE			0x00000003

#define VC_PICK_COMMAND_MASK		0x0000000f


/*
 * Mice input port types
 */
#define VC_SERIAL   1
#define VC_PARALLEL 2
#define VC_PIO      3

#define VC_PV100_MOUSE 		1
#define VC_PV200_MOUSE 		2
#define VC_LOGITECH_MOUSE	3
#define VC_SPACEBALL_MOUSE	4


#define VC_HOOK_ATTACH_MASK  0x0000000f
#define VC_HOOK_DETACH_MASK  0x000000f0

#define VC_ATTACH_ABSOLUTE   0x00000001
#define VC_ATTACH_RELATIVE   0x00000002
#define VC_DETACH_ABSOLUTE   0x00000010
#define VC_DETACH_RELATIVE   0x00000020

#define VC_LINK_LEAVE_POSITION			0x00000000
#define VC_LINK_ADJUST_POSITION			0x00000001
#define VC_LINK_QUIET				0x00000002
#define VC_UNLINK_LEAVE_POSITION		0x00000000
#define VC_UNLINK_ADJUST_POSITION		0x00000001
#define VC_UNLINK_QUIET				0x00000002
#define VC_UNLINK_DONT_FIX_PARENT_INTEREST	0x00000010

#define VC_LOCK_X_VAL     	0x00000001
#define VC_LOCK_Y_VAL     	0x00000002
#define VC_LOCK_Z_VAL     	0x00000004
#define VC_LOCK_X         	0x00000010
#define VC_LOCK_Y         	0x00000020
#define VC_LOCK_Z         	0x00000040
#define VC_LOCK_ROLL_VAL  	0x00000100
#define VC_LOCK_PITCH_VAL 	0x00000200
#define VC_LOCK_YAW_VAL   	0x00000400
#define VC_LOCK_ROLL      	0x00001000
#define VC_LOCK_PITCH     	0x00002000
#define VC_LOCK_YAW       	0x00004000
#define VC_LOCK_FIXED		0x00010000

/*
 * Body Values 
 */

#define VC_BODY_USE_ENTITY_TRANSLATION	0x00000001
#define VC_ALL_BODIES		-1

#define VC_BODY_FLY_ENABLED		0x00000001
#define VC_BODY_FLY_VERTICAL		0x00000002
#define VC_BODY_FLY_VERTICAL_ALWAYS	0x00000004
#define VC_BODY_FLY_FORWARD_SLOW	0x00000008
#define VC_BODY_FLY_FORWARD_FAST	0x00000010
#define VC_BODY_FLY_FORWARD_ACCELERATE	0x00000020
#define VC_BODY_FLY_BACKWARD_SLOW	0x00000040
#define VC_BODY_FLY_BACKWARD_FAST	0x00000080
#define VC_BODY_FLY_BACKWARD_ACCELERATE	0x00000100

#define VC_BODY_ROT_LEFT_SLOW		0x00000200
#define VC_BODY_ROT_LEFT_FAST		0x00000400
#define VC_BODY_ROT_LEFT_ACCELERATE	0x00000800
#define VC_BODY_ROT_RIGHT_SLOW		0x00001000
#define VC_BODY_ROT_RIGHT_FAST		0x00002000
#define VC_BODY_ROT_RIGHT_ACCELERATE	0x00004000

#define VC_BODY_FLY_LEFT_SLOW		0x00008000
#define VC_BODY_FLY_LEFT_FAST		0x00010000
#define VC_BODY_FLY_LEFT_ACCELERATE	0x00020000
#define VC_BODY_FLY_RIGHT_SLOW		0x00040000
#define VC_BODY_FLY_RIGHT_FAST		0x00080000
#define VC_BODY_FLY_RIGHT_ACCELERATE	0x00100000

#define VC_BODY_FLY_UP_SLOW		0x00200000
#define VC_BODY_FLY_UP_FAST		0x00400000
#define VC_BODY_FLY_UP_ACCELERATE	0x00800000
#define VC_BODY_FLY_DOWN_SLOW		0x01000000
#define VC_BODY_FLY_DOWN_FAST		0x02000000
#define VC_BODY_FLY_DOWN_ACCELERATE	0x04000000




/*
 * Flags for new VCActorInit call - MG, March 23, '94
 *
 */

#define VC_INIT_NOUSER	  0x001 /* Don't get user information   */
#define VC_INIT_NOCONFIG  0x002 /* Don't do actor configuration */

/*
 * Sensor Resource update Mode values
 */

#define VC_MODE_IMMEDIATE	1
#define VC_MODE_INDIRECT	2

/* 
 * VCObject Update Modes
 */

#define VC_REPORT_LOCAL_UPDATES		0x00000001
#define VC_REPORT_REMOTE_UPDATES	0x00000002

/* 
 * flags for VCPosition mode bit
 */

#define VC_DEAD_RECKON	0x00000001

/*
 * Flags passed into VCRelocateHandler & relocate functions
 */

#define VC_REPORT_ABSOLUTE_POSITION	0x00000000
#define VC_REPORT_RELATIVE_POSITION	0x00000001
#define VC_REPORT_DONT_DEAD_RECKON	0x00000002
#define VC_REPORT_DELAY_RELOCATE	0x00000004
#define VC_REPORT_POSITION_IN_ENTITY	0x00000010
#define VC_REPORT_ALL_ENTITIES		0x00000020

/*
 * Flags to VCDestruct
 */

#define VC_DESTRUCT_FORCE	0x00000001
#define VC_DESTRUCT_ATTRIBUTES	0x00000002
#define VC_DESTRUCT_CHILDREN	0x00000004

#define VC_RELOCATE_FIRST_REPORT 	0x00000001
#define VC_RELOCATE_ABSOLUTE		0x00000002
#define VC_RELOCATE_RELATIVE		0x00000004
#define VC_RELOCATE_LINKAGE_CHANGE	0x00000008

#define VC_HANDLED	0
#define VC_NOT_HANDLED	1

#define VC_COLLISION_ENABLE       	0x01
/*
* Don't know what to do with this
#define VC_COLLISION_SOLID        	0x02
*/
#define VC_COLLISION_HIERACHY_DISABLE	0x04
#define VC_COLLISION_PICKABLE     	0x08
#define VC_COLLISION_PICKING      	0x10
#define VC_COLLISION_QUIET        	0x20
#define VC_COLLISION_INV_QUIET        	0x40

#define VC_COLLISION_SIMPLE       	0x000
#define VC_COLLISION_RADIUS       	0x100
#define VC_COLLISION_GEOMETRY     	0x200
#define VC_COLLISION_BBOX         	0x300

#define VC_COLLISION_MODE_MASK		0x300

#define VC_COLLISION_BOUNDS_VALID 	0x400
#define VC_COLLISION_ZONE		0x800
#define VC_COLLISION_NO_POSITION	0x1000
#define VC_COLLISION_NO_VECTOR		0x2000
#define VC_COLLISION_NO_TIME		0x4000

#define VC_COLLISION_RETURN_MASK	0xf0000
#define VC_COLLISION_RETURN_NONE	0x00000
#define VC_COLLISION_RETURN_BBOX	0x10000
#define VC_COLLISION_RETURN_RADIUS	0x20000
#define VC_COLLISION_RETURN_VALID	0x100000
#define VC_ATTRIBUTE_MODE_DONT_CACHE	0x000
#define VC_ATTRIBUTE_MODE_CACHE		0x001

#define VC_AUDIORESOURCE_SPREADINGROLLOFF_VALID		0x00000010
#define VC_AUDIORESOURCE_ATMOSPHERICABSORPTION_VALID	0x00000020

#define VC_AUDIO_ENABLE		0x01
#define VC_AUDIO_ZONED		0x02
#define VC_AUDIO_SPATIAL_OFF	0x04

#define VC_AUDIO_PRIORITY_LOCKED	-1
#define VC_AUDIO_MAX_PRIORITY		127


#define VC_SENSOR_ENABLE		0x00000001
#define VC_SENSOR_MODE_RELATIVE		0x00000002
#define VC_SENSOR_FILTER_ENABLE		0x00000004
#define VC_SENSOR_POSITION_SHARED	0x00000008
#define VC_SENSOR_REPORT_MASK		0x000000f0
#define VC_SENSOR_REPORT_NORMAL		0x00000010
#define VC_SENSOR_REPORT_INTERPOLATE	0x00000020
#define VC_SENSOR_REPORT_DEADRECKON_1	0x00000030
#define VC_SENSOR_REPORT_DEADRECKON_2	0x00000040
#define VC_SENSOR_REPORT_ENABLE		0x00000100

#define VC_MATERIAL_ENABLE		0x00000001

/* 
 * Value for texture mode
 */

#define VC_TEXTURE_ENABLE		0x00000001

/*
 * Values fot texture minify field
 */

#define VC_TEXTURE_MIN_POINT_SAMPLED         0x01
#define VC_TEXTURE_MIN_BILINEAR              0x02
#define VC_TEXTURE_MIN_TRILINEAR             0x03
#define VC_TEXTURE_MIN_MIP_MAP_POINT_SAMPLED 0x04
#define VC_TEXTURE_MIN_MIP_MAP_LINEAR        0x05
#define VC_TEXTURE_MIN_MIP_MAP_BILINEAR      0x06
#define VC_TEXTURE_MIN_MIP_MAP_TRILINEAR     0x07
#define VC_TEXTURE_MIN_MIP_MAP_QUADLINEAR    0x08

/*
 * Values fot texture magnify field
 */

#define VC_TEXTURE_MAG_POINT_SAMPLED         0x01
#define VC_TEXTURE_MAG_BILINEAR              0x02
#define VC_TEXTURE_MAG_TRILINEAR             0x03
#define VC_TEXTURE_MAG_BICUBIC               0x04
#define VC_TEXTURE_MAG_SHARPEN               0x05

/*
 * Values fot texture alpha field
 */

#define VC_TEXTURE_ALPHA_BLEND     		0x01
#define VC_TEXTURE_ALPHA_CUT       		0x02
#define VC_TEXTURE_ALPHA_BLEND_CUT 		0x03

/*
 * Values fot texture wrapu/wrapv fields
 */

#define VC_TEXTURE_WRAP_REPEAT    		0x00
#define VC_TEXTURE_WRAP_CLAMP     		0x01
#define VC_TEXTURE_WRAP_SELECT    		0x02

/*
 * Values fot texture detailType field
 */
#define VC_TEXTURE_DETAIL_ADD      		0x01
#define VC_TEXTURE_DETAIL_MODULATE 		0x02



/*
 * Viz query status values
 */

#define VC_VISUALQUERY_OK			0x00000001
#define VC_VISUALQUERY_FAIL			0x00000002

#define VC_VISUALQUERY_MASK			0xffffff00

#define VC_VISUALQUERY_NO_SUBJECT		0x00000100
#define VC_VISUALQUERY_NOT_FOUND		0x00000200

/*
 * Viz query modes
 */

#define VC_VISUALQUERY_OFF			0x00000000
#define VC_VISUALQUERY_MATERIAL_NAMES		0x00000001
#define VC_VISUALQUERY_TEXTURE_NAMES		0x00000002
#define VC_VISUALQUERY_RAMP_NAMES		0x00000003
#define VC_VISUALQUERY_LOD_NAMES		0x00000004
#define VC_VISUALQUERY_PATCH_NAMES		0x00000005
#define VC_VISUALQUERY_MATERIAL			0x00000006
#define VC_VISUALQUERY_TEXTURE			0x00000007
#define VC_VISUALQUERY_LOD			0x00000008

#define VC_VECTORINTERSECT_ENABLE		0x00000001
#define VC_VECTORINTERSECT_REPORT_CONTINUOUS	0x00000002
#define VC_VECTORINTERSECT_REPORT_RELATIVE 	0x00000004

#define VC_VISUALEFFECT_ENABLE 			0x0001
#define VC_VISUALEFFECT_MODE_MASK         	0x0ff0
#define VC_VISUALEFFECT_MODE_EXPLOSION    	0x0010


#define VC_VERBOSE 				0x00010000
#define VC_VERBOSE_MATSPLIT			0x00020000
#define VC_ZONE_ALL_ACTORS			-1
#define VC_ZONE_VISUAL				0x00000001
#define VC_ZONE_COLLIDE				0x00000002
#define VC_ZONE_PHYSICS				0x00000004
#define VC_ZONE_AUDIO				0x00000008
#define VC_ZONE_BODY				0x00000010

#define VC_ZONE_ENABLE_MASK			0x0000000F
#define VC_ZONE_ENABLED				0x00000000
#define VC_ZONE_DISABLED			0x00000001

/*
 * turn on things in a VCDynamics
 */
#define VC_DYNAMICS_ENABLE			0x00000001
#define VC_DYNAMICS_INERTIA_MASK              	0x6
#define VC_DYNAMICS_INERTIA_POINT_MASS        	0x2
#define VC_DYNAMICS_INERTIA_DISTRIBUTED_MASS  	0x4

#define VC_DYNAMICS_BOUNCE_MASK			0x00000018
#define VC_DYNAMICS_BOUNCE_DISBALED		0
#define VC_DYNAMICS_BOUNCE_SIMPLE		0x00000008
#define VC_DYNAMICS_BOUNCE_COMPLEX		0x00000010

#define VC_DYNAMICS_GRAVITATIONAL_MASS  	0x00000020


/*
 * indecies into arrays of
 * values from an inertial tensor
 */
#define VC_I_XX 				0
#define VC_I_YY 				1
#define VC_I_ZZ 				2
#define VC_I_XY 				3
#define VC_I_YZ 				4
#define VC_I_XZ 				5

/*
 * turn on a VCForce as a force or pure torque (mutually exclusive).
 * define whether it acts in local coordinante space (default)
 * or world coordinate space.
 */
#define VC_FORCE_MODE_MASK 			0x00000003

#define VC_FORCE_FORCE     			0x00000001
#define VC_FORCE_TORQUE    			0x00000002
#define VC_FORCE_WCS       			0x00000004
/* 
 * enable a pseudo-gravitational field
 */
#define VC_PSEUDO_GRAVITY_ENABLE 		0x00000001

#define VC_LOD_ENABLE  				0x000000001
#define VC_LOD_DYNAMIC 				0x000000002

#define VC_GEOGROUP_ENABLE  			0x00000001
#define VC_GEOGROUP_DYNAMIC			0x00000002

#define VC_GEOGROUP_VERTEX_ONLY       		0x00000000
#define VC_GEOGROUP_VERTEX_NORMALS    		0x00000001
#define VC_GEOGROUP_VERTEX_RGBA       		0x00000002
#define VC_GEOGROUP_VERTEX_LUMINANCE  		0x00000004
#define VC_GEOGROUP_VERTEX_2D_TEXTURE 		0x00000008
#define VC_GEOGROUP_VERTEX_3D_TEXTURE 		0x00000010
#define VC_GEOGROUP_VERTEX_RADIUS     		0x00000020

#define VC_GEOGROUP_DRAWMODE_SOLID     		0x00000000
#define VC_GEOGROUP_DRAWMODE_WIREFRAME 		0x00000001
#define VC_GEOGROUP_DRAWMODE_DOTTED    		0x00000002

#define VC_GEOGROUP_LOCK_OFF 			0x00000000
#define VC_GEOGROUP_LOCK_ON  			0x00000001

#define VC_GEOMETRY_ENABLE    			0x00000040
#define VC_GEOMETRY_TYPE_MASK 			0x0000003f

#define VC_GEOMETRY_TYPE_TRISTRIP   		0x00000000
#define VC_GEOMETRY_TYPE_POLYSTRIP  		0x00000001
#define VC_GEOMETRY_TYPE_POLYGON    		0x00000002
#define VC_GEOMETRY_TYPE_LINE       		0x00000003
#define VC_GEOMETRY_TYPE_SPHERELIST 		0x00000004
#define VC_GEOMETRY_TYPE_PMESH      		0x00000005
#define VC_GEOMETRY_TYPE_TEXT       		0x00000006

#define VC_GEOMETRY_SPHERELIST_DICE_U       	0xfff00000
#define VC_GEOMETRY_SPHERELIST_DICE_U_SHIFT	20
#define VC_GEOMETRY_SPHERELIST_DICE_V       	0x000fff00
#define VC_GEOMETRY_SPHERELIST_DICE_V_SHIFT	8

#define VC_GEOMETRY_LINE_THICKNESS       	0x0000ff00
#define VC_GEOMETRY_LINE_THICKNESS_SHIFT 	8

#define VC_CONNECTION_PCOUNT_SHIFT		8
#define VC_CONNECTION_PCOUNT_MASK		0x0000ff00

#define VC_GROUP_START				0
#define VC_GROUP_END				1

#define VC_RAMP_ENABLE				0x00000001


#define VC_INPUTRESOURCE_ENABLE				0x00000001



#define VC_CACHEMODE_DEFAULT			0
#define VC_CACHEMODE_DO_CACHE			1
#define VC_CACHEMODE_DONT_CACHE			2


#define VC_DEBUG_HARCHY 			0x00020000
#define VC_DEBUG_HARCHY_EXTRA 			0x00040000
#define VC_DEBUG_RESOURCE			0x00080000
#define VC_DEBUG_ENTITY				0x00100000
#define VC_DEBUG_PICK				0x00200000
#define VC_DEBUG_BODY_TRAVERSE			0x00400000
#define VC_DEBUG_ATTRIBUTE			0x00800000
#define VC_DEBUG_INPUT				0x01000000
#define VC_DEBUG_TIMER				0x02000000
#define VC_DEBUG_BODY_RESOURCE			0x04000000

#if defined (_TRANSPUTER) || defined (_IRIX)
#define VCWARNING(x)  VC_Warn ( #x" at line %d of %s\n",__LINE__, __FILE__)

#else
#define VCWARNING(x) {int WARNING = #x; \
                      VC_Warn ( #x" at line %d of %s\n",__LINE__, __FILE__);}
#endif

#define VCAwaitEvent(a,m) {_VCDoneWaitEvent = 1;VLAwaitEvent(a,m); }


