/** * 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 /* 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_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 #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_AXIS_SINGLE 3 /* axis type */ #define SENS_DELAY_REPEAT 1 // should match JOYINDEX_MAX in SCA_JoystickDefines.h */ #define SENS_JOY_MAXINDEX 8 #endif