/* Copyright (C) 1999-2006 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 */ #include #include "reference.h" #include "arrayedlist.h" #include "resourcemanager.h" #include "skeletons.h" char *referenceRootNames[] = { "elf_Lhandroot",//0 "elf_Rhandroot", "elf_Rfootroot", "elf_Lfootroot", "elf_Bstaffroot", "elf_bladeroot", "elf_hellroot", "StaffBone",//7 "SwordBone", "SpearBone", "RFootBone", "LFootBone", "hp_backroot",//12 "hp_staffroot", "hp_lhandroot", "hp_rhandroot", "hp_rfootroot", "hp_lfootroot", "staffroot",//18 "rfootroot", "lfootroot", "rhandroot", "lhandroot", "leyeroot", "reyeroot" }; int referenceRootNameOffsets[NUM_REFERENCED] = { 0, // CORVUS 7, // INSECT 12, // HIGH PRIESTESS 18, // MORCALAVIN }; int numReferences[NUM_REFERENCED] = { NUM_REFERENCES_CORVUS, NUM_REFERENCES_INSECT, NUM_REFERENCES_PRIESTESS, NUM_REFERENCES_MORK, }; int corvusJointIDs[NUM_REFERENCES_CORVUS] = { CORVUS_UPPERBACK, CORVUS_UPPERBACK, -1, -1, CORVUS_UPPERBACK, CORVUS_UPPERBACK, CORVUS_UPPERBACK, }; int *jointIDs[NUM_REFERENCED] = { corvusJointIDs, }; static ResourceManager_t ReferenceMngr; void InitReferenceMngr() { #define REFERENCE_BLOCK_SIZE 8 char *dummystr = NULL; ResMngr_Con(&ReferenceMngr, sizeof(LERPedReferences_t), REFERENCE_BLOCK_SIZE, dummystr); } void ReleaseReferenceMngr() { ResMngr_Des(&ReferenceMngr); } LERPedReferences_t *LERPedReferences_new(int init_refType) { LERPedReferences_t *newRefs; newRefs = ResMngr_AllocateResource(&ReferenceMngr, sizeof(*newRefs)); newRefs->refType = init_refType; newRefs->jointIDs = jointIDs[init_refType]; newRefs->lastUpdate = -(REF_MINCULLTIME*2.0); memset(newRefs->references, 0, MAX_REFPOINTS*sizeof(Reference_t)); memset(newRefs->oldReferences, 0, MAX_REFPOINTS*sizeof(Reference_t)); return newRefs; } void LERPedReferences_delete(LERPedReferences_t *toDelete) { ResMngr_DeallocateResource(&ReferenceMngr, toDelete, sizeof(*toDelete)); } // end