2 Copyright (C) 1999-2007 id Software, Inc. and contributors.
\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
\r
5 This file is part of GtkRadiant.
\r
7 GtkRadiant is free software; you can redistribute it and/or modify
\r
8 it under the terms of the GNU General Public License as published by
\r
9 the Free Software Foundation; either version 2 of the License, or
\r
10 (at your option) any later version.
\r
12 GtkRadiant is distributed in the hope that it will be useful,
\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
15 GNU General Public License for more details.
\r
17 You should have received a copy of the GNU General Public License
\r
18 along with GtkRadiant; if not, write to the Free Software
\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
\r
29 //typedef float vec3_t[3];
\r
30 //typedef unsigned char byte;
\r
33 #define stricmp strcasecmp
\r
34 #define strcmpi strcasecmp
\r
37 typedef struct Placement_s
\r
45 typedef struct QDataJoint_s
\r
47 Placement_t placement;
\r
52 typedef struct ArrayedListNode_s
\r
57 } ArrayedListNode_t;
\r
59 #define ARRAYEDLISTNODE_NULL -1
\r
61 typedef struct JointAngles_s
\r
68 typedef struct JointAngles2_s
\r
76 #define MAX_MODELJOINTS 256
\r
77 #define MAX_MODELJOINTNODES 255
\r
79 extern JointAngles_t jointAngles[MAX_MODELJOINTS];
\r
80 extern JointAngles2_t jointAngles2[MAX_MODELJOINTS];
\r
82 extern ArrayedListNode_t jointAngleNodes[MAX_MODELJOINTNODES];
\r
84 // Skeletal structures enums
\r
91 // Raven Skeletal structures enums
\r
99 // Box Skeletal structures enums
\r
105 extern int numJointsForSkeleton[];
\r
106 extern char *RAVEN_SKEL_NAMES[];
\r
108 #define J_NEW_SKELETON 0x00001000
\r
109 #define J_YAW_CHANGED 0x00002000
\r
110 #define J_PITCH_CHANGED 0x00004000
\r
111 #define J_ROLL_CHANGED 0x00008000
\r
112 #define MAX_JOINTS 0x00000fff
\r
114 inline int GetFreeNode(ArrayedListNode_t *nodeArray, int max)
\r
115 { // 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
118 for(i = 0; i < max; ++i)
\r
120 if(!nodeArray[i].inUse)
\r
122 nodeArray[i].inUse = 1;
\r
131 inline void FreeNode(ArrayedListNode_t *nodeArray, int index)
\r
133 nodeArray[index].inUse = 0;
\r
136 int CreateSkeleton(int structure);
\r
137 void CreateSkeletonAtIndex(int structure, int index);
\r
138 void FreeSkeleton(int structure, int index);
\r
139 void SetJointAngle(int jointIndex, int angleIndex, float angle);
\r
140 float ModifyJointAngle(int jointIndex, int angleIndex, float deltaAngle);
\r
141 int ZeroJointAngle(int jointIndex, int angleIndex, float angVel);
\r
142 int ApplyAngVelToJoint(int jointIndex, int angleIndex, float angVel, float destAng);
\r