gtkradiant/tools/quake2/qdata_heretic2/qcommon/reference.h
2012-03-17 15:01:54 -05:00

124 lines
3.4 KiB
C

/*
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 REFERENCE_H
#define REFERENCE_H
#include "placement.h"
#define MAX_REFPOINTS 16
#define REF_MINCULLTIME 1.0
typedef struct Reference_s
{
int activecount;
Placement_t placement;
} Reference_t;
typedef struct LERPedReferences_s
{
int refType;
int *jointIDs;
float lastUpdate;
Reference_t references[MAX_REFPOINTS];
Reference_t oldReferences[MAX_REFPOINTS];
} LERPedReferences_t;
// Reference Types
enum {
REF_NULL = -1,
REF_CORVUS, //0
REF_INSECT, //1
REF_PRIESTESS, //2
REF_MORK, //3
NUM_REFERENCED //4
};
// Corvus Reference Points
enum {
CORVUS_LEFTHAND, //0
CORVUS_RIGHTHAND,
CORVUS_LEFTFOOT,
CORVUS_RIGHTFOOT,
CORVUS_STAFF,
CORVUS_BLADE,
CORVUS_HELL_HEAD,
NUM_REFERENCES_CORVUS //7
};
// Tchekrik Reference Points
enum {
INSECT_STAFF, //0
INSECT_SWORD,
INSECT_SPEAR,
INSECT_RIGHTFOOT,
INSECT_LEFTFOOT,
NUM_REFERENCES_INSECT //5
};
// High Priestess Reference Points
enum {
PRIESTESS_BACK, //0
PRIESTESS_STAFF,
PRIESTESS_LHAND,
PRIESTESS_RHAND,
PRIESTESS_RFOOT,
PRIESTESS_LFOOT,
NUM_REFERENCES_PRIESTESS //6
};
// Morcalavin Reference Points
enum
{
MORK_STAFFREF, //0
MORK_RFOOTREF, //1
MORK_LFOOTREF, //2
MORK_RHANDREF, //3
MORK_LHANDREF, //4
MORK_LEYEREF, //5
MORK_REYEREF, //6
NUM_REFERENCES_MORK //7
};
#define CORVUS_LIMBS_MASK ( ( 1 << CORVUS_LEFTHAND ) | ( 1 << CORVUS_RIGHTHAND ) | ( 1 << CORVUS_LEFTFOOT ) | ( 1 << CORVUS_RIGHTFOOT ) )
#define CORVUS_WEAPON_MASK ( ( 1 << CORVUS_STAFF ) | ( 1 << CORVUS_BLADE ) | ( 1 << CORVUS_HELL_HEAD ) )
#define CORVUS_MASK ( CORVUS_LIMBS_MASK | CORVUS_WEAPON_MASK )
#define INSECT_MASK ( ( 1 << INSECT_STAFF ) | ( 1 << INSECT_SWORD ) | ( 1 << INSECT_SPEAR ) | ( 1 << INSECT_RIGHTFOOT ) | ( 1 << INSECT_LEFTFOOT ) )
#define PRIESTESS_MASK ( ( 1 << PRIESTESS_BACK ) | ( 1 << PRIESTESS_STAFF ) | ( 1 << PRIESTESS_LHAND ) | ( 1 << PRIESTESS_RHAND ) | ( 1 << PRIESTESS_RFOOT ) | ( 1 << PRIESTESS_LFOOT ) )
#define MORK_MASK ( ( 1 << MORK_STAFFREF ) | ( 1 << MORK_RFOOTREF ) | ( 1 << MORK_LFOOTREF ) | ( 1 << MORK_RHANDREF ) | ( 1 << MORK_LHANDREF ) | ( 1 << MORK_LEYEREF ) | ( 1 << MORK_REYEREF ) )
extern char *referenceRootNames[];
extern int referenceRootNameOffsets[];
extern int numReferences[];
void EnableRefPoints( LERPedReferences_t *refInfo, int mask );
void DisableRefPoints( LERPedReferences_t *refInfo, int mask );
void InitReferenceMngr();
void ReleaseReferenceMngr();
LERPedReferences_t *LERPedReferences_new( int init_refType );
void LERPedReferences_delete( LERPedReferences_t *toDelete );
#endif