]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - tools/quake2/qdata_heretic2/qcommon/skeletons.h
ok
[xonotic/netradiant.git] / tools / quake2 / qdata_heretic2 / qcommon / skeletons.h
1 /*
2 Copyright (C) 1999-2006 Id Software, Inc. and contributors.
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
4
5 This file is part of GtkRadiant.
6
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 */
21
22 #include <stdlib.h> // for size_t
23 #include "arrayedlist.h"
24
25 #define JN_YAW_CHANGED          0x00000001
26 #define JN_PITCH_CHANGED        0x00000002
27 #define JN_ROLL_CHANGED         0x00000004
28
29 // Skeleton types
30 enum {
31         SKEL_NULL = -1,
32         SKEL_RAVEN = 0,
33         SKEL_BOX,
34         SKEL_BEETLE,
35         SKEL_ELFLORD,
36         SKEL_PLAGUE_ELF,
37         SKEL_CORVUS,
38         NUM_SKELETONS
39 };
40
41 // Raven Skeletal joints
42 enum {
43         RAVEN_LOWERBACK = 0,
44         RAVEN_UPPERBACK,
45         RAVEN_HEAD,
46         NUM_JOINTS_RAVEN
47 };
48
49 // Box Skeletal joints
50 enum {
51         BOX_CENTER = 0,
52         NUM_JOINTS_BOX
53 };
54
55 // Beetle Skeletal joints
56 enum {
57         BEETLE_NECK = 0,
58         BEETLE_HEAD,
59         NUM_JOINTS_BEETLE
60 };
61
62 // Elflord Skeletal joints
63 enum {
64         ELFLORD_,
65         ELFLORD__,
66         NUM_JOINTS_ELFLORD
67 };
68
69 // Plague Elf Skeletal joints
70 enum {
71         PLAGUE_ELF_LOWERBACK,
72         PLAGUE_ELF_UPPERBACK,
73         PLAGUE_ELF_HEAD,
74         NUM_JOINTS_PLAGUE_ELF
75 };
76
77 // Corvus Skeletal joints
78 enum {
79         CORVUS_LOWERBACK,
80         CORVUS_UPPERBACK,
81         CORVUS_HEAD,
82         NUM_JOINTS_CORVUS
83 };
84
85 #define NO_SWAP_FRAME -1
86 #define NULL_ROOT_JOINT -1
87
88 #define MAX_ARRAYED_SKELETAL_JOINTS 255 // has max of 65,535 (if this remains at 255, net code can be changed to reflect)
89 #define MAX_ARRAYED_JOINT_NODES (MAX_ARRAYED_SKELETAL_JOINTS - 1)
90
91 #define MAX_JOINTS_PER_SKELETON 8       // arbitrary small number
92 #define MAX_JOINT_NODES_PER_SKELETON (MAX_JOINTS_PER_SKELETON - 1)
93
94 extern char *skeletonRootNames[];
95 extern int skeletonRNameOffsets[];
96 extern char *skeletonJointNames[];
97 extern int skeletonNameOffsets[];
98 extern int numJointsInSkeleton[];
99 extern char *skeletonEffectorNames[];
100 extern int skeletonENameOffsets[];
101 extern int numNodesInSkeleton[];
102
103 typedef void (*CreateSkeleton_t)(void *skeletalJoints, size_t jointSize, struct ArrayedListNode_s *jointNodes, int rootIndex);
104
105 extern CreateSkeleton_t SkeletonCreators[NUM_SKELETONS];
106
107