-/*\r
-Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
-For a list of contributors, see the accompanying CONTRIBUTORS file.\r
-\r
-This file is part of GtkRadiant.\r
-\r
-GtkRadiant is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation; either version 2 of the License, or\r
-(at your option) any later version.\r
-\r
-GtkRadiant is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with GtkRadiant; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\r
-*/\r
-\r
-#ifndef JOINTS_H\r
-#define JOINTS_H\r
-\r
-#ifdef _HERETIC2_\r
-#include "angles.h"\r
-#endif\r
-\r
-//typedef float vec3_t[3];\r
-//typedef unsigned char byte;\r
-\r
-#ifndef _WIN32\r
-#define stricmp strcasecmp\r
-#define strcmpi strcasecmp\r
-#endif\r
-\r
-typedef struct Placement_s\r
-{\r
- vec3_t origin;\r
- vec3_t direction;\r
- vec3_t up;\r
-} Placement_t;\r
-\r
-#if 1\r
-typedef struct QDataJoint_s\r
-{\r
- Placement_t placement;\r
- vec3_t rotation;\r
-} QDataJoint_t;\r
-#endif\r
-\r
-typedef struct ArrayedListNode_s\r
-{\r
- int data;\r
- int next;\r
- int inUse;\r
-} ArrayedListNode_t;\r
-\r
-#define ARRAYEDLISTNODE_NULL -1\r
-\r
-typedef struct JointAngles_s\r
-{\r
- float angles[3];\r
- int children;\r
- int created;\r
-} JointAngles_t;\r
-\r
-typedef struct JointAngles2_s\r
-{\r
- float angles[3];\r
- int children;\r
- int changed[3];\r
- int inUse;\r
-} JointAngles2_t;\r
-\r
-#define MAX_MODELJOINTS 256\r
-#define MAX_MODELJOINTNODES 255\r
-\r
-extern JointAngles_t jointAngles[MAX_MODELJOINTS];\r
-extern JointAngles2_t jointAngles2[MAX_MODELJOINTS];\r
-\r
-extern ArrayedListNode_t jointAngleNodes[MAX_MODELJOINTNODES];\r
-\r
-// Skeletal structures enums\r
-enum {\r
- SKEL_RAVEN = 0,\r
- SKEL_BOX,\r
- NUM_SKELETONS\r
-};\r
-\r
-// Raven Skeletal structures enums\r
-enum {\r
- RAVEN_WAIST1 = 0,\r
- RAVEN_WAIST2 = 1,\r
- RAVEN_HEAD = 2,\r
- NUM_JOINTS_RAVEN\r
-};\r
-\r
-// Box Skeletal structures enums\r
-enum {\r
- BOX_CENTER = 0,\r
- NUM_JOINTS_BOX\r
-};\r
-\r
-extern int numJointsForSkeleton[];\r
-extern char *RAVEN_SKEL_NAMES[];\r
-\r
-#define J_NEW_SKELETON 0x00001000\r
-#define J_YAW_CHANGED 0x00002000\r
-#define J_PITCH_CHANGED 0x00004000\r
-#define J_ROLL_CHANGED 0x00008000\r
-#define MAX_JOINTS 0x00000fff\r
-/*\r
-inline int GetFreeNode(ArrayedListNode_t *nodeArray, int max)\r
-{ // yeah, I know this is a sucky, inefficient way to do this, but I didn't feel like taking the time to write a real resource manager in C\r
- int i;\r
-\r
- for(i = 0; i < max; ++i)\r
- {\r
- if(!nodeArray[i].inUse)\r
- {\r
- nodeArray[i].inUse = 1;\r
- return i;\r
- }\r
- }\r
-\r
- assert(0);\r
- return -1;\r
-}\r
-\r
-inline void FreeNode(ArrayedListNode_t *nodeArray, int index)\r
-{\r
- nodeArray[index].inUse = 0;\r
-}\r
-*/\r
-int CreateSkeleton(int structure);\r
-void CreateSkeletonAtIndex(int structure, int index);\r
-void FreeSkeleton(int structure, int index);\r
-void SetJointAngle(int jointIndex, int angleIndex, float angle);\r
-float ModifyJointAngle(int jointIndex, int angleIndex, float deltaAngle);\r
-int ZeroJointAngle(int jointIndex, int angleIndex, float angVel);\r
-int ApplyAngVelToJoint(int jointIndex, int angleIndex, float angVel, float destAng);\r
-\r
-#endif\r
+/*
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+This file is part of GtkRadiant.
+
+GtkRadiant 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.
+
+GtkRadiant 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 GtkRadiant; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef JOINTS_H
+#define JOINTS_H
+
+#ifdef _HERETIC2_
+#include "angles.h"
+#endif
+
+//typedef float vec3_t[3];
+//typedef unsigned char byte;
+
+#ifndef _WIN32
+#define stricmp strcasecmp
+#define strcmpi strcasecmp
+#endif
+
+typedef struct Placement_s
+{
+ vec3_t origin;
+ vec3_t direction;
+ vec3_t up;
+} Placement_t;
+
+#if 1
+typedef struct QDataJoint_s
+{
+ Placement_t placement;
+ vec3_t rotation;
+} QDataJoint_t;
+#endif
+
+typedef struct ArrayedListNode_s
+{
+ int data;
+ int next;
+ int inUse;
+} ArrayedListNode_t;
+
+#define ARRAYEDLISTNODE_NULL -1
+
+typedef struct JointAngles_s
+{
+ float angles[3];
+ int children;
+ int created;
+} JointAngles_t;
+
+typedef struct JointAngles2_s
+{
+ float angles[3];
+ int children;
+ int changed[3];
+ int inUse;
+} JointAngles2_t;
+
+#define MAX_MODELJOINTS 256
+#define MAX_MODELJOINTNODES 255
+
+extern JointAngles_t jointAngles[MAX_MODELJOINTS];
+extern JointAngles2_t jointAngles2[MAX_MODELJOINTS];
+
+extern ArrayedListNode_t jointAngleNodes[MAX_MODELJOINTNODES];
+
+// Skeletal structures enums
+enum {
+ SKEL_RAVEN = 0,
+ SKEL_BOX,
+ NUM_SKELETONS
+};
+
+// Raven Skeletal structures enums
+enum {
+ RAVEN_WAIST1 = 0,
+ RAVEN_WAIST2 = 1,
+ RAVEN_HEAD = 2,
+ NUM_JOINTS_RAVEN
+};
+
+// Box Skeletal structures enums
+enum {
+ BOX_CENTER = 0,
+ NUM_JOINTS_BOX
+};
+
+extern int numJointsForSkeleton[];
+extern char *RAVEN_SKEL_NAMES[];
+
+#define J_NEW_SKELETON 0x00001000
+#define J_YAW_CHANGED 0x00002000
+#define J_PITCH_CHANGED 0x00004000
+#define J_ROLL_CHANGED 0x00008000
+#define MAX_JOINTS 0x00000fff
+/*
+inline int GetFreeNode(ArrayedListNode_t *nodeArray, int max)
+{ // yeah, I know this is a sucky, inefficient way to do this, but I didn't feel like taking the time to write a real resource manager in C
+ int i;
+
+ for(i = 0; i < max; ++i)
+ {
+ if(!nodeArray[i].inUse)
+ {
+ nodeArray[i].inUse = 1;
+ return i;
+ }
+ }
+
+ assert(0);
+ return -1;
+}
+
+inline void FreeNode(ArrayedListNode_t *nodeArray, int index)
+{
+ nodeArray[index].inUse = 0;
+}
+*/
+int CreateSkeleton(int structure);
+void CreateSkeletonAtIndex(int structure, int index);
+void FreeSkeleton(int structure, int index);
+void SetJointAngle(int jointIndex, int angleIndex, float angle);
+float ModifyJointAngle(int jointIndex, int angleIndex, float deltaAngle);
+int ZeroJointAngle(int jointIndex, int angleIndex, float angVel);
+int ApplyAngVelToJoint(int jointIndex, int angleIndex, float angVel, float destAng);
+
+#endif