326 lines
7.7 KiB
C
326 lines
7.7 KiB
C
/**
|
|
* blenlib/DNA_sensor_types.h (mar-2001 nzc)
|
|
*
|
|
* $Id$
|
|
*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
#ifndef DNA_SENSOR_TYPES_H
|
|
#define DNA_SENSOR_TYPES_H
|
|
|
|
struct Object;
|
|
struct Material;
|
|
|
|
/* ****************** SENSORS ********************* */
|
|
|
|
typedef struct bNearSensor {
|
|
char name[32];
|
|
float dist, resetdist;
|
|
int lastval, pad;
|
|
} bNearSensor;
|
|
|
|
/**
|
|
* Defines the settings of a mouse sensor.
|
|
*/
|
|
typedef struct bMouseSensor {
|
|
/**
|
|
* The type of key this sensor listens to.
|
|
*/
|
|
short type;
|
|
short flag;
|
|
short pad1;
|
|
short pad2;
|
|
} bMouseSensor;
|
|
|
|
typedef struct bTouchSensor {
|
|
char name[32];
|
|
struct Material *ma;
|
|
float dist, pad;
|
|
} bTouchSensor;
|
|
|
|
typedef struct bKeyboardSensor {
|
|
short key, qual;
|
|
short type, qual2;
|
|
/**
|
|
* Name of the target property
|
|
*/
|
|
char targetName[32];
|
|
/**
|
|
* Name of the toggle property
|
|
*/
|
|
char toggleName[32];
|
|
} bKeyboardSensor;
|
|
|
|
typedef struct bPropertySensor {
|
|
int type;
|
|
int pad;
|
|
char name[32];
|
|
char value[32];
|
|
char maxvalue[32];
|
|
} bPropertySensor;
|
|
|
|
typedef struct bActuatorSensor {
|
|
int type;
|
|
int pad;
|
|
char name[32];
|
|
} bActuatorSensor;
|
|
|
|
typedef struct bDelaySensor {
|
|
short delay;
|
|
short duration;
|
|
short flag;
|
|
short pad;
|
|
} bDelaySensor;
|
|
|
|
typedef struct bCollisionSensor {
|
|
char name[32]; /* property name */
|
|
char materialName[32]; /* material */
|
|
// struct Material *ma; // XXX remove materialName
|
|
short damptimer, damp;
|
|
short mode; /* flag to choose material or property */
|
|
short pad2;
|
|
} bCollisionSensor;
|
|
|
|
typedef struct bRadarSensor {
|
|
char name[32];
|
|
float angle;
|
|
float range;
|
|
short flag, axis;
|
|
} bRadarSensor;
|
|
|
|
typedef struct bRandomSensor {
|
|
char name[32];
|
|
int seed;
|
|
int delay;
|
|
} bRandomSensor;
|
|
|
|
typedef struct bRaySensor {
|
|
char name[32];
|
|
float range;
|
|
char propname[32];
|
|
char matname[32];
|
|
//struct Material *ma; // XXX remove materialName
|
|
short mode;
|
|
short pad1;
|
|
int axisflag;
|
|
} bRaySensor;
|
|
|
|
typedef struct bArmatureSensor {
|
|
char posechannel[32];
|
|
char constraint[32];
|
|
int type;
|
|
float value;
|
|
} bArmatureSensor;
|
|
|
|
typedef struct bMessageSensor {
|
|
/**
|
|
* (Possible future use) pointer to a single sender object
|
|
*/
|
|
struct Object *fromObject;
|
|
|
|
/**
|
|
* Can be used to filter on subjects like this
|
|
*/
|
|
char subject[32];
|
|
|
|
/**
|
|
* (Possible future use) body to filter on
|
|
*/
|
|
char body[32];
|
|
} bMessageSensor;
|
|
|
|
typedef struct bSensor {
|
|
struct bSensor *next, *prev;
|
|
/* pulse and freq are the bool toggle and frame count for pulse mode */
|
|
short type, otype, flag, pulse;
|
|
short freq, totlinks, pad1, pad2;
|
|
char name[32];
|
|
void *data;
|
|
|
|
struct bController **links;
|
|
|
|
struct Object *ob;
|
|
|
|
/* just add here, to avoid align errors... */
|
|
short invert; /* Whether or not to invert the output. */
|
|
short level; /* Whether the sensor is level base (edge by default) */
|
|
short tap;
|
|
short pad;
|
|
} bSensor;
|
|
|
|
typedef struct bJoystickSensor {
|
|
char name[32];
|
|
char type;
|
|
char joyindex;
|
|
short flag;
|
|
short axis;
|
|
short axis_single;
|
|
int axisf;
|
|
int button;
|
|
int hat;
|
|
int hatf;
|
|
int precision;
|
|
} bJoystickSensor;
|
|
|
|
/* bMouseSensor->type: uses blender event defines */
|
|
|
|
/* bMouseSensor->flag: only pulse for now */
|
|
#define SENS_MOUSE_FOCUS_PULSE 1
|
|
|
|
/* propertysensor->type */
|
|
#define SENS_PROP_EQUAL 0
|
|
#define SENS_PROP_NEQUAL 1
|
|
#define SENS_PROP_INTERVAL 2
|
|
#define SENS_PROP_CHANGED 3
|
|
#define SENS_PROP_EXPRESSION 4
|
|
|
|
/* raysensor->axisflag */
|
|
/* flip x and y to make y default!!! */
|
|
#define SENS_RAY_X_AXIS 1
|
|
#define SENS_RAY_Y_AXIS 0
|
|
#define SENS_RAY_Z_AXIS 2
|
|
#define SENS_RAY_NEG_X_AXIS 3
|
|
#define SENS_RAY_NEG_Y_AXIS 4
|
|
#define SENS_RAY_NEG_Z_AXIS 5
|
|
//#define SENS_RAY_NEGATIVE_AXIS 1
|
|
|
|
/* bRadarSensor->axis */
|
|
#define SENS_RADAR_X_AXIS 0
|
|
#define SENS_RADAR_Y_AXIS 1
|
|
#define SENS_RADAR_Z_AXIS 2
|
|
#define SENS_RADAR_NEG_X_AXIS 3
|
|
#define SENS_RADAR_NEG_Y_AXIS 4
|
|
#define SENS_RADAR_NEG_Z_AXIS 5
|
|
|
|
/* bMessageSensor->type */
|
|
#define SENS_MESG_MESG 0
|
|
#define SENS_MESG_PROP 1
|
|
|
|
/* bArmatureSensor->type */
|
|
#define SENS_ARM_STATE_CHANGED 0
|
|
#define SENS_ARM_LIN_ERROR_BELOW 1
|
|
#define SENS_ARM_LIN_ERROR_ABOVE 2
|
|
#define SENS_ARM_ROT_ERROR_BELOW 3
|
|
#define SENS_ARM_ROT_ERROR_ABOVE 4
|
|
/* update this when adding new type */
|
|
#define SENS_ARM_MAXTYPE 4
|
|
|
|
/* sensor->type */
|
|
#define SENS_ALWAYS 0
|
|
#define SENS_TOUCH 1
|
|
#define SENS_NEAR 2
|
|
#define SENS_KEYBOARD 3
|
|
#define SENS_PROPERTY 4
|
|
#define SENS_MOUSE 5
|
|
#define SENS_COLLISION 6
|
|
#define SENS_RADAR 7
|
|
#define SENS_RANDOM 8
|
|
#define SENS_RAY 9
|
|
#define SENS_MESSAGE 10
|
|
#define SENS_JOYSTICK 11
|
|
#define SENS_ACTUATOR 12
|
|
#define SENS_DELAY 13
|
|
#define SENS_ARMATURE 14
|
|
/* sensor->flag */
|
|
#define SENS_SHOW 1
|
|
#define SENS_DEL 2
|
|
#define SENS_NEW 4
|
|
#define SENS_NOT 8
|
|
#define SENS_VISIBLE 16
|
|
#define SENS_PIN 32
|
|
|
|
/* sensor->pulse */
|
|
#define SENS_PULSE_CONT 0
|
|
#define SENS_PULSE_REPEAT 1
|
|
//#define SENS_PULSE_ONCE 2
|
|
#define SENS_NEG_PULSE_MODE 4
|
|
|
|
/* sensor->suppress */
|
|
#define SENS_SUPPRESS_POSITIVE (1 << 0)
|
|
#define SENS_SUPPRESS_NEGATIVE (1 << 1)
|
|
|
|
/* collision, ray sensor modes: */
|
|
/* A little bit fake: when property is active, the first bit is
|
|
* reset. Bite me :) So we don't actually use it, so we comment it out
|
|
* ... The reason for this is that we need to be backward compatible,
|
|
* and have a proper default value for this thing.
|
|
* */
|
|
#define SENS_COLLISION_PROPERTY 0
|
|
#define SENS_COLLISION_MATERIAL 1
|
|
#define SENS_COLLISION_PULSE 2
|
|
|
|
/* ray specific mode */
|
|
/* X-Ray means that the ray will traverse objects that don't have the property/material */
|
|
#define SENS_RAY_PROPERTY 0
|
|
#define SENS_RAY_MATERIAL 1
|
|
#define SENS_RAY_XRAY 2
|
|
|
|
/* Some stuff for the mouse sensor Type: */
|
|
#define BL_SENS_MOUSE_LEFT_BUTTON 1
|
|
#define BL_SENS_MOUSE_MIDDLE_BUTTON 2
|
|
#define BL_SENS_MOUSE_RIGHT_BUTTON 4
|
|
#define BL_SENS_MOUSE_WHEEL_UP 5
|
|
#define BL_SENS_MOUSE_WHEEL_DOWN 6
|
|
#define BL_SENS_MOUSE_MOVEMENT 8
|
|
#define BL_SENS_MOUSE_MOUSEOVER 16
|
|
#define BL_SENS_MOUSE_MOUSEOVER_ANY 32
|
|
|
|
/* Joystick sensor - sorted by axis types */
|
|
#define SENS_JOY_ANY_EVENT 1
|
|
|
|
#define SENS_JOY_BUTTON 0 /* axis type */
|
|
#define SENS_JOY_BUTTON_PRESSED 0
|
|
#define SENS_JOY_BUTTON_RELEASED 1
|
|
|
|
#define SENS_JOY_AXIS 1 /* axis type */
|
|
#define SENS_JOY_X_AXIS 0
|
|
#define SENS_JOY_Y_AXIS 1
|
|
#define SENS_JOY_NEG_X_AXIS 2
|
|
#define SENS_JOY_NEG_Y_AXIS 3
|
|
#define SENS_JOY_PRECISION 4
|
|
|
|
#define SENS_JOY_HAT 2 /* axis type */
|
|
#define SENS_JOY_HAT_DIR 0
|
|
#define SENS_JOY_HAT_UP 1
|
|
#define SENS_JOY_HAT_RIGHT 2
|
|
#define SENS_JOY_HAT_DOWN 4
|
|
#define SENS_JOY_HAT_LEFT 8
|
|
|
|
#define SENS_JOY_HAT_UP_RIGHT SENS_JOY_HAT_UP | SENS_JOY_HAT_RIGHT
|
|
#define SENS_JOY_HAT_DOWN_RIGHT SENS_JOY_HAT_DOWN | SENS_JOY_HAT_RIGHT
|
|
#define SENS_JOY_HAT_UP_LEFT SENS_JOY_HAT_UP | SENS_JOY_HAT_LEFT
|
|
#define SENS_JOY_HAT_DOWN_LEFT SENS_JOY_HAT_DOWN | SENS_JOY_HAT_LEFT
|
|
|
|
|
|
#define SENS_JOY_AXIS_SINGLE 3 /* axis type */
|
|
|
|
|
|
#define SENS_DELAY_REPEAT 1
|
|
// should match JOYINDEX_MAX in SCA_JoystickDefines.h */
|
|
#define SENS_JOY_MAXINDEX 8
|
|
#endif
|
|
|