+++ /dev/null
-/*
- 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
-
-#include "globaldefs.h"
-
-#ifdef _HERETIC2_
-#include "angles.h"
-#endif
-
-//typedef float vec3_t[3];
-//typedef unsigned char byte;
-
-#if !GDEF_OS_WINDOWS
-#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