gtkradiant/tools/quake2/qdata_heretic2/qcommon/reference.h
TTimo 9998050654 set eol-style
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@183 8a3a26a2-13c4-0310-b231-cf6edde360e5
2007-11-04 03:34:51 +00:00

126 lines
3.2 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