259 lines
5.8 KiB
C
259 lines
5.8 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 bCollisionSensor {
|
|
char name[32]; /* property name */
|
|
char materialName[32]; /* material */
|
|
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];
|
|
short mode;
|
|
short pad1;
|
|
int axisflag;
|
|
} bRaySensor;
|
|
|
|
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) */
|
|
int pad;
|
|
} bSensor;
|
|
|
|
typedef struct bJoystickSensor {
|
|
char name[32];
|
|
short type;
|
|
short pad;
|
|
int axis;
|
|
int axisf;
|
|
int button;
|
|
int buttonf;
|
|
int hat;
|
|
int hatf;
|
|
int precision;
|
|
} bJoystickSensor;
|
|
|
|
/* bMouseSensor->type: uses blender event defines */
|
|
|
|
/* 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
|
|
|
|
/* bMessageSensor->type */
|
|
#define SENS_MESG_MESG 0
|
|
#define SENS_MESG_PROP 1
|
|
|
|
/* 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
|
|
/* sensor->flag */
|
|
#define SENS_SHOW 1
|
|
#define SENS_DEL 2
|
|
#define SENS_NEW 4
|
|
#define SENS_NOT 8
|
|
#define SENS_VISIBLE 16
|
|
|
|
/* 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
|
|
|
|
/* 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
|
|
|
|
#define SENS_JOY_BUTTON 0
|
|
#define SENS_JOY_BUTTON_PRESSED 0
|
|
#define SENS_JOY_BUTTON_RELEASED 1
|
|
|
|
#define SENS_JOY_AXIS 1
|
|
#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
|
|
#define SENS_JOY_HAT_DIR 0
|
|
|
|
#endif
|
|
|