mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Formatted TIKI source files
This commit is contained in:
parent
dcbb39d640
commit
17af75a9bb
30 changed files with 3767 additions and 4086 deletions
|
@ -1,7 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2008 Leszek Godlewski
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -21,8 +20,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifndef __TIKI_H__
|
||||
#define __TIKI_H__
|
||||
#pragma once
|
||||
|
||||
#include "q_shared.h"
|
||||
|
||||
|
@ -30,86 +28,86 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#ifdef __cplusplus
|
||||
class Archiver;
|
||||
#include "../qcommon/mem_blockalloc.h"
|
||||
#include "../qcommon/con_set.h"
|
||||
#include "../qcommon/str.h"
|
||||
# include "../qcommon/mem_blockalloc.h"
|
||||
# include "../qcommon/con_set.h"
|
||||
# include "../qcommon/str.h"
|
||||
#endif
|
||||
|
||||
typedef struct AliasList_s AliasList_t;
|
||||
typedef struct AliasList_s AliasList_t;
|
||||
typedef struct AliasListNode_s AliasListNode_t;
|
||||
typedef struct msg_s msg_t;
|
||||
typedef struct msg_s msg_t;
|
||||
|
||||
typedef struct {
|
||||
int indexes[ 3 ];
|
||||
int indexes[3];
|
||||
} tikiTriangle_t;
|
||||
|
||||
typedef struct {
|
||||
float st[ 2 ];
|
||||
float st[2];
|
||||
} tikiSt_t;
|
||||
|
||||
typedef struct {
|
||||
short unsigned int xyz[ 3 ];
|
||||
short int normal;
|
||||
short unsigned int xyz[3];
|
||||
short int normal;
|
||||
} tikiXyzNormal_t;
|
||||
|
||||
typedef struct {
|
||||
float origin[ 3 ];
|
||||
float axis[ 3 ][ 3 ];
|
||||
float origin[3];
|
||||
float axis[3][3];
|
||||
} tikiTagData_t;
|
||||
|
||||
typedef struct {
|
||||
char name[ 64 ];
|
||||
char name[64];
|
||||
} tikiTag_t;
|
||||
|
||||
typedef struct {
|
||||
qboolean valid;
|
||||
int surface;
|
||||
vec3_t position;
|
||||
vec3_t normal;
|
||||
float damage_multiplier;
|
||||
qboolean valid;
|
||||
int surface;
|
||||
vec3_t position;
|
||||
vec3_t normal;
|
||||
float damage_multiplier;
|
||||
} tikimdl_intersection_t;
|
||||
|
||||
typedef struct {
|
||||
int indexes[ 3 ];
|
||||
int indexes[3];
|
||||
} skelTriangle_t;
|
||||
|
||||
typedef struct dtikicmd_s {
|
||||
int frame_num;
|
||||
int num_args;
|
||||
char **args;
|
||||
int frame_num;
|
||||
int num_args;
|
||||
char **args;
|
||||
} dtikicmd_t;
|
||||
|
||||
typedef struct {
|
||||
int frame_num;
|
||||
int num_args;
|
||||
char **args;
|
||||
char location[ 256 ];
|
||||
int frame_num;
|
||||
int num_args;
|
||||
char **args;
|
||||
char location[256];
|
||||
} dloadframecmd_t;
|
||||
|
||||
typedef struct {
|
||||
int num_args;
|
||||
char **args;
|
||||
int num_args;
|
||||
char **args;
|
||||
} dloadinitcmd_t;
|
||||
|
||||
typedef struct {
|
||||
char name[ 32 ];
|
||||
char shader[ 4 ][ 64 ];
|
||||
int numskins;
|
||||
int flags;
|
||||
float damage_multiplier;
|
||||
char name[32];
|
||||
char shader[4][64];
|
||||
int numskins;
|
||||
int flags;
|
||||
float damage_multiplier;
|
||||
} dloadsurface_t;
|
||||
|
||||
typedef struct {
|
||||
char *alias;
|
||||
char name[ 128 ];
|
||||
char location[ 256 ];
|
||||
float weight;
|
||||
float blendtime;
|
||||
int flags;
|
||||
int num_client_cmds;
|
||||
int num_server_cmds;
|
||||
dloadframecmd_t *loadservercmds[ 32 ];
|
||||
dloadframecmd_t *loadclientcmds[ 128 ];
|
||||
char *alias;
|
||||
char name[128];
|
||||
char location[256];
|
||||
float weight;
|
||||
float blendtime;
|
||||
int flags;
|
||||
int num_client_cmds;
|
||||
int num_server_cmds;
|
||||
dloadframecmd_t *loadservercmds[32];
|
||||
dloadframecmd_t *loadclientcmds[128];
|
||||
} dloadanim_t;
|
||||
|
||||
typedef struct dloaddef_s dloaddef_t;
|
||||
|
@ -119,26 +117,26 @@ typedef struct dloaddef_s dloaddef_t;
|
|||
#ifdef __cplusplus
|
||||
|
||||
typedef struct dloaddef_s {
|
||||
const char *path;
|
||||
class TikiScript tikiFile;
|
||||
const char *path;
|
||||
class TikiScript tikiFile;
|
||||
|
||||
dloadanim_t *loadanims[ 4095 ];
|
||||
dloadinitcmd_t *loadserverinitcmds[ 160 ];
|
||||
dloadinitcmd_t *loadclientinitcmds[ 160 ];
|
||||
dloadanim_t *loadanims[4095];
|
||||
dloadinitcmd_t *loadserverinitcmds[160];
|
||||
dloadinitcmd_t *loadclientinitcmds[160];
|
||||
|
||||
int skelIndex_ld[ 12 ];
|
||||
int numanims;
|
||||
int numserverinitcmds;
|
||||
int numclientinitcmds;
|
||||
int skelIndex_ld[12];
|
||||
int numanims;
|
||||
int numserverinitcmds;
|
||||
int numclientinitcmds;
|
||||
|
||||
char headmodels[ 4096 ];
|
||||
char headskins[ 4096 ];
|
||||
qboolean bIsCharacter;
|
||||
char headmodels[4096];
|
||||
char headskins[4096];
|
||||
qboolean bIsCharacter;
|
||||
|
||||
struct msg_s *modelBuf;
|
||||
unsigned char modelData[ 8192 ];
|
||||
struct msg_s *modelBuf;
|
||||
unsigned char modelData[8192];
|
||||
|
||||
qboolean bInIncludesSection;
|
||||
qboolean bInIncludesSection;
|
||||
} dloaddef_t;
|
||||
|
||||
#endif
|
||||
|
@ -158,5 +156,3 @@ typedef struct dloaddef_s {
|
|||
#include "../tiki/tiki_frame.h"
|
||||
#include "../tiki/tiki_surface.h"
|
||||
#include "../tiki/tiki_mesh.h"
|
||||
|
||||
#endif // __TIKI_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -27,34 +27,31 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "tiki.h"
|
||||
#include "../tiki/tiki_shared.h"
|
||||
|
||||
int cache_numskel = 0;
|
||||
int cache_maxskel = 0;
|
||||
skelcache_t skelcache[ TIKI_MAX_SKELCACHE ];
|
||||
int cache_numskel = 0;
|
||||
int cache_maxskel = 0;
|
||||
skelcache_t skelcache[TIKI_MAX_SKELCACHE];
|
||||
|
||||
/*
|
||||
===============
|
||||
TIKI_AddPointToBounds
|
||||
===============
|
||||
*/
|
||||
void TIKI_AddPointToBounds( float *v, float *mins, float *maxs )
|
||||
void TIKI_AddPointToBounds(float *v, float *mins, float *maxs)
|
||||
{
|
||||
int i;
|
||||
vec_t val;
|
||||
int i;
|
||||
vec_t val;
|
||||
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
val = v[ i ];
|
||||
for (i = 0; i < 3; i++) {
|
||||
val = v[i];
|
||||
|
||||
if( val < mins[ i ] )
|
||||
{
|
||||
mins[ i ] = val;
|
||||
}
|
||||
if (val < mins[i]) {
|
||||
mins[i] = val;
|
||||
}
|
||||
|
||||
if( val > maxs[ i ] )
|
||||
{
|
||||
maxs[ i ] = val;
|
||||
}
|
||||
}
|
||||
if (val > maxs[i]) {
|
||||
maxs[i] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -62,15 +59,15 @@ void TIKI_AddPointToBounds( float *v, float *mins, float *maxs )
|
|||
TIKI_Message
|
||||
===============
|
||||
*/
|
||||
void TIKI_Message( const char *fmt, ... )
|
||||
void TIKI_Message(const char *fmt, ...)
|
||||
{
|
||||
char msg[ 1024 ];
|
||||
va_list va;
|
||||
char msg[1024];
|
||||
va_list va;
|
||||
|
||||
va_start( va, fmt );
|
||||
vsprintf( msg, fmt, va );
|
||||
va_end( va );
|
||||
Skel_DPrintf( msg );
|
||||
va_start(va, fmt);
|
||||
vsprintf(msg, fmt, va);
|
||||
va_end(va);
|
||||
Skel_DPrintf(msg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -78,15 +75,15 @@ void TIKI_Message( const char *fmt, ... )
|
|||
TIKI_Warning
|
||||
===============
|
||||
*/
|
||||
void TIKI_Warning( const char *fmt, ... )
|
||||
void TIKI_Warning(const char *fmt, ...)
|
||||
{
|
||||
char msg[ 1024 ];
|
||||
va_list va;
|
||||
char msg[1024];
|
||||
va_list va;
|
||||
|
||||
va_start( va, fmt );
|
||||
vsprintf( msg, fmt, va );
|
||||
va_end( va );
|
||||
Skel_DPrintf( msg );
|
||||
va_start(va, fmt);
|
||||
vsprintf(msg, fmt, va);
|
||||
va_end(va);
|
||||
Skel_DPrintf(msg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -94,15 +91,15 @@ void TIKI_Warning( const char *fmt, ... )
|
|||
TIKI_Error
|
||||
===============
|
||||
*/
|
||||
void TIKI_Error( const char *fmt, ... )
|
||||
void TIKI_Error(const char *fmt, ...)
|
||||
{
|
||||
char msg[ 1024 ];
|
||||
va_list va;
|
||||
char msg[1024];
|
||||
va_list va;
|
||||
|
||||
va_start( va, fmt );
|
||||
vsprintf( msg, fmt, va );
|
||||
va_end( va );
|
||||
Skel_DPrintf( msg );
|
||||
va_start(va, fmt);
|
||||
vsprintf(msg, fmt, va);
|
||||
va_end(va);
|
||||
Skel_DPrintf(msg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -110,27 +107,25 @@ void TIKI_Error( const char *fmt, ... )
|
|||
TIKI_SetupIndividualSurface
|
||||
===============
|
||||
*/
|
||||
void TIKI_SetupIndividualSurface( const char *filename, dtikisurface_t *surf, const char *name, dloadsurface_t *loadsurf )
|
||||
void TIKI_SetupIndividualSurface(const char *filename, dtikisurface_t *surf, const char *name, dloadsurface_t *loadsurf)
|
||||
{
|
||||
int j;
|
||||
int j;
|
||||
|
||||
surf->numskins = 0;
|
||||
for( j = 0; j < loadsurf->numskins; j++ )
|
||||
{
|
||||
if( surf->numskins >= MAX_TIKI_SHADER )
|
||||
{
|
||||
TIKI_Error( "TIKI_SetupIndividualSurface: Too many skins defined for surface %s in %s.\n", loadsurf->name, filename );
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy( surf->name, name, sizeof( surf->name ) );
|
||||
strncpy( surf->shader[ surf->numskins ], loadsurf->shader[ j ], sizeof( surf->shader[ surf->numskins ] ) );
|
||||
surf->numskins++;
|
||||
}
|
||||
}
|
||||
surf->numskins = 0;
|
||||
for (j = 0; j < loadsurf->numskins; j++) {
|
||||
if (surf->numskins >= MAX_TIKI_SHADER) {
|
||||
TIKI_Error(
|
||||
"TIKI_SetupIndividualSurface: Too many skins defined for surface %s in %s.\n", loadsurf->name, filename
|
||||
);
|
||||
} else {
|
||||
strncpy(surf->name, name, sizeof(surf->name));
|
||||
strncpy(surf->shader[surf->numskins], loadsurf->shader[j], sizeof(surf->shader[surf->numskins]));
|
||||
surf->numskins++;
|
||||
}
|
||||
}
|
||||
|
||||
surf->flags = loadsurf->flags;
|
||||
surf->damage_multiplier = loadsurf->damage_multiplier;
|
||||
surf->flags = loadsurf->flags;
|
||||
surf->damage_multiplier = loadsurf->damage_multiplier;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -138,83 +133,74 @@ void TIKI_SetupIndividualSurface( const char *filename, dtikisurface_t *surf, co
|
|||
TIKI_CalcAnimDefSize
|
||||
===============
|
||||
*/
|
||||
size_t TIKI_CalcAnimDefSize(dloaddef_t* ld)
|
||||
size_t TIKI_CalcAnimDefSize(dloaddef_t *ld)
|
||||
{
|
||||
int i, j, k;
|
||||
int i, j, k;
|
||||
|
||||
// initial cmds
|
||||
size_t defsize = 0;
|
||||
// other animations
|
||||
defsize += sizeof(dtikianimdef_t) * ld->numanims;
|
||||
defsize += ld->numclientinitcmds * sizeof(dtikicmd_t);
|
||||
defsize += ld->numserverinitcmds * sizeof(dtikicmd_t);
|
||||
// initial cmds
|
||||
size_t defsize = 0;
|
||||
// other animations
|
||||
defsize += sizeof(dtikianimdef_t) * ld->numanims;
|
||||
defsize += ld->numclientinitcmds * sizeof(dtikicmd_t);
|
||||
defsize += ld->numserverinitcmds * sizeof(dtikicmd_t);
|
||||
|
||||
for (i = 0; i < ld->numserverinitcmds; i++)
|
||||
{
|
||||
const dloadinitcmd_t* initcmd = ld->loadserverinitcmds[i];
|
||||
defsize += sizeof(*initcmd->args) * initcmd->num_args;
|
||||
for (i = 0; i < ld->numserverinitcmds; i++) {
|
||||
const dloadinitcmd_t *initcmd = ld->loadserverinitcmds[i];
|
||||
defsize += sizeof(*initcmd->args) * initcmd->num_args;
|
||||
|
||||
for (j = 0; j < initcmd->num_args; j++)
|
||||
{
|
||||
defsize += strlen(initcmd->args[j]) + 1;
|
||||
}
|
||||
for (j = 0; j < initcmd->num_args; j++) {
|
||||
defsize += strlen(initcmd->args[j]) + 1;
|
||||
}
|
||||
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
}
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
}
|
||||
|
||||
for (i = 0; i < ld->numclientinitcmds; i++)
|
||||
{
|
||||
const dloadinitcmd_t* initcmd = ld->loadclientinitcmds[i];
|
||||
defsize += sizeof(*initcmd->args) * initcmd->num_args;
|
||||
for (i = 0; i < ld->numclientinitcmds; i++) {
|
||||
const dloadinitcmd_t *initcmd = ld->loadclientinitcmds[i];
|
||||
defsize += sizeof(*initcmd->args) * initcmd->num_args;
|
||||
|
||||
for (j = 0; j < initcmd->num_args; j++)
|
||||
{
|
||||
defsize += strlen(initcmd->args[j]) + 1;
|
||||
}
|
||||
for (j = 0; j < initcmd->num_args; j++) {
|
||||
defsize += strlen(initcmd->args[j]) + 1;
|
||||
}
|
||||
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
}
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
}
|
||||
|
||||
for (i = 0; i < ld->numanims; i++)
|
||||
{
|
||||
const dloadanim_t* loadanim = ld->loadanims[i];
|
||||
for (i = 0; i < ld->numanims; i++) {
|
||||
const dloadanim_t *loadanim = ld->loadanims[i];
|
||||
|
||||
defsize += sizeof(dtikianimdef_t);
|
||||
defsize += loadanim->num_server_cmds * sizeof(dtikicmd_t);
|
||||
defsize += loadanim->num_client_cmds * sizeof(dtikianimdef_t);
|
||||
defsize += sizeof(dtikianimdef_t);
|
||||
defsize += loadanim->num_server_cmds * sizeof(dtikicmd_t);
|
||||
defsize += loadanim->num_client_cmds * sizeof(dtikianimdef_t);
|
||||
|
||||
for (j = 0; j < loadanim->num_server_cmds; j++)
|
||||
{
|
||||
const dloadframecmd_t* loadframecmd = loadanim->loadservercmds[j];
|
||||
defsize += sizeof(*loadframecmd->args) * loadframecmd->num_args;
|
||||
for (j = 0; j < loadanim->num_server_cmds; j++) {
|
||||
const dloadframecmd_t *loadframecmd = loadanim->loadservercmds[j];
|
||||
defsize += sizeof(*loadframecmd->args) * loadframecmd->num_args;
|
||||
|
||||
for (k = 0; k < loadframecmd->num_args; k++)
|
||||
{
|
||||
defsize += strlen(loadframecmd->args[k]) + 1;
|
||||
}
|
||||
for (k = 0; k < loadframecmd->num_args; k++) {
|
||||
defsize += strlen(loadframecmd->args[k]) + 1;
|
||||
}
|
||||
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
}
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
}
|
||||
|
||||
for (j = 0; j < loadanim->num_client_cmds; j++)
|
||||
{
|
||||
const dloadframecmd_t* loadframecmd = loadanim->loadclientcmds[j];
|
||||
defsize += sizeof(*loadframecmd->args) * loadframecmd->num_args;
|
||||
for (j = 0; j < loadanim->num_client_cmds; j++) {
|
||||
const dloadframecmd_t *loadframecmd = loadanim->loadclientcmds[j];
|
||||
defsize += sizeof(*loadframecmd->args) * loadframecmd->num_args;
|
||||
|
||||
for (k = 0; k < loadframecmd->num_args; k++)
|
||||
{
|
||||
defsize += strlen(loadframecmd->args[k]) + 1;
|
||||
}
|
||||
for (k = 0; k < loadframecmd->num_args; k++) {
|
||||
defsize += strlen(loadframecmd->args[k]) + 1;
|
||||
}
|
||||
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
}
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
}
|
||||
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
}
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
}
|
||||
|
||||
defsize += ld->modelBuf->cursize + strlen(ld->headmodels) + 1 + strlen(ld->headskins) + 1;
|
||||
defsize = PAD(defsize, sizeof(void*));
|
||||
return defsize;
|
||||
defsize += ld->modelBuf->cursize + strlen(ld->headmodels) + 1 + strlen(ld->headskins) + 1;
|
||||
defsize = PAD(defsize, sizeof(void *));
|
||||
return defsize;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -222,15 +208,15 @@ size_t TIKI_CalcAnimDefSize(dloaddef_t* ld)
|
|||
TIKI_FillTIKIStructureSkel
|
||||
===============
|
||||
*/
|
||||
dtikianim_t *TIKI_FillTIKIStructureSkel( dloaddef_t *ld )
|
||||
dtikianim_t *TIKI_FillTIKIStructureSkel(dloaddef_t *ld)
|
||||
{
|
||||
size_t animdefsize;
|
||||
size_t defsize;
|
||||
size_t animdefsize;
|
||||
size_t defsize;
|
||||
|
||||
animdefsize = TIKI_CalcAnimDefSize(ld);
|
||||
defsize = sizeof(dtikianim_t);
|
||||
// anim name
|
||||
defsize += strlen(ld->path) + 1;
|
||||
animdefsize = TIKI_CalcAnimDefSize(ld);
|
||||
defsize = sizeof(dtikianim_t);
|
||||
// anim name
|
||||
defsize += strlen(ld->path) + 1;
|
||||
|
||||
return TIKI_InitTiki(ld, PAD(animdefsize + defsize, sizeof(void*)));
|
||||
return TIKI_InitTiki(ld, PAD(animdefsize + defsize, sizeof(void *)));
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,27 +22,25 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_main.h : TIKI main
|
||||
|
||||
#ifndef __TIKI_MAIN_H__
|
||||
#define __TIKI_MAIN_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int cache_numskel;
|
||||
extern int cache_maxskel;
|
||||
extern skelcache_t skelcache[];
|
||||
extern int cache_numskel;
|
||||
extern int cache_maxskel;
|
||||
extern skelcache_t skelcache[];
|
||||
|
||||
void TIKI_AddPointToBounds( float *v, float *mins, float *maxs );
|
||||
void TIKI_Message( const char *fmt, ... );
|
||||
void TIKI_Warning( const char *fmt, ... );
|
||||
void TIKI_Error( const char *fmt, ... );
|
||||
void TIKI_SetupIndividualSurface( const char *filename, dtikisurface_t *surf, const char *name, dloadsurface_t *loadsurf );
|
||||
size_t TIKI_CalcAnimDefSize( dloaddef_t *ld );
|
||||
dtikianim_t *TIKI_FillTIKIStructureSkel( dloaddef_t *ld );
|
||||
void TIKI_AddPointToBounds(float *v, float *mins, float *maxs);
|
||||
void TIKI_Message(const char *fmt, ...);
|
||||
void TIKI_Warning(const char *fmt, ...);
|
||||
void TIKI_Error(const char *fmt, ...);
|
||||
void
|
||||
TIKI_SetupIndividualSurface(const char *filename, dtikisurface_t *surf, const char *name, dloadsurface_t *loadsurf);
|
||||
size_t TIKI_CalcAnimDefSize(dloaddef_t *ld);
|
||||
dtikianim_t *TIKI_FillTIKIStructureSkel(dloaddef_t *ld);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_MAIN_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,132 +22,131 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_script.h : TIKI script
|
||||
|
||||
#ifndef TIKI_SCRIPT_H
|
||||
#define TIKI_SCRIPT_H
|
||||
#pragma once
|
||||
|
||||
#define TOKENCOMMENT (';')
|
||||
#define TOKENCOMMENT2 ('#')
|
||||
#define TOKENEOL ('\n')
|
||||
#define TOKENCOMMENT (';')
|
||||
#define TOKENCOMMENT2 ('#')
|
||||
#define TOKENEOL ('\n')
|
||||
//#define TOKENNULL ('\0')
|
||||
#define TOKENSPACE (' ')
|
||||
#define TOKENSPECIAL ('$')
|
||||
#define TOKENSPACE (' ')
|
||||
#define TOKENSPECIAL ('$')
|
||||
|
||||
#define TIKI_MAXTOKEN 256
|
||||
#define TIKI_MAXTOKEN 256
|
||||
|
||||
#define TIKI_MAXMACROS 48
|
||||
#define TIKI_MAXMACROS 48
|
||||
|
||||
typedef struct {
|
||||
char name[TIKI_MAXTOKEN];
|
||||
char macro[TIKI_MAXTOKEN];
|
||||
char name[TIKI_MAXTOKEN];
|
||||
char macro[TIKI_MAXTOKEN];
|
||||
} tiki_macro_t;
|
||||
|
||||
typedef struct {
|
||||
const char *mark_script_p;
|
||||
qboolean mark_tokenready;
|
||||
char mark_token[TIKI_MAXTOKEN];
|
||||
const char *mark_script_p;
|
||||
qboolean mark_tokenready;
|
||||
char mark_token[TIKI_MAXTOKEN];
|
||||
} tiki_mark_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class TikiScript {
|
||||
class TikiScript
|
||||
{
|
||||
protected:
|
||||
qboolean error;
|
||||
qboolean tokenready;
|
||||
class TikiScript *include;
|
||||
class TikiScript *parent;
|
||||
char filename[TIKI_MAXTOKEN];
|
||||
const char *script_p;
|
||||
const char *end_p;
|
||||
tiki_macro_t macros[TIKI_MAXMACROS];
|
||||
int nummacros;
|
||||
int line;
|
||||
char token[TIKI_MAXTOKEN];
|
||||
qboolean releaseBuffer;
|
||||
tiki_mark_t mark[ 64 ];
|
||||
int mark_pos;
|
||||
qboolean error;
|
||||
qboolean tokenready;
|
||||
class TikiScript *include;
|
||||
class TikiScript *parent;
|
||||
char filename[TIKI_MAXTOKEN];
|
||||
const char *script_p;
|
||||
const char *end_p;
|
||||
tiki_macro_t macros[TIKI_MAXMACROS];
|
||||
int nummacros;
|
||||
int line;
|
||||
char token[TIKI_MAXTOKEN];
|
||||
qboolean releaseBuffer;
|
||||
tiki_mark_t mark[64];
|
||||
int mark_pos;
|
||||
|
||||
public:
|
||||
char *buffer;
|
||||
int length;
|
||||
char path[ MAX_QPATH ];
|
||||
static class TikiScript *currentScript;
|
||||
char *buffer;
|
||||
int length;
|
||||
char path[MAX_QPATH];
|
||||
static class TikiScript *currentScript;
|
||||
|
||||
protected:
|
||||
qboolean AtComment();
|
||||
qboolean AtExtendedComment();
|
||||
qboolean AtCommand();
|
||||
qboolean AtString( qboolean crossline );
|
||||
qboolean ProcessCommand( qboolean crossline );
|
||||
qboolean Completed();
|
||||
qboolean SafeCheckOverflow();
|
||||
void CheckOverflow();
|
||||
void Uninclude();
|
||||
const char *FindMacro( const char *macro );
|
||||
void AddMacro( const char *macro, const char *expansion );
|
||||
qboolean SkipToEOL();
|
||||
void SkipWhiteSpace( qboolean crossline );
|
||||
void SkipNonToken( qboolean crossline );
|
||||
qboolean CommentAvailable( qboolean crossline );
|
||||
void SkipExtendedComment();
|
||||
qboolean AtComment();
|
||||
qboolean AtExtendedComment();
|
||||
qboolean AtCommand();
|
||||
qboolean AtString(qboolean crossline);
|
||||
qboolean ProcessCommand(qboolean crossline);
|
||||
qboolean Completed();
|
||||
qboolean SafeCheckOverflow();
|
||||
void CheckOverflow();
|
||||
void Uninclude();
|
||||
const char *FindMacro(const char *macro);
|
||||
void AddMacro(const char *macro, const char *expansion);
|
||||
qboolean SkipToEOL();
|
||||
void SkipWhiteSpace(qboolean crossline);
|
||||
void SkipNonToken(qboolean crossline);
|
||||
qboolean CommentAvailable(qboolean crossline);
|
||||
void SkipExtendedComment();
|
||||
|
||||
public:
|
||||
TikiScript();
|
||||
~TikiScript();
|
||||
TikiScript();
|
||||
~TikiScript();
|
||||
|
||||
void Close();
|
||||
const char *Filename();
|
||||
int GetLineNumber();
|
||||
void Reset();
|
||||
qboolean TokenAvailable( qboolean crossline );
|
||||
void UnGetToken();
|
||||
const char *GetToken( qboolean crossline );
|
||||
const char *GetLine( qboolean crossline );
|
||||
const char *GetAndIgnoreLine( qboolean crossline );
|
||||
const char *GetRaw();
|
||||
const char *GetString( qboolean crossline );
|
||||
qboolean GetSpecific( const char *string );
|
||||
int GetInteger( qboolean crossline );
|
||||
double GetDouble( qboolean crossline );
|
||||
float GetFloat( qboolean crossline );
|
||||
void GetVector( qboolean crossline, float *vec );
|
||||
int LinesInFile();
|
||||
void Parse( char *data, int length, const char *name );
|
||||
qboolean LoadFile( const char *name, qboolean quiet );
|
||||
const char *Token();
|
||||
void MarkPos();
|
||||
void ReturnToMark();
|
||||
void ReplaceLineWithWhitespace( bool deleteFromStartOfLine );
|
||||
void Exclude();
|
||||
const char *GetParentToken();
|
||||
void Close();
|
||||
const char *Filename();
|
||||
int GetLineNumber();
|
||||
void Reset();
|
||||
qboolean TokenAvailable(qboolean crossline);
|
||||
void UnGetToken();
|
||||
const char *GetToken(qboolean crossline);
|
||||
const char *GetLine(qboolean crossline);
|
||||
const char *GetAndIgnoreLine(qboolean crossline);
|
||||
const char *GetRaw();
|
||||
const char *GetString(qboolean crossline);
|
||||
qboolean GetSpecific(const char *string);
|
||||
int GetInteger(qboolean crossline);
|
||||
double GetDouble(qboolean crossline);
|
||||
float GetFloat(qboolean crossline);
|
||||
void GetVector(qboolean crossline, float *vec);
|
||||
int LinesInFile();
|
||||
void Parse(char *data, int length, const char *name);
|
||||
qboolean LoadFile(const char *name, qboolean quiet);
|
||||
const char *Token();
|
||||
void MarkPos();
|
||||
void ReturnToMark();
|
||||
void ReplaceLineWithWhitespace(bool deleteFromStartOfLine);
|
||||
void Exclude();
|
||||
const char *GetParentToken();
|
||||
};
|
||||
|
||||
class TikiSwitchKey {
|
||||
class TikiSwitchKey
|
||||
{
|
||||
public:
|
||||
str sKeyName;
|
||||
str sKeyValue;
|
||||
TikiSwitchKey *pNextKey;
|
||||
str sKeyName;
|
||||
str sKeyValue;
|
||||
TikiSwitchKey *pNextKey;
|
||||
|
||||
TikiSwitchKey();
|
||||
TikiSwitchKey();
|
||||
};
|
||||
|
||||
class TikiSwitcher {
|
||||
TikiSwitchKey *m_pSwitchKeys;
|
||||
class TikiSwitcher
|
||||
{
|
||||
TikiSwitchKey *m_pSwitchKeys;
|
||||
|
||||
private:
|
||||
TikiSwitchKey *GetSwitchKey( const char * );
|
||||
void RemoveUnwantedSwitchOptions( TikiScript * );
|
||||
TikiSwitchKey *GetSwitchKey(const char *);
|
||||
void RemoveUnwantedSwitchOptions(TikiScript *);
|
||||
|
||||
public:
|
||||
TikiSwitcher();
|
||||
TikiSwitcher();
|
||||
|
||||
void AddSwitchKey( const char *, const char * );
|
||||
void ChangeSwitchKey( const char *, const char * );
|
||||
void AddOrChangeSwitchKey( const char *, const char * );
|
||||
str& GetSwitchKeyValue( const char * );
|
||||
void PrecompileTikiScript( TikiScript * );
|
||||
void AddSwitchKey(const char *, const char *);
|
||||
void ChangeSwitchKey(const char *, const char *);
|
||||
void AddOrChangeSwitchKey(const char *, const char *);
|
||||
str& GetSwitchKeyValue(const char *);
|
||||
void PrecompileTikiScript(TikiScript *);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif // TIKI_SCRIPT_H
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -34,11 +34,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
AnimCompareFunc
|
||||
===============
|
||||
*/
|
||||
static void* context;
|
||||
static int AnimCompareFunc(const void *a, const void *b )
|
||||
static void *context;
|
||||
|
||||
static int AnimCompareFunc(const void *a, const void *b)
|
||||
{
|
||||
dloaddef_t *ld = (dloaddef_t*)context;
|
||||
return stricmp( ld->loadanims[ *( int * )a ]->alias, ld->loadanims[ *( int * )b ]->alias );
|
||||
dloaddef_t *ld = (dloaddef_t *)context;
|
||||
return stricmp(ld->loadanims[*(int *)a]->alias, ld->loadanims[*(int *)b]->alias);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -46,14 +47,15 @@ static int AnimCompareFunc(const void *a, const void *b )
|
|||
TIKI_GetAnimOrder
|
||||
===============
|
||||
*/
|
||||
void TIKI_GetAnimOrder( dloaddef_t *ld, int *order )
|
||||
void TIKI_GetAnimOrder(dloaddef_t *ld, int *order)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for( i = 0; i < ld->numanims; i++ )
|
||||
order[ i ] = i;
|
||||
context = ld;
|
||||
qsort( order, ld->numanims, sizeof( int ), AnimCompareFunc);
|
||||
for (i = 0; i < ld->numanims; i++) {
|
||||
order[i] = i;
|
||||
}
|
||||
context = ld;
|
||||
qsort(order, ld->numanims, sizeof(int), AnimCompareFunc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -61,10 +63,10 @@ void TIKI_GetAnimOrder( dloaddef_t *ld, int *order )
|
|||
TIKI_Anim_NameForNum
|
||||
===============
|
||||
*/
|
||||
const char *TIKI_Anim_NameForNum( dtiki_t *pmdl, int animnum )
|
||||
{
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
|
||||
return panimdef->alias;
|
||||
const char *TIKI_Anim_NameForNum(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[animnum];
|
||||
return panimdef->alias;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -72,121 +74,101 @@ const char *TIKI_Anim_NameForNum( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_NumForName
|
||||
===============
|
||||
*/
|
||||
int TIKI_Anim_NumForName( dtiki_t *pmdl, const char *name )
|
||||
int TIKI_Anim_NumForName(dtiki_t *pmdl, const char *name)
|
||||
{
|
||||
int iTop;
|
||||
int iBottom;
|
||||
int iMiddle;
|
||||
int iComp;
|
||||
dtikianimdef_t *panimdef;
|
||||
float fAnimWeights[ MAX_FRAMEINFOS ];
|
||||
float fWeight;
|
||||
float fTotalWeight;
|
||||
int iAnimCount;
|
||||
int i, k;
|
||||
int iTop;
|
||||
int iBottom;
|
||||
int iMiddle;
|
||||
int iComp;
|
||||
dtikianimdef_t *panimdef;
|
||||
float fAnimWeights[MAX_FRAMEINFOS];
|
||||
float fWeight;
|
||||
float fTotalWeight;
|
||||
int iAnimCount;
|
||||
int i, k;
|
||||
|
||||
if( !pmdl )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (!pmdl) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
iBottom = 0;
|
||||
iTop = pmdl->a->num_anims - 1;
|
||||
iBottom = 0;
|
||||
iTop = pmdl->a->num_anims - 1;
|
||||
|
||||
while( iBottom <= iTop )
|
||||
{
|
||||
iMiddle = ( iBottom + iTop ) / 2;
|
||||
while (iBottom <= iTop) {
|
||||
iMiddle = (iBottom + iTop) / 2;
|
||||
|
||||
panimdef = pmdl->a->animdefs[ iMiddle ];
|
||||
if( !panimdef )
|
||||
{
|
||||
iComp = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
iComp = stricmp( panimdef->alias, name );
|
||||
}
|
||||
panimdef = pmdl->a->animdefs[iMiddle];
|
||||
if (!panimdef) {
|
||||
iComp = -1;
|
||||
} else {
|
||||
iComp = stricmp(panimdef->alias, name);
|
||||
}
|
||||
|
||||
if( !iComp )
|
||||
{
|
||||
if( !( panimdef->flags & TAF_RANDOM ) )
|
||||
{
|
||||
return iMiddle;
|
||||
}
|
||||
if (!iComp) {
|
||||
if (!(panimdef->flags & TAF_RANDOM)) {
|
||||
return iMiddle;
|
||||
}
|
||||
|
||||
for( i = iMiddle; i > 0; i-- )
|
||||
{
|
||||
if( !pmdl->a->animdefs[ i - 1 ] || stricmp( panimdef->alias, pmdl->a->animdefs[ i - 1 ]->alias ) ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (i = iMiddle; i > 0; i--) {
|
||||
if (!pmdl->a->animdefs[i - 1] || stricmp(panimdef->alias, pmdl->a->animdefs[i - 1]->alias)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
k = i;
|
||||
k = i;
|
||||
|
||||
for( iMiddle++; iMiddle < pmdl->a->num_anims; iMiddle++ )
|
||||
{
|
||||
if( !pmdl->a->animdefs[ iMiddle ] || stricmp( panimdef->alias, pmdl->a->animdefs[ iMiddle ]->alias ) ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (iMiddle++; iMiddle < pmdl->a->num_anims; iMiddle++) {
|
||||
if (!pmdl->a->animdefs[iMiddle] || stricmp(panimdef->alias, pmdl->a->animdefs[iMiddle]->alias)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fTotalWeight = 0.0f;
|
||||
iAnimCount = 0;
|
||||
fTotalWeight = 0.0f;
|
||||
iAnimCount = 0;
|
||||
|
||||
for( ; i < iMiddle; i++ )
|
||||
{
|
||||
panimdef = pmdl->a->animdefs[ i ];
|
||||
if( !panimdef )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
for (; i < iMiddle; i++) {
|
||||
panimdef = pmdl->a->animdefs[i];
|
||||
if (!panimdef) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if( panimdef->flags & TAF_AUTOSTEPS )
|
||||
{
|
||||
fAnimWeights[ iAnimCount ] = 0.0f;
|
||||
panimdef->flags &= ~TAF_AUTOSTEPS;
|
||||
}
|
||||
else
|
||||
{
|
||||
fAnimWeights[ iAnimCount ] = panimdef->weight;
|
||||
fTotalWeight += panimdef->weight;
|
||||
}
|
||||
if (panimdef->flags & TAF_AUTOSTEPS) {
|
||||
fAnimWeights[iAnimCount] = 0.0f;
|
||||
panimdef->flags &= ~TAF_AUTOSTEPS;
|
||||
} else {
|
||||
fAnimWeights[iAnimCount] = panimdef->weight;
|
||||
fTotalWeight += panimdef->weight;
|
||||
}
|
||||
|
||||
iAnimCount++;
|
||||
}
|
||||
iAnimCount++;
|
||||
}
|
||||
|
||||
fWeight = randweight() * fTotalWeight;
|
||||
for( i = 0; i < iAnimCount; i++ )
|
||||
{
|
||||
if( fWeight < fAnimWeights[ i ] ) {
|
||||
break;
|
||||
}
|
||||
fWeight = randweight() * fTotalWeight;
|
||||
for (i = 0; i < iAnimCount; i++) {
|
||||
if (fWeight < fAnimWeights[i]) {
|
||||
break;
|
||||
}
|
||||
|
||||
fWeight -= fAnimWeights[ i ];
|
||||
}
|
||||
fWeight -= fAnimWeights[i];
|
||||
}
|
||||
|
||||
iMiddle = i + k;
|
||||
panimdef = pmdl->a->animdefs[iMiddle];
|
||||
if (panimdef && panimdef->flags & TAF_NOREPEAT) {
|
||||
panimdef->flags |= TAF_AUTOSTEPS;
|
||||
}
|
||||
|
||||
iMiddle = i + k;
|
||||
panimdef = pmdl->a->animdefs[ iMiddle ];
|
||||
if( panimdef && panimdef->flags & TAF_NOREPEAT )
|
||||
{
|
||||
panimdef->flags |= TAF_AUTOSTEPS;
|
||||
}
|
||||
return iMiddle;
|
||||
}
|
||||
|
||||
return iMiddle;
|
||||
}
|
||||
if (iComp > 0) {
|
||||
iTop = iMiddle - 1;
|
||||
} else {
|
||||
iBottom = iMiddle + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( iComp > 0 )
|
||||
{
|
||||
iTop = iMiddle - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
iBottom = iMiddle + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -194,66 +176,61 @@ int TIKI_Anim_NumForName( dtiki_t *pmdl, const char *name )
|
|||
TIKI_Anim_Random
|
||||
===============
|
||||
*/
|
||||
int TIKI_Anim_Random( dtiki_t *pmdl, const char *name )
|
||||
int TIKI_Anim_Random(dtiki_t *pmdl, const char *name)
|
||||
{
|
||||
dtikianimdef_t *panimdef;
|
||||
int i;
|
||||
float totalweight;
|
||||
float weights[ MAX_FRAMEINFOS ];
|
||||
int anim[ MAX_FRAMEINFOS ];
|
||||
int num;
|
||||
size_t len;
|
||||
int diff;
|
||||
float weight;
|
||||
dtikianimdef_t *panimdef;
|
||||
int i;
|
||||
float totalweight;
|
||||
float weights[MAX_FRAMEINFOS];
|
||||
int anim[MAX_FRAMEINFOS];
|
||||
int num;
|
||||
size_t len;
|
||||
int diff;
|
||||
float weight;
|
||||
|
||||
len = strlen( name );
|
||||
if( !len || !pmdl )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
len = strlen(name);
|
||||
if (!len || !pmdl) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
num = 0;
|
||||
totalweight = 0.0f;
|
||||
for( i = 0; i < pmdl->a->num_anims; i++ )
|
||||
{
|
||||
panimdef = pmdl->a->animdefs[ i ];
|
||||
diff = strnicmp( panimdef->alias, name, len );
|
||||
if( diff || panimdef->alias[ len ] == '_' )
|
||||
{
|
||||
if( diff > 0 )
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( num >= MAX_FRAMEINFOS )
|
||||
break;
|
||||
num = 0;
|
||||
totalweight = 0.0f;
|
||||
for (i = 0; i < pmdl->a->num_anims; i++) {
|
||||
panimdef = pmdl->a->animdefs[i];
|
||||
diff = strnicmp(panimdef->alias, name, len);
|
||||
if (diff || panimdef->alias[len] == '_') {
|
||||
if (diff > 0) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (num >= MAX_FRAMEINFOS) {
|
||||
break;
|
||||
}
|
||||
|
||||
totalweight += panimdef->weight;
|
||||
anim[ num ] = i;
|
||||
weights[ num ] = panimdef->weight;
|
||||
totalweight += panimdef->weight;
|
||||
anim[num] = i;
|
||||
weights[num] = panimdef->weight;
|
||||
|
||||
num++;
|
||||
}
|
||||
}
|
||||
num++;
|
||||
}
|
||||
}
|
||||
|
||||
// animation name not found
|
||||
if( !num )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
// animation name not found
|
||||
if (!num) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// find a random animation based on the weight
|
||||
weight = randweight() * totalweight;
|
||||
for( i = 0; i < num; i++ )
|
||||
{
|
||||
if( weight < weights[ i ] ) {
|
||||
break;
|
||||
}
|
||||
// find a random animation based on the weight
|
||||
weight = randweight() * totalweight;
|
||||
for (i = 0; i < num; i++) {
|
||||
if (weight < weights[i]) {
|
||||
break;
|
||||
}
|
||||
|
||||
weight -= weights[ i ];
|
||||
}
|
||||
weight -= weights[i];
|
||||
}
|
||||
|
||||
return anim[ i ];
|
||||
return anim[i];
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -261,18 +238,18 @@ int TIKI_Anim_Random( dtiki_t *pmdl, const char *name )
|
|||
TIKI_Anim_NumFrames
|
||||
===============
|
||||
*/
|
||||
int TIKI_Anim_NumFrames( dtiki_t *pmdl, int animnum )
|
||||
int TIKI_Anim_NumFrames(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
return animData->numFrames;
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
return animData->numFrames;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -280,21 +257,20 @@ int TIKI_Anim_NumFrames( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_Time
|
||||
===============
|
||||
*/
|
||||
float TIKI_Anim_Time( dtiki_t *pmdl, int animnum )
|
||||
float TIKI_Anim_Time(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0.0;
|
||||
}
|
||||
if (!pmdl) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0.0;
|
||||
}
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
|
||||
return animData->flags & TAF_DELTADRIVEN
|
||||
? animData->frameTime * animData->numFrames
|
||||
: animData->frameTime * ( animData->numFrames - 1 );
|
||||
return animData->flags & TAF_DELTADRIVEN ? animData->frameTime * animData->numFrames
|
||||
: animData->frameTime * (animData->numFrames - 1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -302,18 +278,18 @@ float TIKI_Anim_Time( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_Frametime
|
||||
===============
|
||||
*/
|
||||
float TIKI_Anim_Frametime( dtiki_t *pmdl, int animnum )
|
||||
float TIKI_Anim_Frametime(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0.0;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
return animData->frameTime;
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
return animData->frameTime;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -321,18 +297,18 @@ float TIKI_Anim_Frametime( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_Delta
|
||||
===============
|
||||
*/
|
||||
void TIKI_Anim_Delta( dtiki_t *pmdl, int animnum, float *delta )
|
||||
void TIKI_Anim_Delta(dtiki_t *pmdl, int animnum, float *delta)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
VectorScale( animData->totalDelta, pmdl->load_scale, delta );
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
VectorScale(animData->totalDelta, pmdl->load_scale, delta);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -340,18 +316,18 @@ void TIKI_Anim_Delta( dtiki_t *pmdl, int animnum, float *delta )
|
|||
TIKI_Anim_HasDelta
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Anim_HasDelta( dtiki_t *pmdl, int animnum )
|
||||
qboolean TIKI_Anim_HasDelta(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return qfalse;
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
return animData->bHasDelta;
|
||||
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
return animData->bHasDelta;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -359,36 +335,33 @@ qboolean TIKI_Anim_HasDelta( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_DeltaOverTime
|
||||
===============
|
||||
*/
|
||||
void TIKI_Anim_DeltaOverTime( dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, vec3_t vDelta )
|
||||
void TIKI_Anim_DeltaOverTime(dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, vec3_t vDelta)
|
||||
{
|
||||
int realAnimIndex;
|
||||
skelAnimDataGameHeader_t *animData;
|
||||
SkelVec3 absDelta;
|
||||
int realAnimIndex;
|
||||
skelAnimDataGameHeader_t *animData;
|
||||
SkelVec3 absDelta;
|
||||
|
||||
if (!pTiki || !pTiki->a) {
|
||||
return;
|
||||
}
|
||||
if (!pTiki || !pTiki->a) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (iAnimnum >= pTiki->a->num_anims || iAnimnum < 0) {
|
||||
return;
|
||||
}
|
||||
if (iAnimnum >= pTiki->a->num_anims || iAnimnum < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fTime2 < fTime1) {
|
||||
return;
|
||||
}
|
||||
if (fTime2 < fTime1) {
|
||||
return;
|
||||
}
|
||||
|
||||
realAnimIndex = pTiki->a->m_aliases[ iAnimnum ];
|
||||
if( realAnimIndex != -1 )
|
||||
{
|
||||
animData = SkeletorCacheGetData( realAnimIndex );
|
||||
absDelta = animData->GetDeltaOverTime( fTime1, fTime2 );
|
||||
VectorScale( absDelta, pTiki->load_scale, vDelta );
|
||||
}
|
||||
else
|
||||
{
|
||||
TIKI_Error( "Skeletor GetDeltaOverTime: Couldn't find animation with index %i\n", iAnimnum );
|
||||
VectorClear( vDelta );
|
||||
}
|
||||
realAnimIndex = pTiki->a->m_aliases[iAnimnum];
|
||||
if (realAnimIndex != -1) {
|
||||
animData = SkeletorCacheGetData(realAnimIndex);
|
||||
absDelta = animData->GetDeltaOverTime(fTime1, fTime2);
|
||||
VectorScale(absDelta, pTiki->load_scale, vDelta);
|
||||
} else {
|
||||
TIKI_Error("Skeletor GetDeltaOverTime: Couldn't find animation with index %i\n", iAnimnum);
|
||||
VectorClear(vDelta);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -396,36 +369,33 @@ void TIKI_Anim_DeltaOverTime( dtiki_t *pTiki, int iAnimnum, float fTime1, float
|
|||
TIKI_Anim_AngularDeltaOverTime
|
||||
===============
|
||||
*/
|
||||
void TIKI_Anim_AngularDeltaOverTime(dtiki_t* pTiki, int iAnimnum, float fTime1, float fTime2, float* fDelta)
|
||||
void TIKI_Anim_AngularDeltaOverTime(dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, float *fDelta)
|
||||
{
|
||||
int realAnimIndex;
|
||||
skelAnimDataGameHeader_t* animData;
|
||||
int realAnimIndex;
|
||||
skelAnimDataGameHeader_t *animData;
|
||||
|
||||
*fDelta = 0;
|
||||
*fDelta = 0;
|
||||
|
||||
if (!pTiki || !pTiki->a) {
|
||||
return;
|
||||
}
|
||||
if (!pTiki || !pTiki->a) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (iAnimnum >= pTiki->a->num_anims || iAnimnum < 0) {
|
||||
return;
|
||||
}
|
||||
if (iAnimnum >= pTiki->a->num_anims || iAnimnum < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fTime2 < fTime1) {
|
||||
return;
|
||||
}
|
||||
if (fTime2 < fTime1) {
|
||||
return;
|
||||
}
|
||||
|
||||
realAnimIndex = pTiki->a->m_aliases[iAnimnum];
|
||||
if (realAnimIndex != -1)
|
||||
{
|
||||
animData = SkeletorCacheGetData(realAnimIndex);
|
||||
*fDelta = animData->GetAngularDeltaOverTime(fTime1, fTime2);
|
||||
}
|
||||
else
|
||||
{
|
||||
TIKI_Error("Skeletor GetAngularDeltaOverTime: Couldn't find animation with index %i\n", iAnimnum);
|
||||
*fDelta = 0;
|
||||
}
|
||||
realAnimIndex = pTiki->a->m_aliases[iAnimnum];
|
||||
if (realAnimIndex != -1) {
|
||||
animData = SkeletorCacheGetData(realAnimIndex);
|
||||
*fDelta = animData->GetAngularDeltaOverTime(fTime1, fTime2);
|
||||
} else {
|
||||
TIKI_Error("Skeletor GetAngularDeltaOverTime: Couldn't find animation with index %i\n", iAnimnum);
|
||||
*fDelta = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -433,18 +403,18 @@ void TIKI_Anim_AngularDeltaOverTime(dtiki_t* pTiki, int iAnimnum, float fTime1,
|
|||
TIKI_Anim_Flags
|
||||
===============
|
||||
*/
|
||||
int TIKI_Anim_Flags( dtiki_t *pmdl, int animnum )
|
||||
int TIKI_Anim_Flags(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
|
||||
return panimdef->flags;
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[animnum];
|
||||
return panimdef->flags;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -452,32 +422,35 @@ int TIKI_Anim_Flags( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_FlagsSkel
|
||||
===============
|
||||
*/
|
||||
int TIKI_Anim_FlagsSkel( dtiki_t *pmdl, int animnum )
|
||||
int TIKI_Anim_FlagsSkel(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
skelAnimDataGameHeader_t *animData;
|
||||
int flags;
|
||||
skelAnimDataGameHeader_t *animData;
|
||||
int flags;
|
||||
|
||||
animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
|
||||
flags = animData->flags;
|
||||
animData = SkeletorCacheGetData(pmdl->a->m_aliases[animnum]);
|
||||
flags = animData->flags;
|
||||
|
||||
if( animData->bHasDelta )
|
||||
flags |= TAF_HASDELTA;
|
||||
if (animData->bHasDelta) {
|
||||
flags |= TAF_HASDELTA;
|
||||
}
|
||||
|
||||
if( animData->bHasMorph )
|
||||
flags |= TAF_HASMORPH;
|
||||
if (animData->bHasMorph) {
|
||||
flags |= TAF_HASMORPH;
|
||||
}
|
||||
|
||||
if (animData->bHasUpper)
|
||||
flags |= TAF_HASUPPER;
|
||||
if (animData->bHasUpper) {
|
||||
flags |= TAF_HASUPPER;
|
||||
}
|
||||
|
||||
return flags;
|
||||
return flags;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -485,18 +458,18 @@ int TIKI_Anim_FlagsSkel( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_HasServerCommands
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Anim_HasServerCommands( dtiki_t *pmdl, int animnum )
|
||||
qboolean TIKI_Anim_HasServerCommands(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return qfalse;
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
|
||||
return panimdef->num_server_cmds > 0;
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[animnum];
|
||||
return panimdef->num_server_cmds > 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -504,18 +477,18 @@ qboolean TIKI_Anim_HasServerCommands( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_HasClientCommands
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Anim_HasClientCommands( dtiki_t *pmdl, int animnum )
|
||||
qboolean TIKI_Anim_HasClientCommands(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return qfalse;
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
|
||||
return panimdef->num_client_cmds > 0;
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[animnum];
|
||||
return panimdef->num_client_cmds > 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -523,16 +496,16 @@ qboolean TIKI_Anim_HasClientCommands( dtiki_t *pmdl, int animnum )
|
|||
TIKI_Anim_CrossblendTime
|
||||
===============
|
||||
*/
|
||||
float TIKI_Anim_CrossblendTime( dtiki_t *pmdl, int animnum )
|
||||
float TIKI_Anim_CrossblendTime(dtiki_t *pmdl, int animnum)
|
||||
{
|
||||
if (!pmdl) {
|
||||
return 0.0;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
|
||||
return panimdef->blendtime;
|
||||
dtikianimdef_t *panimdef = pmdl->a->animdefs[animnum];
|
||||
return panimdef->blendtime;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,32 +22,29 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_anim.h : TIKI Anim
|
||||
|
||||
#ifndef __TIKI_ANIM_H__
|
||||
#define __TIKI_ANIM_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void TIKI_GetAnimOrder( dloaddef_t *ld, int *order );
|
||||
const char *TIKI_Anim_NameForNum( dtiki_t *pmdl, int animnum );
|
||||
int TIKI_Anim_NumForName( dtiki_t *pmdl, const char *name );
|
||||
int TIKI_Anim_Random( dtiki_t *pmdl, const char *name );
|
||||
int TIKI_Anim_NumFrames( dtiki_t *pmdl, int animnum );
|
||||
float TIKI_Anim_Time( dtiki_t *pmdl, int animnum );
|
||||
float TIKI_Anim_Frametime( dtiki_t *pmdl, int animnum );
|
||||
void TIKI_Anim_Delta( dtiki_t *pmdl, int animnum, float *delta );
|
||||
qboolean TIKI_Anim_HasDelta( dtiki_t *pmdl, int animnum );
|
||||
void TIKI_Anim_DeltaOverTime( dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, vec3_t vDelta );
|
||||
void TIKI_Anim_AngularDeltaOverTime( dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, float *fDelta );
|
||||
int TIKI_Anim_Flags( dtiki_t *pmdl, int animnum );
|
||||
int TIKI_Anim_FlagsSkel( dtiki_t *pmdl, int animnum );
|
||||
qboolean TIKI_Anim_HasServerCommands( dtiki_t *pmdl, int animnum );
|
||||
qboolean TIKI_Anim_HasClientCommands( dtiki_t *pmdl, int animnum );
|
||||
float TIKI_Anim_CrossblendTime( dtiki_t *pmdl, int animnum );
|
||||
void TIKI_GetAnimOrder(dloaddef_t *ld, int *order);
|
||||
const char *TIKI_Anim_NameForNum(dtiki_t *pmdl, int animnum);
|
||||
int TIKI_Anim_NumForName(dtiki_t *pmdl, const char *name);
|
||||
int TIKI_Anim_Random(dtiki_t *pmdl, const char *name);
|
||||
int TIKI_Anim_NumFrames(dtiki_t *pmdl, int animnum);
|
||||
float TIKI_Anim_Time(dtiki_t *pmdl, int animnum);
|
||||
float TIKI_Anim_Frametime(dtiki_t *pmdl, int animnum);
|
||||
void TIKI_Anim_Delta(dtiki_t *pmdl, int animnum, float *delta);
|
||||
qboolean TIKI_Anim_HasDelta(dtiki_t *pmdl, int animnum);
|
||||
void TIKI_Anim_DeltaOverTime(dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, vec3_t vDelta);
|
||||
void TIKI_Anim_AngularDeltaOverTime(dtiki_t *pTiki, int iAnimnum, float fTime1, float fTime2, float *fDelta);
|
||||
int TIKI_Anim_Flags(dtiki_t *pmdl, int animnum);
|
||||
int TIKI_Anim_FlagsSkel(dtiki_t *pmdl, int animnum);
|
||||
qboolean TIKI_Anim_HasServerCommands(dtiki_t *pmdl, int animnum);
|
||||
qboolean TIKI_Anim_HasClientCommands(dtiki_t *pmdl, int animnum);
|
||||
float TIKI_Anim_CrossblendTime(dtiki_t *pmdl, int animnum);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_ANIM_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -31,21 +31,23 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "tiki_skel.h"
|
||||
|
||||
struct pchar {
|
||||
const char *m_Value;
|
||||
const char *m_Value;
|
||||
|
||||
pchar() { m_Value = NULL; }
|
||||
pchar( const char *value ) { m_Value = value; }
|
||||
friend bool operator==( const pchar& l, const pchar& r ) { return !strcmp( l.m_Value, r.m_Value ); }
|
||||
pchar() { m_Value = NULL; }
|
||||
|
||||
pchar(const char *value) { m_Value = value; }
|
||||
|
||||
friend bool operator==(const pchar& l, const pchar& r) { return !strcmp(l.m_Value, r.m_Value); }
|
||||
};
|
||||
|
||||
con_map< pchar, dtikianim_t * > *tikianimcache;
|
||||
con_map< pchar, dtiki_t * > *tikicache;
|
||||
static skeletor_c *skel_entity_cache[ 1024 ];
|
||||
con_map<pchar, dtikianim_t *> *tikianimcache;
|
||||
con_map<pchar, dtiki_t *> *tikicache;
|
||||
static skeletor_c *skel_entity_cache[1024];
|
||||
|
||||
template<>
|
||||
int HashCode< pchar >( const pchar& key )
|
||||
int HashCode<pchar>(const pchar& key)
|
||||
{
|
||||
return HashCode< const char * >( key.m_Value );
|
||||
return HashCode<const char *>(key.m_Value);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -53,21 +55,20 @@ int HashCode< pchar >( const pchar& key )
|
|||
TIKI_FindTikiAnim
|
||||
===============
|
||||
*/
|
||||
dtikianim_t *TIKI_FindTikiAnim( const char *path )
|
||||
dtikianim_t *TIKI_FindTikiAnim(const char *path)
|
||||
{
|
||||
char filename[ 1024 ];
|
||||
char filename[1024];
|
||||
|
||||
if( tikianimcache )
|
||||
{
|
||||
dtikianim_t **t;
|
||||
if (tikianimcache) {
|
||||
dtikianim_t **t;
|
||||
|
||||
t = tikianimcache->find( filename );
|
||||
if( t ) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
t = tikianimcache->find(filename);
|
||||
if (t) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -75,21 +76,20 @@ dtikianim_t *TIKI_FindTikiAnim( const char *path )
|
|||
TIKI_FindTiki
|
||||
===============
|
||||
*/
|
||||
dtiki_t *TIKI_FindTiki( const char *path )
|
||||
dtiki_t *TIKI_FindTiki(const char *path)
|
||||
{
|
||||
char filename[ 1024 ];
|
||||
char filename[1024];
|
||||
|
||||
if( tikicache )
|
||||
{
|
||||
dtiki_t **t;
|
||||
if (tikicache) {
|
||||
dtiki_t **t;
|
||||
|
||||
t = tikicache->find( filename );
|
||||
if( t ) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
t = tikicache->find(filename);
|
||||
if (t) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -97,41 +97,36 @@ dtiki_t *TIKI_FindTiki( const char *path )
|
|||
TIKI_RegisterTikiAnimFlags
|
||||
===============
|
||||
*/
|
||||
dtikianim_t *TIKI_RegisterTikiAnimFlags( const char *path, qboolean use )
|
||||
dtikianim_t *TIKI_RegisterTikiAnimFlags(const char *path, qboolean use)
|
||||
{
|
||||
dtikianim_t *tiki;
|
||||
char filename[ 1024 ];
|
||||
dtikianim_t *tiki;
|
||||
char filename[1024];
|
||||
|
||||
strcpy( filename, path );
|
||||
FS_CanonicalFilename( filename );
|
||||
strcpy(filename, path);
|
||||
FS_CanonicalFilename(filename);
|
||||
|
||||
if( tikianimcache )
|
||||
{
|
||||
dtikianim_t **t;
|
||||
if (tikianimcache) {
|
||||
dtikianim_t **t;
|
||||
|
||||
t = tikianimcache->find( filename );
|
||||
if( t ) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tikianimcache = new con_map < pchar, dtikianim_t * > ;
|
||||
}
|
||||
t = tikianimcache->find(filename);
|
||||
if (t) {
|
||||
return *t;
|
||||
}
|
||||
} else {
|
||||
tikianimcache = new con_map<pchar, dtikianim_t *>;
|
||||
}
|
||||
|
||||
tiki = TIKI_LoadTikiAnim( filename );
|
||||
if( tiki )
|
||||
{
|
||||
if( use )
|
||||
{
|
||||
Com_Printf( "^~^~^ Add the following line to the *_precache.scr map script:\n" );
|
||||
Com_Printf( "cache %s\n", filename );
|
||||
}
|
||||
tiki = TIKI_LoadTikiAnim(filename);
|
||||
if (tiki) {
|
||||
if (use) {
|
||||
Com_Printf("^~^~^ Add the following line to the *_precache.scr map script:\n");
|
||||
Com_Printf("cache %s\n", filename);
|
||||
}
|
||||
|
||||
( *tikianimcache )[ tiki->name ] = tiki;
|
||||
}
|
||||
(*tikianimcache)[tiki->name] = tiki;
|
||||
}
|
||||
|
||||
return tiki;
|
||||
return tiki;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -139,9 +134,9 @@ dtikianim_t *TIKI_RegisterTikiAnimFlags( const char *path, qboolean use )
|
|||
TIKI_RegisterTikiAnim
|
||||
===============
|
||||
*/
|
||||
dtikianim_t *TIKI_RegisterTikiAnim( const char *path )
|
||||
dtikianim_t *TIKI_RegisterTikiAnim(const char *path)
|
||||
{
|
||||
return TIKI_RegisterTikiAnimFlags( path, qfalse );
|
||||
return TIKI_RegisterTikiAnimFlags(path, qfalse);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -149,75 +144,69 @@ dtikianim_t *TIKI_RegisterTikiAnim( const char *path )
|
|||
TIKI_RegisterTikiFlags
|
||||
===============
|
||||
*/
|
||||
dtiki_t *TIKI_RegisterTikiFlags( const char *path, qboolean use )
|
||||
dtiki_t *TIKI_RegisterTikiFlags(const char *path, qboolean use)
|
||||
{
|
||||
dtiki_t *tiki = NULL;
|
||||
dtikianim_t* tikianim = NULL;
|
||||
con_map< str, str > keyValues;
|
||||
const char *next_path;
|
||||
str key;
|
||||
str value;
|
||||
const char *name;
|
||||
char filename[ 1024 ];
|
||||
char full_filename[ 1024 ];
|
||||
dtiki_t *tiki = NULL;
|
||||
dtikianim_t *tikianim = NULL;
|
||||
con_map<str, str> keyValues;
|
||||
const char *next_path;
|
||||
str key;
|
||||
str value;
|
||||
const char *name;
|
||||
char filename[1024];
|
||||
char full_filename[1024];
|
||||
|
||||
full_filename[ 0 ] = 0;
|
||||
full_filename[0] = 0;
|
||||
|
||||
name = path;
|
||||
for(next_path = strstr(name, "|"); next_path; next_path = strstr(name, "|"))
|
||||
{
|
||||
key = name;
|
||||
key[next_path - name] = 0;
|
||||
name = path;
|
||||
for (next_path = strstr(name, "|"); next_path; next_path = strstr(name, "|")) {
|
||||
key = name;
|
||||
key[next_path - name] = 0;
|
||||
|
||||
name = next_path + 1;
|
||||
next_path = strstr(name, "|" );
|
||||
if( !next_path ) {
|
||||
break;
|
||||
}
|
||||
name = next_path + 1;
|
||||
next_path = strstr(name, "|");
|
||||
if (!next_path) {
|
||||
break;
|
||||
}
|
||||
|
||||
value = name;
|
||||
value[next_path - name] = 0;
|
||||
name = next_path + 1;
|
||||
value = name;
|
||||
value[next_path - name] = 0;
|
||||
name = next_path + 1;
|
||||
|
||||
// add it to the entry
|
||||
keyValues[key] = value;
|
||||
// add it to the entry
|
||||
keyValues[key] = value;
|
||||
|
||||
strcat(full_filename, key.c_str());
|
||||
strcat(full_filename, "|");
|
||||
strcat(full_filename, value.c_str());
|
||||
strcat(full_filename, "|");
|
||||
}
|
||||
strcat(full_filename, key.c_str());
|
||||
strcat(full_filename, "|");
|
||||
strcat(full_filename, value.c_str());
|
||||
strcat(full_filename, "|");
|
||||
}
|
||||
|
||||
strcpy(filename, name);
|
||||
FS_CanonicalFilename(filename);
|
||||
strcat(full_filename, filename);
|
||||
strcpy(filename, name);
|
||||
FS_CanonicalFilename(filename);
|
||||
strcat(full_filename, filename);
|
||||
|
||||
if (!tikicache)
|
||||
{
|
||||
tikicache = new con_map<pchar, dtiki_t*>;
|
||||
}
|
||||
else
|
||||
{
|
||||
dtiki_t **t;
|
||||
if (!tikicache) {
|
||||
tikicache = new con_map<pchar, dtiki_t *>;
|
||||
} else {
|
||||
dtiki_t **t;
|
||||
|
||||
t = tikicache->find(full_filename);
|
||||
if (t) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
t = tikicache->find(full_filename);
|
||||
if (t) {
|
||||
return *t;
|
||||
}
|
||||
}
|
||||
|
||||
tikianim = TIKI_RegisterTikiAnimFlags(filename, use);
|
||||
if (tikianim)
|
||||
{
|
||||
tiki = TIKI_LoadTikiModel(tikianim, full_filename, &keyValues);
|
||||
if (tiki)
|
||||
{
|
||||
// cache the tiki
|
||||
(*tikicache)[tiki->name] = tiki;
|
||||
}
|
||||
}
|
||||
tikianim = TIKI_RegisterTikiAnimFlags(filename, use);
|
||||
if (tikianim) {
|
||||
tiki = TIKI_LoadTikiModel(tikianim, full_filename, &keyValues);
|
||||
if (tiki) {
|
||||
// cache the tiki
|
||||
(*tikicache)[tiki->name] = tiki;
|
||||
}
|
||||
}
|
||||
|
||||
return tiki;
|
||||
return tiki;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -225,9 +214,9 @@ dtiki_t *TIKI_RegisterTikiFlags( const char *path, qboolean use )
|
|||
TIKI_RegisterTiki
|
||||
===============
|
||||
*/
|
||||
dtiki_t *TIKI_RegisterTiki( const char *path )
|
||||
dtiki_t *TIKI_RegisterTiki(const char *path)
|
||||
{
|
||||
return TIKI_RegisterTikiFlags( path, qfalse );
|
||||
return TIKI_RegisterTikiFlags(path, qfalse);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -237,28 +226,26 @@ TIKI_FreeAll
|
|||
*/
|
||||
void TIKI_FreeAll()
|
||||
{
|
||||
dtiki_t **entry;
|
||||
dtikianim_t **entryanim;
|
||||
dtiki_t *tiki;
|
||||
dtikianim_t *tikianim;
|
||||
int i;
|
||||
dtiki_t **entry;
|
||||
dtikianim_t **entryanim;
|
||||
dtiki_t *tiki;
|
||||
dtikianim_t *tikianim;
|
||||
int i;
|
||||
|
||||
if( tikicache )
|
||||
{
|
||||
con_map_enum< pchar, dtiki_t * > en = *tikicache;
|
||||
if (tikicache) {
|
||||
con_map_enum<pchar, dtiki_t *> en = *tikicache;
|
||||
|
||||
for( entry = en.NextValue(); entry != NULL; entry = en.NextValue() )
|
||||
{
|
||||
skeletor_c *skeletor;
|
||||
for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
|
||||
skeletor_c *skeletor;
|
||||
|
||||
tiki = *entry;
|
||||
skeletor = ( skeletor_c * )tiki->skeletor;
|
||||
if( skeletor ) {
|
||||
delete skeletor;
|
||||
}
|
||||
tiki = *entry;
|
||||
skeletor = (skeletor_c *)tiki->skeletor;
|
||||
if (skeletor) {
|
||||
delete skeletor;
|
||||
}
|
||||
|
||||
tiki->m_boneList.CleanUpChannels();
|
||||
/*
|
||||
tiki->m_boneList.CleanUpChannels();
|
||||
/*
|
||||
if( tiki->a->m_aliases )
|
||||
{
|
||||
TIKI_Free( tiki->a->m_aliases );
|
||||
|
@ -267,46 +254,40 @@ void TIKI_FreeAll()
|
|||
}
|
||||
*/
|
||||
|
||||
TIKI_Free( tiki );
|
||||
}
|
||||
TIKI_Free(tiki);
|
||||
}
|
||||
|
||||
tikicache->clear();
|
||||
}
|
||||
tikicache->clear();
|
||||
}
|
||||
|
||||
if( tikianimcache )
|
||||
{
|
||||
con_map_enum< pchar, dtikianim_t * > en = *tikianimcache;
|
||||
if (tikianimcache) {
|
||||
con_map_enum<pchar, dtikianim_t *> en = *tikianimcache;
|
||||
|
||||
for( entryanim = en.NextValue(); entryanim != NULL; entryanim = en.NextValue() )
|
||||
{
|
||||
tikianim = *entryanim;
|
||||
for (entryanim = en.NextValue(); entryanim != NULL; entryanim = en.NextValue()) {
|
||||
tikianim = *entryanim;
|
||||
|
||||
TIKI_RemoveTiki( tikianim );
|
||||
TIKI_RemoveTiki(tikianim);
|
||||
|
||||
if( tikianim->m_aliases )
|
||||
{
|
||||
TIKI_Free( tikianim->m_aliases );
|
||||
tikianim->m_aliases = NULL;
|
||||
tikianim->num_anims = 0;
|
||||
}
|
||||
if (tikianim->m_aliases) {
|
||||
TIKI_Free(tikianim->m_aliases);
|
||||
tikianim->m_aliases = NULL;
|
||||
tikianim->num_anims = 0;
|
||||
}
|
||||
|
||||
TIKI_Free( tikianim );
|
||||
}
|
||||
TIKI_Free(tikianim);
|
||||
}
|
||||
|
||||
tikianimcache->clear();
|
||||
}
|
||||
tikianimcache->clear();
|
||||
}
|
||||
|
||||
tiki_loading = true;
|
||||
if( skelcache )
|
||||
{
|
||||
for( i = 0; i < cache_maxskel; i++ )
|
||||
{
|
||||
if (skelcache->skel)
|
||||
{
|
||||
TIKI_FreeSkel(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
tiki_loading = true;
|
||||
if (skelcache) {
|
||||
for (i = 0; i < cache_maxskel; i++) {
|
||||
if (skelcache->skel) {
|
||||
TIKI_FreeSkel(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -315,32 +296,31 @@ TIKI_GetSkeletor
|
|||
===============
|
||||
*/
|
||||
static qboolean tiki_started;
|
||||
void *TIKI_GetSkeletor( dtiki_t *tiki, int entnum )
|
||||
|
||||
void *TIKI_GetSkeletor(dtiki_t *tiki, int entnum)
|
||||
{
|
||||
skeletor_c *skel;
|
||||
skeletor_c *skel;
|
||||
|
||||
if( entnum == ENTITYNUM_NONE )
|
||||
{
|
||||
if( !tiki->skeletor ) tiki->skeletor = new skeletor_c( tiki );
|
||||
skel = ( skeletor_c * )tiki->skeletor;
|
||||
}
|
||||
else
|
||||
{
|
||||
skel = skel_entity_cache[ entnum ];
|
||||
if( skel )
|
||||
{
|
||||
if( skel->m_Tiki == tiki ) {
|
||||
return skel_entity_cache[ entnum ];
|
||||
}
|
||||
if (entnum == ENTITYNUM_NONE) {
|
||||
if (!tiki->skeletor) {
|
||||
tiki->skeletor = new skeletor_c(tiki);
|
||||
}
|
||||
skel = (skeletor_c *)tiki->skeletor;
|
||||
} else {
|
||||
skel = skel_entity_cache[entnum];
|
||||
if (skel) {
|
||||
if (skel->m_Tiki == tiki) {
|
||||
return skel_entity_cache[entnum];
|
||||
}
|
||||
|
||||
delete skel;
|
||||
}
|
||||
delete skel;
|
||||
}
|
||||
|
||||
skel = new skeletor_c( tiki );
|
||||
skel_entity_cache[ entnum ] = skel;
|
||||
}
|
||||
skel = new skeletor_c(tiki);
|
||||
skel_entity_cache[entnum] = skel;
|
||||
}
|
||||
|
||||
return skel;
|
||||
return skel;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -348,21 +328,19 @@ void *TIKI_GetSkeletor( dtiki_t *tiki, int entnum )
|
|||
TIKI_DeleteSkeletor
|
||||
===============
|
||||
*/
|
||||
static void TIKI_DeleteSkeletor( int entnum )
|
||||
static void TIKI_DeleteSkeletor(int entnum)
|
||||
{
|
||||
skeletor_c *skel;
|
||||
skeletor_c *skel;
|
||||
|
||||
if( entnum == ENTITYNUM_NONE )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (entnum == ENTITYNUM_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
skel = skel_entity_cache[ entnum ];
|
||||
if( skel )
|
||||
{
|
||||
delete skel;
|
||||
skel_entity_cache[ entnum ] = 0;
|
||||
}
|
||||
skel = skel_entity_cache[entnum];
|
||||
if (skel) {
|
||||
delete skel;
|
||||
skel_entity_cache[entnum] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -370,14 +348,15 @@ static void TIKI_DeleteSkeletor( int entnum )
|
|||
TIKI_Begin
|
||||
===============
|
||||
*/
|
||||
void TIKI_Begin( void )
|
||||
void TIKI_Begin(void)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for( i = 0; i < TIKI_MAX_SKELCACHE; i++ )
|
||||
skel_entity_cache[ i ] = 0;
|
||||
for (i = 0; i < TIKI_MAX_SKELCACHE; i++) {
|
||||
skel_entity_cache[i] = 0;
|
||||
}
|
||||
|
||||
tiki_started = true;
|
||||
tiki_started = true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -385,14 +364,15 @@ void TIKI_Begin( void )
|
|||
TIKI_End
|
||||
===============
|
||||
*/
|
||||
void TIKI_End( void )
|
||||
void TIKI_End(void)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for( i = 0; i < TIKI_MAX_SKELCACHE; i++ )
|
||||
TIKI_DeleteSkeletor( i );
|
||||
for (i = 0; i < TIKI_MAX_SKELCACHE; i++) {
|
||||
TIKI_DeleteSkeletor(i);
|
||||
}
|
||||
|
||||
tiki_started = false;
|
||||
tiki_started = false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -400,32 +380,28 @@ void TIKI_End( void )
|
|||
TIKI_FinishLoad
|
||||
===============
|
||||
*/
|
||||
void TIKI_FinishLoad( void )
|
||||
void TIKI_FinishLoad(void)
|
||||
{
|
||||
con_map_enum< pchar, dtikianim_t * > en;
|
||||
dtikianim_t **entry;
|
||||
con_map_enum<pchar, dtikianim_t *> en;
|
||||
dtikianim_t **entry;
|
||||
|
||||
if( !tiki_loading )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!tiki_loading) {
|
||||
return;
|
||||
}
|
||||
|
||||
tiki_loading = false;
|
||||
SkeletorCacheCleanCache();
|
||||
tiki_loading = false;
|
||||
SkeletorCacheCleanCache();
|
||||
|
||||
if( !low_anim_memory || !low_anim_memory->integer )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!low_anim_memory || !low_anim_memory->integer) {
|
||||
return;
|
||||
}
|
||||
|
||||
if( tikianimcache )
|
||||
{
|
||||
en = *tikianimcache;
|
||||
for( entry = en.NextValue(); entry != NULL; entry = en.NextValue() )
|
||||
{
|
||||
TIKI_LoadAnim( *entry );
|
||||
}
|
||||
}
|
||||
if (tikianimcache) {
|
||||
en = *tikianimcache;
|
||||
for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
|
||||
TIKI_LoadAnim(*entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -433,33 +409,29 @@ void TIKI_FinishLoad( void )
|
|||
TIKI_FreeImages
|
||||
===============
|
||||
*/
|
||||
void TIKI_FreeImages( void )
|
||||
void TIKI_FreeImages(void)
|
||||
{
|
||||
dtikisurface_t *dsurf;
|
||||
dtiki_t *tiki;
|
||||
int j, k;
|
||||
dtiki_t **entry;
|
||||
con_map_enum< pchar, dtiki_t * > en;
|
||||
dtikisurface_t *dsurf;
|
||||
dtiki_t *tiki;
|
||||
int j, k;
|
||||
dtiki_t **entry;
|
||||
con_map_enum<pchar, dtiki_t *> en;
|
||||
|
||||
if( !tikicache )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!tikicache) {
|
||||
return;
|
||||
}
|
||||
|
||||
en = *tikicache;
|
||||
for( entry = en.NextValue(); entry != NULL; entry = en.NextValue() )
|
||||
{
|
||||
tiki = *entry;
|
||||
for( k = 0; k < tiki->num_surfaces; k++ )
|
||||
{
|
||||
dsurf = &tiki->surfaces[ k ];
|
||||
en = *tikicache;
|
||||
for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
|
||||
tiki = *entry;
|
||||
for (k = 0; k < tiki->num_surfaces; k++) {
|
||||
dsurf = &tiki->surfaces[k];
|
||||
|
||||
for( j = 0; j < dsurf->numskins; j++ )
|
||||
{
|
||||
dsurf->hShader[ j ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (j = 0; j < dsurf->numskins; j++) {
|
||||
dsurf->hShader[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -467,20 +439,18 @@ void TIKI_FreeImages( void )
|
|||
TIKI_TikiAnimList_f
|
||||
===============
|
||||
*/
|
||||
void TIKI_TikiAnimList_f( void )
|
||||
void TIKI_TikiAnimList_f(void)
|
||||
{
|
||||
con_map_enum< pchar, dtikianim_t * > en;
|
||||
dtikianim_t **entry;
|
||||
con_map_enum<pchar, dtikianim_t *> en;
|
||||
dtikianim_t **entry;
|
||||
|
||||
Com_Printf( "\ntikianimlist:\n" );
|
||||
if( tikicache )
|
||||
{
|
||||
en = *tikianimcache;
|
||||
for( entry = en.NextValue(); entry != NULL; entry = en.NextValue() )
|
||||
{
|
||||
Com_Printf( "%s\n", ( *entry )->name );
|
||||
}
|
||||
}
|
||||
Com_Printf("\ntikianimlist:\n");
|
||||
if (tikicache) {
|
||||
en = *tikianimcache;
|
||||
for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
|
||||
Com_Printf("%s\n", (*entry)->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -488,18 +458,16 @@ void TIKI_TikiAnimList_f( void )
|
|||
TIKI_TikiList_f
|
||||
===============
|
||||
*/
|
||||
void TIKI_TikiList_f( void )
|
||||
void TIKI_TikiList_f(void)
|
||||
{
|
||||
con_map_enum< pchar, dtiki_t * > en;
|
||||
dtiki_t **entry;
|
||||
con_map_enum<pchar, dtiki_t *> en;
|
||||
dtiki_t **entry;
|
||||
|
||||
Com_Printf( "\ntikilist:\n" );
|
||||
if( tikicache )
|
||||
{
|
||||
en = *tikicache;
|
||||
for( entry = en.NextValue(); entry != NULL; entry = en.NextValue() )
|
||||
{
|
||||
Com_Printf( "%s\n", ( *entry )->name );
|
||||
}
|
||||
}
|
||||
Com_Printf("\ntikilist:\n");
|
||||
if (tikicache) {
|
||||
en = *tikicache;
|
||||
for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
|
||||
Com_Printf("%s\n", (*entry)->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,31 +22,28 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_cache.h : TIKI Cache
|
||||
|
||||
#ifndef __TIKI_CACHE_H__
|
||||
#define __TIKI_CACHE_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
dtikianim_t *TIKI_FindTikiAnim( const char *path );
|
||||
dtiki_t *TIKI_FindTiki( const char *path );
|
||||
dtikianim_t *TIKI_RegisterTikiAnimFlags( const char *path, qboolean use );
|
||||
dtikianim_t *TIKI_RegisterTikiAnim( const char *path );
|
||||
dtiki_t *TIKI_RegisterTikiFlags( const char *path, qboolean use );
|
||||
dtiki_t *TIKI_RegisterTiki( const char *path );
|
||||
void TIKI_FreeAll();
|
||||
void *TIKI_GetSkeletor( dtiki_t *tiki, int entnum );
|
||||
static void TIKI_DeleteSkeletor( int entnum );
|
||||
void TIKI_Begin( void );
|
||||
void TIKI_End( void );
|
||||
void TIKI_FinishLoad( void );
|
||||
void TIKI_FreeImages( void );
|
||||
void TIKI_TikiAnimList_f( void );
|
||||
void TIKI_TikiList_f( void );
|
||||
dtikianim_t *TIKI_FindTikiAnim(const char *path);
|
||||
dtiki_t *TIKI_FindTiki(const char *path);
|
||||
dtikianim_t *TIKI_RegisterTikiAnimFlags(const char *path, qboolean use);
|
||||
dtikianim_t *TIKI_RegisterTikiAnim(const char *path);
|
||||
dtiki_t *TIKI_RegisterTikiFlags(const char *path, qboolean use);
|
||||
dtiki_t *TIKI_RegisterTiki(const char *path);
|
||||
void TIKI_FreeAll();
|
||||
void *TIKI_GetSkeletor(dtiki_t *tiki, int entnum);
|
||||
static void TIKI_DeleteSkeletor(int entnum);
|
||||
void TIKI_Begin(void);
|
||||
void TIKI_End(void);
|
||||
void TIKI_FinishLoad(void);
|
||||
void TIKI_FreeImages(void);
|
||||
void TIKI_TikiAnimList_f(void);
|
||||
void TIKI_TikiList_f(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_CACHE_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -32,8 +32,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
TIKI_ModelInfo
|
||||
===============
|
||||
*/
|
||||
void TIKI_ModelInfo( dtiki_t *tiki )
|
||||
void TIKI_ModelInfo(dtiki_t *tiki)
|
||||
{
|
||||
// fixme: wtf ? what should it do
|
||||
Com_Printf( "This function is broken. So sorry... KDT\n" );
|
||||
// fixme: wtf ? what should it do
|
||||
Com_Printf("This function is broken. So sorry... KDT\n");
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,17 +22,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_commands.h : TIKI Commands
|
||||
|
||||
#ifndef __TIKI_COMMANDS_H__
|
||||
#define __TIKI_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void TIKI_ModelInfo( dtiki_t *tiki );
|
||||
void TIKI_ModelInfo(dtiki_t *tiki);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_COMMANDS_H__
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,8 +22,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_files.h : TIKI Files
|
||||
|
||||
#ifndef __TIKI_FILES_H__
|
||||
#define __TIKI_FILES_H__
|
||||
#pragma once
|
||||
|
||||
#include "../qcommon/tiki.h"
|
||||
|
||||
|
@ -31,44 +30,42 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern qboolean tiki_loading;
|
||||
extern qboolean tiki_loading;
|
||||
|
||||
extern cvar_t *dumploadedanims;
|
||||
extern cvar_t *low_anim_memory;
|
||||
extern cvar_t *showLoad;
|
||||
extern cvar_t *convertAnims;
|
||||
extern cvar_t *dumploadedanims;
|
||||
extern cvar_t *low_anim_memory;
|
||||
extern cvar_t *showLoad;
|
||||
extern cvar_t *convertAnims;
|
||||
|
||||
extern dloaddef_t loaddef;
|
||||
extern dloaddef_t loaddef;
|
||||
|
||||
void TIKI_FreeStorage( dloaddef_t *ld );
|
||||
void *TIKI_AllocateLoadData( size_t length );
|
||||
char *TIKI_CopyString( const char *s );
|
||||
dtikianim_t *TIKI_LoadTikiAnim( const char *path );
|
||||
void TIKI_FreeStorage(dloaddef_t *ld);
|
||||
void *TIKI_AllocateLoadData(size_t length);
|
||||
char *TIKI_CopyString(const char *s);
|
||||
dtikianim_t *TIKI_LoadTikiAnim(const char *path);
|
||||
|
||||
#ifdef __cplusplus
|
||||
dtiki_t *TIKI_LoadTikiModel( dtikianim_t *tikianim, const char *name, con_map<str, str> *keyValues );
|
||||
dtiki_t *TIKI_LoadTikiModel(dtikianim_t *tikianim, const char *name, con_map<str, str> *keyValues);
|
||||
#endif
|
||||
|
||||
void TIKI_CalcRadius( dtiki_t *tiki );
|
||||
skelAnimDataGameHeader_t *SkeletorCacheFileCallback( const char *path );
|
||||
skelAnimDataGameHeader_t *SkeletorCacheGetData( int index );
|
||||
void TIKI_CalcRadius(dtiki_t *tiki);
|
||||
skelAnimDataGameHeader_t *SkeletorCacheFileCallback(const char *path);
|
||||
skelAnimDataGameHeader_t *SkeletorCacheGetData(int index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
bool SkeletorCacheFindFilename( const char *path, int *indexPtr );
|
||||
bool SkeletorCacheLoadData( const char *path, bool precache, int newIndex );
|
||||
void SkeletorCacheUnloadData( int index );
|
||||
void SkeletorCacheCleanCache();
|
||||
void TikiAddToBounds( dtikianim_t *tiki, SkelVec3 *newBounds );
|
||||
bool SkeletorCacheFindFilename(const char *path, int *indexPtr);
|
||||
bool SkeletorCacheLoadData(const char *path, bool precache, int newIndex);
|
||||
void SkeletorCacheUnloadData(int index);
|
||||
void SkeletorCacheCleanCache();
|
||||
void TikiAddToBounds(dtikianim_t *tiki, SkelVec3 *newBounds);
|
||||
#endif
|
||||
|
||||
void TIKI_AnimList_f();
|
||||
void TIKI_FixFrameNum( dtikianim_t *ptiki, skelAnimDataGameHeader_t *animData, dtikicmd_t *cmd, const char *alias );
|
||||
void TIKI_LoadAnim( dtikianim_t *ptiki );
|
||||
dtikianim_t *TIKI_InitTiki( dloaddef_t *ld, size_t defsize );
|
||||
void TIKI_RemoveTiki( dtikianim_t *ptiki );
|
||||
void TIKI_AnimList_f();
|
||||
void TIKI_FixFrameNum(dtikianim_t *ptiki, skelAnimDataGameHeader_t *animData, dtikicmd_t *cmd, const char *alias);
|
||||
void TIKI_LoadAnim(dtikianim_t *ptiki);
|
||||
dtikianim_t *TIKI_InitTiki(dloaddef_t *ld, size_t defsize);
|
||||
void TIKI_RemoveTiki(dtikianim_t *ptiki);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_FILES_H__
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -34,46 +34,48 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
TIKI_Frame_Commands_Server
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Frame_Commands_Server( dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd )
|
||||
qboolean TIKI_Frame_Commands_Server(dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd)
|
||||
{
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
|
||||
if (!pmdl || !pmdl->a) {
|
||||
return qfalse;
|
||||
}
|
||||
if (!pmdl || !pmdl->a) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
if (animnum >= pmdl->a->num_anims || animnum < 0) {
|
||||
return qfalse;
|
||||
}
|
||||
if (animnum >= pmdl->a->num_anims || animnum < 0) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[ animnum ];
|
||||
found = false;
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[animnum];
|
||||
found = false;
|
||||
|
||||
for( i = 0; i < panimdef->num_server_cmds; i++ )
|
||||
{
|
||||
pcmd = &panimdef->server_cmds[ i ];
|
||||
for (i = 0; i < panimdef->num_server_cmds; i++) {
|
||||
pcmd = &panimdef->server_cmds[i];
|
||||
|
||||
if( ( pcmd->frame_num == framenum ) || ( pcmd->frame_num == TIKI_FRAME_EVERY && framenum >= 0 ) )
|
||||
{
|
||||
if( tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS )
|
||||
{
|
||||
TIKI_Error( "TIKI_Frame_Commands_Client: Too many cmds for anim %d frame %d for %s.\n", animnum, framenum, pmdl->a->name );
|
||||
return false;
|
||||
}
|
||||
if ((pcmd->frame_num == framenum) || (pcmd->frame_num == TIKI_FRAME_EVERY && framenum >= 0)) {
|
||||
if (tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS) {
|
||||
TIKI_Error(
|
||||
"TIKI_Frame_Commands_Client: Too many cmds for anim %d frame %d for %s.\n",
|
||||
animnum,
|
||||
framenum,
|
||||
pmdl->a->name
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
return found;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -81,12 +83,12 @@ qboolean TIKI_Frame_Commands_Server( dtiki_t *pmdl, int animnum, int framenum, t
|
|||
TIKI_Frame_Commands_Client
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Frame_Commands_Client( dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd )
|
||||
qboolean TIKI_Frame_Commands_Client(dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd)
|
||||
{
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
|
||||
if (!pmdl || !pmdl->a) {
|
||||
return qfalse;
|
||||
|
@ -96,31 +98,33 @@ qboolean TIKI_Frame_Commands_Client( dtiki_t *pmdl, int animnum, int framenum, t
|
|||
return qfalse;
|
||||
}
|
||||
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[ animnum ];
|
||||
found = false;
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[animnum];
|
||||
found = false;
|
||||
|
||||
for( i = 0; i < panimdef->num_client_cmds; i++ )
|
||||
{
|
||||
pcmd = &panimdef->client_cmds[ i ];
|
||||
for (i = 0; i < panimdef->num_client_cmds; i++) {
|
||||
pcmd = &panimdef->client_cmds[i];
|
||||
|
||||
if( ( pcmd->frame_num == framenum ) || ( pcmd->frame_num == TIKI_FRAME_EVERY && framenum >= 0 ) )
|
||||
{
|
||||
if( tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS )
|
||||
{
|
||||
TIKI_Error( "TIKI_Frame_Commands_Client: Too many cmds for anim %d frame %d for %s.\n", animnum, framenum, pmdl->a->name );
|
||||
return false;
|
||||
}
|
||||
if ((pcmd->frame_num == framenum) || (pcmd->frame_num == TIKI_FRAME_EVERY && framenum >= 0)) {
|
||||
if (tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS) {
|
||||
TIKI_Error(
|
||||
"TIKI_Frame_Commands_Client: Too many cmds for anim %d frame %d for %s.\n",
|
||||
animnum,
|
||||
framenum,
|
||||
pmdl->a->name
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
return found;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -128,13 +132,13 @@ qboolean TIKI_Frame_Commands_Client( dtiki_t *pmdl, int animnum, int framenum, t
|
|||
TIKI_Frame_Commands_ClientTime
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_Frame_Commands_ClientTime( dtiki_t *pmdl, int animnum, float start, float end, tiki_cmd_t *tiki_cmd )
|
||||
qboolean TIKI_Frame_Commands_ClientTime(dtiki_t *pmdl, int animnum, float start, float end, tiki_cmd_t *tiki_cmd)
|
||||
{
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
float cmdTime;
|
||||
dtikicmd_t *pcmd;
|
||||
dtikianimdef_t *panimdef;
|
||||
qboolean found;
|
||||
int i;
|
||||
float cmdTime;
|
||||
|
||||
if (!pmdl || !pmdl->a) {
|
||||
return qfalse;
|
||||
|
@ -144,30 +148,33 @@ qboolean TIKI_Frame_Commands_ClientTime( dtiki_t *pmdl, int animnum, float start
|
|||
return qfalse;
|
||||
}
|
||||
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[ animnum ];
|
||||
found = false;
|
||||
tiki_cmd->num_cmds = 0;
|
||||
panimdef = pmdl->a->animdefs[animnum];
|
||||
found = false;
|
||||
|
||||
for( i = 0; i < panimdef->num_client_cmds; i++ )
|
||||
{
|
||||
pcmd = &panimdef->client_cmds[ i ];
|
||||
cmdTime = pcmd->frame_num / 1000.0f;
|
||||
for (i = 0; i < panimdef->num_client_cmds; i++) {
|
||||
pcmd = &panimdef->client_cmds[i];
|
||||
cmdTime = pcmd->frame_num / 1000.0f;
|
||||
|
||||
if( cmdTime >= start && cmdTime <= end )
|
||||
{
|
||||
if( tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS )
|
||||
{
|
||||
TIKI_Error( "TIKI_Frame_Commands_Client: Too many cmds for anim %d times %f %f for %s.\n", animnum, start, end, pmdl->a->name );
|
||||
return false;
|
||||
}
|
||||
if (cmdTime >= start && cmdTime <= end) {
|
||||
if (tiki_cmd->num_cmds >= TIKI_MAX_COMMANDS) {
|
||||
TIKI_Error(
|
||||
"TIKI_Frame_Commands_Client: Too many cmds for anim %d times %f %f for %s.\n",
|
||||
animnum,
|
||||
start,
|
||||
end,
|
||||
pmdl->a->name
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[ tiki_cmd->num_cmds ].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].num_args = pcmd->num_args;
|
||||
tiki_cmd->cmds[tiki_cmd->num_cmds].args = pcmd->args;
|
||||
tiki_cmd->num_cmds++;
|
||||
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,19 +22,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_frames.h : TIKI Frame
|
||||
|
||||
#ifndef __TIKI_FRAME_H__
|
||||
#define __TIKI_FRAME_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
qboolean TIKI_Frame_Commands_Server( dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd );
|
||||
qboolean TIKI_Frame_Commands_Client( dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd );
|
||||
qboolean TIKI_Frame_Commands_ClientTime( dtiki_t *pmdl, int animnum, float start, float end, tiki_cmd_t *tiki_cmd );
|
||||
qboolean TIKI_Frame_Commands_Server(dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd);
|
||||
qboolean TIKI_Frame_Commands_Client(dtiki_t *pmdl, int animnum, int framenum, tiki_cmd_t *tiki_cmd);
|
||||
qboolean TIKI_Frame_Commands_ClientTime(dtiki_t *pmdl, int animnum, float start, float end, tiki_cmd_t *tiki_cmd);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_FRAME_H__
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -26,34 +26,34 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "qcommon.h"
|
||||
#include "tiki_imports.h"
|
||||
|
||||
void TIKI_DPrintf( const char *fmt, ... )
|
||||
void TIKI_DPrintf(const char *fmt, ...)
|
||||
{
|
||||
char msg[ 4096 ];
|
||||
va_list va;
|
||||
char msg[4096];
|
||||
va_list va;
|
||||
|
||||
va_start( va, fmt );
|
||||
vsprintf( msg, fmt, va );
|
||||
va_end( va );
|
||||
va_start(va, fmt);
|
||||
vsprintf(msg, fmt, va);
|
||||
va_end(va);
|
||||
|
||||
Com_DPrintf( "%s", msg );
|
||||
Com_DPrintf("%s", msg);
|
||||
}
|
||||
|
||||
void TIKI_Free( void *ptr )
|
||||
void TIKI_Free(void *ptr)
|
||||
{
|
||||
Z_Free( ptr );
|
||||
Z_Free(ptr);
|
||||
}
|
||||
|
||||
void *TIKI_Alloc( size_t size )
|
||||
void *TIKI_Alloc(size_t size)
|
||||
{
|
||||
return Z_TagMalloc( size, TAG_TIKI );
|
||||
return Z_TagMalloc(size, TAG_TIKI);
|
||||
}
|
||||
|
||||
void TIKI_FreeFile( void *buffer )
|
||||
void TIKI_FreeFile(void *buffer)
|
||||
{
|
||||
FS_FreeFile( buffer );
|
||||
FS_FreeFile(buffer);
|
||||
}
|
||||
|
||||
int TIKI_ReadFileEx( const char *qpath, void **buffer, qboolean quiet )
|
||||
int TIKI_ReadFileEx(const char *qpath, void **buffer, qboolean quiet)
|
||||
{
|
||||
return FS_ReadFileEx( qpath, buffer, quiet );
|
||||
return FS_ReadFileEx(qpath, buffer, quiet);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -28,13 +28,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void TIKI_DPrintf( const char *fmt, ... );
|
||||
void TIKI_DPrintf(const char *fmt, ...);
|
||||
|
||||
void TIKI_Free( void *ptr );
|
||||
void *TIKI_Alloc( size_t size );
|
||||
void TIKI_Free(void *ptr);
|
||||
void *TIKI_Alloc(size_t size);
|
||||
|
||||
void TIKI_FreeFile( void *buffer );
|
||||
int TIKI_ReadFileEx( const char *qpath, void **buffer, qboolean quiet );
|
||||
void TIKI_FreeFile(void *buffer);
|
||||
int TIKI_ReadFileEx(const char *qpath, void **buffer, qboolean quiet);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -24,13 +24,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#include "tiki.h"
|
||||
|
||||
int TIKI_Skel_Bones_Index;
|
||||
int skeletorMorphCacheIndex;
|
||||
int TIKI_Skel_Bones_Index;
|
||||
int skeletorMorphCacheIndex;
|
||||
skelBoneCache_t TIKI_Skel_Bones[MAX_SKELBONES];
|
||||
int skeletorMorphCache[MAX_SKELMORPH];
|
||||
int skeletorMorphCache[MAX_SKELMORPH];
|
||||
|
||||
void TIKI_Reset_Caches()
|
||||
{
|
||||
TIKI_Skel_Bones_Index = 0;
|
||||
TIKI_Skel_Bones_Index = 0;
|
||||
skeletorMorphCacheIndex = 0;
|
||||
}
|
||||
|
|
|
@ -26,15 +26,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MAX_SKELBONES 20000
|
||||
#define MAX_SKELMORPH 12800
|
||||
#define MAX_SKELBONES 20000
|
||||
#define MAX_SKELMORPH 12800
|
||||
|
||||
extern int TIKI_Skel_Bones_Index;
|
||||
extern int skeletorMorphCacheIndex;
|
||||
extern skelBoneCache_t TIKI_Skel_Bones[];
|
||||
extern int skeletorMorphCache[];
|
||||
extern int TIKI_Skel_Bones_Index;
|
||||
extern int skeletorMorphCacheIndex;
|
||||
extern skelBoneCache_t TIKI_Skel_Bones[];
|
||||
extern int skeletorMorphCache[];
|
||||
|
||||
void TIKI_Reset_Caches();
|
||||
void TIKI_Reset_Caches();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -20,38 +20,58 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifndef TIKI_PARSE_H
|
||||
#define TIKI_PARSE_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
const char *TIKI_FileExtension( const char *in );
|
||||
void TIKI_ParseFrameCommands( dloaddef_t *ld, dloadframecmd_t **cmdlist, int maxcmds, int *numcmds );
|
||||
void TIKI_ParseAnimationCommands( dloaddef_t *ld, dloadanim_t *anim );
|
||||
void TIKI_ParseAnimationFlags( dloaddef_t *ld, dloadanim_t *anim );
|
||||
void TIKI_ParseAnimationsFail( dloaddef_t *ld );
|
||||
qboolean TIKI_ParseIncludes( dloaddef_t *ld );
|
||||
void TIKI_ParseAnimations( dloaddef_t *ld );
|
||||
int TIKI_ParseSurfaceFlag( const char *token );
|
||||
void TIKI_InitSetup( dloaddef_t *ld );
|
||||
const char *TIKI_FileExtension(const char *in);
|
||||
void TIKI_ParseFrameCommands(dloaddef_t *ld, dloadframecmd_t **cmdlist, int maxcmds, int *numcmds);
|
||||
void TIKI_ParseAnimationCommands(dloaddef_t *ld, dloadanim_t *anim);
|
||||
void TIKI_ParseAnimationFlags(dloaddef_t *ld, dloadanim_t *anim);
|
||||
void TIKI_ParseAnimationsFail(dloaddef_t *ld);
|
||||
qboolean TIKI_ParseIncludes(dloaddef_t *ld);
|
||||
void TIKI_ParseAnimations(dloaddef_t *ld);
|
||||
int TIKI_ParseSurfaceFlag(const char *token);
|
||||
void TIKI_InitSetup(dloaddef_t *ld);
|
||||
|
||||
#ifdef __cplusplus
|
||||
qboolean TIKI_LoadSetupCaseHeader( dtiki_t *tiki, const char *filename, dloadsurface_t *loadsurfaces, int *numSurfacesSetUp, msg_t *msg, qboolean skip, con_map<str, str> *keyValues );
|
||||
qboolean TIKI_LoadSetupCase( dtiki_t *tiki, const char *filename, dloadsurface_t *loadsurfaces, int *numSurfacesSetUp, msg_t *msg, qboolean skip, con_map<str, str> *keyValues );
|
||||
qboolean TIKI_LoadSetup( dtiki_t *tiki, const char *filename, dloadsurface_t *loadsurfaces, int *numSurfacesSetUp, byte *modelData, size_t modelDataSize, con_map<str, str> *keyValues );
|
||||
bool TIKI_strstr( const char *s, const char *substring );
|
||||
qboolean TIKI_LoadSetupCaseHeader(
|
||||
dtiki_t *tiki,
|
||||
const char *filename,
|
||||
dloadsurface_t *loadsurfaces,
|
||||
int *numSurfacesSetUp,
|
||||
msg_t *msg,
|
||||
qboolean skip,
|
||||
con_map<str, str> *keyValues
|
||||
);
|
||||
qboolean TIKI_LoadSetupCase(
|
||||
dtiki_t *tiki,
|
||||
const char *filename,
|
||||
dloadsurface_t *loadsurfaces,
|
||||
int *numSurfacesSetUp,
|
||||
msg_t *msg,
|
||||
qboolean skip,
|
||||
con_map<str, str> *keyValues
|
||||
);
|
||||
qboolean TIKI_LoadSetup(
|
||||
dtiki_t *tiki,
|
||||
const char *filename,
|
||||
dloadsurface_t *loadsurfaces,
|
||||
int *numSurfacesSetUp,
|
||||
byte *modelData,
|
||||
size_t modelDataSize,
|
||||
con_map<str, str> *keyValues
|
||||
);
|
||||
bool TIKI_strstr(const char *s, const char *substring);
|
||||
#endif
|
||||
|
||||
qboolean TIKI_ParseSetup( dloaddef_t *ld );
|
||||
void TIKI_ParseInitCommands( dloaddef_t *ld, dloadinitcmd_t **cmdlist, int maxcmds, int *numcmds );
|
||||
void TIKI_ParseInit( dloaddef_t *ld );
|
||||
qboolean TIKI_ParseCase( dloaddef_t *ld );
|
||||
qboolean TIKI_ParseSetup(dloaddef_t *ld);
|
||||
void TIKI_ParseInitCommands(dloaddef_t *ld, dloadinitcmd_t **cmdlist, int maxcmds, int *numcmds);
|
||||
void TIKI_ParseInit(dloaddef_t *ld);
|
||||
qboolean TIKI_ParseCase(dloaddef_t *ld);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // TIKI_PARSE_H
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -25,273 +25,274 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include "../skeletor/skeletor_name_lists.h"
|
||||
# include "../skeletor/skeletor_name_lists.h"
|
||||
#endif
|
||||
|
||||
#include "../skeletor/skeletor_model_file_format.h"
|
||||
|
||||
// animation flags
|
||||
#define TAF_RANDOM 0x1 // random
|
||||
#define TAF_NOREPEAT 0x2 // no loop
|
||||
#define TAF_DONTREPEAT ( TAF_RANDOM | TAF_NOREPEAT ) // don't repeat
|
||||
#define TAF_DEFAULT_ANGLES 0x8 // ?
|
||||
#define TAF_NOTIMECHECK 0x10 // don't check for timing
|
||||
#define TAF_DELTADRIVEN 0x20 // animation is based on skeletor animation's delta
|
||||
#define TAF_AUTOSTEPS 0x400 // footsteps for dogs
|
||||
#define TAF_AUTOSTEPS_RUNNING 0x800 // footsteps for dogs
|
||||
#define TAF_AUTOSTEPS_EQUIPMENT 0x1000
|
||||
#define TAF_RANDOM 0x1 // random
|
||||
#define TAF_NOREPEAT 0x2 // no loop
|
||||
#define TAF_DONTREPEAT (TAF_RANDOM | TAF_NOREPEAT) // don't repeat
|
||||
#define TAF_DEFAULT_ANGLES 0x8 // ?
|
||||
#define TAF_NOTIMECHECK 0x10 // don't check for timing
|
||||
#define TAF_DELTADRIVEN 0x20 // animation is based on skeletor animation's delta
|
||||
#define TAF_AUTOSTEPS 0x400 // footsteps for dogs
|
||||
#define TAF_AUTOSTEPS_RUNNING 0x800 // footsteps for dogs
|
||||
#define TAF_AUTOSTEPS_EQUIPMENT 0x1000
|
||||
|
||||
// skeletor animation flags
|
||||
#define TAF_HASDELTA 0x40
|
||||
#define TAF_HASMORPH 0x80
|
||||
#define TAF_HASUPPER 0x100
|
||||
#define TAF_HASDELTA 0x40
|
||||
#define TAF_HASMORPH 0x80
|
||||
#define TAF_HASUPPER 0x100
|
||||
|
||||
// tiki anim command frames
|
||||
#define TIKI_FRAME_LAST -5 // exec at last
|
||||
#define TIKI_FRAME_END -4 // exec at end
|
||||
#define TIKI_FRAME_ENTRY -3 // exec at entry
|
||||
#define TIKI_FRAME_EXIT -2 // exec at exit
|
||||
#define TIKI_FRAME_EVERY -1 // exec each frame
|
||||
#define TIKI_FRAME_FIRST 0 // exec at first frame
|
||||
#define TIKI_FRAME_MAXFRAMERATE 60
|
||||
#define TIKI_FRAME_LAST -5 // exec at last
|
||||
#define TIKI_FRAME_END -4 // exec at end
|
||||
#define TIKI_FRAME_ENTRY -3 // exec at entry
|
||||
#define TIKI_FRAME_EXIT -2 // exec at exit
|
||||
#define TIKI_FRAME_EVERY -1 // exec each frame
|
||||
#define TIKI_FRAME_FIRST 0 // exec at first frame
|
||||
#define TIKI_FRAME_MAXFRAMERATE 60
|
||||
|
||||
// skb skeletor
|
||||
#define TIKI_SKB_HEADER_IDENT ( *( int * )"SKL " )
|
||||
#define TIKI_SKB_HEADER_VER_3 3
|
||||
#define TIKI_SKB_HEADER_VERSION 4
|
||||
#define TIKI_SKB_HEADER_IDENT (*(int *)"SKL ")
|
||||
#define TIKI_SKB_HEADER_VER_3 3
|
||||
#define TIKI_SKB_HEADER_VERSION 4
|
||||
|
||||
// skd skeletor
|
||||
#define TIKI_SKD_HEADER_IDENT ( *( int * )"SKMD" )
|
||||
#define TIKI_SKD_HEADER_OLD_VERSION 5
|
||||
#define TIKI_SKD_HEADER_VERSION 6
|
||||
#define TIKI_SKD_HEADER_IDENT (*(int *)"SKMD")
|
||||
#define TIKI_SKD_HEADER_OLD_VERSION 5
|
||||
#define TIKI_SKD_HEADER_VERSION 6
|
||||
|
||||
// skc skeletor animations
|
||||
#define TIKI_SKC_HEADER_IDENT ( *( int * )"SKAN" )
|
||||
#define TIKI_SKC_HEADER_OLD_VERSION 13
|
||||
#define TIKI_SKC_HEADER_VERSION 14
|
||||
#define TIKI_SKC_HEADER_IDENT (*(int *)"SKAN")
|
||||
#define TIKI_SKC_HEADER_OLD_VERSION 13
|
||||
#define TIKI_SKC_HEADER_VERSION 14
|
||||
|
||||
// tiki limitations
|
||||
#define TIKI_MAX_BONES 100
|
||||
#define TIKI_MAX_VERTEXES 1000
|
||||
#define TIKI_MAX_TRIANGLES 2000
|
||||
#define TIKI_MAX_SKELCACHE 1024
|
||||
#define TIKI_MAX_COMMANDS 128
|
||||
#define TIKI_MAX_BONES 100
|
||||
#define TIKI_MAX_VERTEXES 1000
|
||||
#define TIKI_MAX_TRIANGLES 2000
|
||||
#define TIKI_MAX_SKELCACHE 1024
|
||||
#define TIKI_MAX_COMMANDS 128
|
||||
|
||||
// tiki surface flags
|
||||
#define TIKI_SURF_SKIN1 ( 1 << 0 )
|
||||
#define TIKI_SURF_SKIN2 ( 1 << 1 )
|
||||
#define TIKI_SURF_SKIN3 ( TIKI_SURF_SKIN1 | TIKI_SURF_SKIN2 )
|
||||
#define TIKI_SURF_NODRAW ( 1 << 2 )
|
||||
#define TIKI_SURF_CROSSFADE ( 1 << 6 )
|
||||
#define TIKI_SURF_NODAMAGE ( 1 << 7 )
|
||||
#define TIKI_SURF_NOMIPMAPS ( 1 << 8 )
|
||||
#define TIKI_SURF_NOPICMIP ( 1 << 9 )
|
||||
#define TIKI_SURF_SKIN1 (1 << 0)
|
||||
#define TIKI_SURF_SKIN2 (1 << 1)
|
||||
#define TIKI_SURF_SKIN3 (TIKI_SURF_SKIN1 | TIKI_SURF_SKIN2)
|
||||
#define TIKI_SURF_NODRAW (1 << 2)
|
||||
#define TIKI_SURF_CROSSFADE (1 << 6)
|
||||
#define TIKI_SURF_NODAMAGE (1 << 7)
|
||||
#define TIKI_SURF_NOMIPMAPS (1 << 8)
|
||||
#define TIKI_SURF_NOPICMIP (1 << 9)
|
||||
|
||||
#define MAX_SKELMODELS 12
|
||||
#define MAX_TIKI_SHADER 4
|
||||
#define MAX_SKELMODELS 12
|
||||
#define MAX_TIKI_SHADER 4
|
||||
|
||||
typedef struct AliasList_s AliasList_t;
|
||||
typedef struct AliasList_s AliasList_t;
|
||||
typedef struct AliasListNode_s AliasListNode_t;
|
||||
|
||||
typedef struct tiki_singlecmd_s {
|
||||
int num_args;
|
||||
char **args;
|
||||
int num_args;
|
||||
char **args;
|
||||
} tiki_singlecmd_t;
|
||||
|
||||
typedef struct tiki_cmd_s {
|
||||
int num_cmds;
|
||||
tiki_singlecmd_t cmds[ TIKI_MAX_COMMANDS ];
|
||||
int num_cmds;
|
||||
tiki_singlecmd_t cmds[TIKI_MAX_COMMANDS];
|
||||
} tiki_cmd_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
typedef class skelChannelList_s {
|
||||
typedef class skelChannelList_s
|
||||
{
|
||||
public:
|
||||
short int m_numChannels;
|
||||
short int m_numChannels;
|
||||
|
||||
private:
|
||||
short int m_numLocalFromGlobal;
|
||||
short int *m_chanLocalFromGlobal;
|
||||
short int m_numLocalFromGlobal;
|
||||
short int *m_chanLocalFromGlobal;
|
||||
|
||||
public:
|
||||
short int m_chanGlobalFromLocal[ 200 ];
|
||||
short int m_chanGlobalFromLocal[200];
|
||||
|
||||
int NumChannels( void ) const;
|
||||
void ZeroChannels( void );
|
||||
void PackChannels( void );
|
||||
void InitChannels( void );
|
||||
void CleanUpChannels();
|
||||
int GlobalChannel( int localchannel ) const;
|
||||
int LocalChannel( int channel ) const;
|
||||
int GetLocalFromGlobal( int globalChannel ) const;
|
||||
void SetLocalFromGlobal( int channel, int localchannel );
|
||||
qboolean HasChannel( ChannelNameTable *nameTable, const char *channelName ) const;
|
||||
qboolean HasChannel( int channel ) const;
|
||||
int AddChannel( int newGlobalChannelNum );
|
||||
const char *ChannelName( ChannelNameTable *nameTable, int localChannelNum ) const;
|
||||
int NumChannels(void) const;
|
||||
void ZeroChannels(void);
|
||||
void PackChannels(void);
|
||||
void InitChannels(void);
|
||||
void CleanUpChannels();
|
||||
int GlobalChannel(int localchannel) const;
|
||||
int LocalChannel(int channel) const;
|
||||
int GetLocalFromGlobal(int globalChannel) const;
|
||||
void SetLocalFromGlobal(int channel, int localchannel);
|
||||
qboolean HasChannel(ChannelNameTable *nameTable, const char *channelName) const;
|
||||
qboolean HasChannel(int channel) const;
|
||||
int AddChannel(int newGlobalChannelNum);
|
||||
const char *ChannelName(ChannelNameTable *nameTable, int localChannelNum) const;
|
||||
} skelChannelList_c;
|
||||
|
||||
#else
|
||||
|
||||
typedef struct skelChannelList_s {
|
||||
short int m_numChannels;
|
||||
short int m_numLocalFromGlobal;
|
||||
short int *m_chanLocalFromGlobal;
|
||||
short int m_chanGlobalFromLocal[ 200 ];
|
||||
short int m_numChannels;
|
||||
short int m_numLocalFromGlobal;
|
||||
short int *m_chanLocalFromGlobal;
|
||||
short int m_chanGlobalFromLocal[200];
|
||||
} skelChannelList_c;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct dtikianim_s {
|
||||
char *name;
|
||||
int num_anims;
|
||||
void *alias_list;
|
||||
int num_client_initcmds;
|
||||
struct dtikicmd_s *client_initcmds;
|
||||
int num_server_initcmds;
|
||||
struct dtikicmd_s *server_initcmds;
|
||||
byte *modelData;
|
||||
size_t modelDataSize;
|
||||
float mins[ 3 ];
|
||||
float maxs[ 3 ];
|
||||
short int *m_aliases;
|
||||
char *headmodels;
|
||||
char *headskins;
|
||||
qboolean bIsCharacter;
|
||||
struct dtikianimdef_s *animdefs[ 1 ];
|
||||
char *name;
|
||||
int num_anims;
|
||||
void *alias_list;
|
||||
int num_client_initcmds;
|
||||
struct dtikicmd_s *client_initcmds;
|
||||
int num_server_initcmds;
|
||||
struct dtikicmd_s *server_initcmds;
|
||||
byte *modelData;
|
||||
size_t modelDataSize;
|
||||
float mins[3];
|
||||
float maxs[3];
|
||||
short int *m_aliases;
|
||||
char *headmodels;
|
||||
char *headskins;
|
||||
qboolean bIsCharacter;
|
||||
struct dtikianimdef_s *animdefs[1];
|
||||
} dtikianim_t;
|
||||
|
||||
typedef struct dtiki_s {
|
||||
char *name;
|
||||
dtikianim_t *a;
|
||||
void *skeletor;
|
||||
int num_surfaces;
|
||||
struct dtikisurface_s *surfaces;
|
||||
float load_scale;
|
||||
float lod_scale;
|
||||
float lod_bias;
|
||||
float light_offset[ 3 ];
|
||||
float load_origin[ 3 ];
|
||||
float radius;
|
||||
skelChannelList_c m_boneList;
|
||||
int numMeshes;
|
||||
short int mesh[ 1 ];
|
||||
char *name;
|
||||
dtikianim_t *a;
|
||||
void *skeletor;
|
||||
int num_surfaces;
|
||||
struct dtikisurface_s *surfaces;
|
||||
float load_scale;
|
||||
float lod_scale;
|
||||
float lod_bias;
|
||||
float light_offset[3];
|
||||
float load_origin[3];
|
||||
float radius;
|
||||
skelChannelList_c m_boneList;
|
||||
int numMeshes;
|
||||
short int mesh[1];
|
||||
|
||||
#ifdef __cplusplus
|
||||
int GetBoneNumFromName( const char *name );
|
||||
const char *GetBoneNameFromNum( int num ) const;
|
||||
int GetBoneNumFromName(const char *name);
|
||||
const char *GetBoneNameFromNum(int num) const;
|
||||
#endif
|
||||
} dtiki_t;
|
||||
|
||||
typedef struct {
|
||||
int ident;
|
||||
int version;
|
||||
char name[ 64 ];
|
||||
int numSurfaces;
|
||||
int numBones;
|
||||
int ofsBones;
|
||||
int ofsSurfaces;
|
||||
int ofsEnd;
|
||||
int lodIndex[ 10 ];
|
||||
int numBoxes;
|
||||
int ofsBoxes;
|
||||
int numMorphTargets;
|
||||
int ofsMorphTargets;
|
||||
int ident;
|
||||
int version;
|
||||
char name[64];
|
||||
int numSurfaces;
|
||||
int numBones;
|
||||
int ofsBones;
|
||||
int ofsSurfaces;
|
||||
int ofsEnd;
|
||||
int lodIndex[10];
|
||||
int numBoxes;
|
||||
int ofsBoxes;
|
||||
int numMorphTargets;
|
||||
int ofsMorphTargets;
|
||||
} skelHeader_t;
|
||||
|
||||
typedef struct {
|
||||
short int parent;
|
||||
short int boxIndex;
|
||||
int flags;
|
||||
char name[ 64 ];
|
||||
short int parent;
|
||||
short int boxIndex;
|
||||
int flags;
|
||||
char name[64];
|
||||
} skelBoneName_t;
|
||||
|
||||
typedef struct {
|
||||
int ident;
|
||||
char name[ 64 ];
|
||||
int numTriangles;
|
||||
int numVerts;
|
||||
int staticSurfProcessed;
|
||||
int ofsTriangles;
|
||||
int ofsVerts;
|
||||
int ofsCollapse;
|
||||
int ofsEnd;
|
||||
int ofsCollapseIndex;
|
||||
int ident;
|
||||
char name[64];
|
||||
int numTriangles;
|
||||
int numVerts;
|
||||
int staticSurfProcessed;
|
||||
int ofsTriangles;
|
||||
int ofsVerts;
|
||||
int ofsCollapse;
|
||||
int ofsEnd;
|
||||
int ofsCollapseIndex;
|
||||
} skelSurface_t;
|
||||
|
||||
typedef short int skelIndex_t;
|
||||
|
||||
typedef struct skelSurfaceGame_s {
|
||||
int ident;
|
||||
char name[ MAX_QPATH ];
|
||||
int numTriangles;
|
||||
int numVerts;
|
||||
vec4_t *pStaticXyz;
|
||||
vec4_t *pStaticNormal;
|
||||
vec2_t ( *pStaticTexCoords )[ 2 ];
|
||||
skelIndex_t *pTriangles;
|
||||
struct skeletorVertex_s *pVerts;
|
||||
skelIndex_t *pCollapse;
|
||||
struct skelSurfaceGame_s *pNext;
|
||||
skelIndex_t *pCollapseIndex;
|
||||
typedef struct skelSurfaceGame_s {
|
||||
int ident;
|
||||
char name[MAX_QPATH];
|
||||
int numTriangles;
|
||||
int numVerts;
|
||||
vec4_t *pStaticXyz;
|
||||
vec4_t *pStaticNormal;
|
||||
vec2_t (*pStaticTexCoords)[2];
|
||||
skelIndex_t *pTriangles;
|
||||
struct skeletorVertex_s *pVerts;
|
||||
skelIndex_t *pCollapse;
|
||||
struct skelSurfaceGame_s *pNext;
|
||||
skelIndex_t *pCollapseIndex;
|
||||
|
||||
#ifdef __cplusplus
|
||||
skelSurfaceGame_s();
|
||||
skelSurfaceGame_s();
|
||||
#endif
|
||||
} skelSurfaceGame_t;
|
||||
|
||||
typedef struct skelHeaderGame_s {
|
||||
int version;
|
||||
char name[ 64 ];
|
||||
int numSurfaces;
|
||||
int numBones;
|
||||
struct boneData_s *pBones;
|
||||
skelSurfaceGame_t *pSurfaces;
|
||||
int lodIndex[ 10 ];
|
||||
int numBoxes;
|
||||
struct skelHitBox_s *pBoxes;
|
||||
struct lodControl_s *pLOD;
|
||||
int numMorphTargets;
|
||||
char *pMorphTargets;
|
||||
int version;
|
||||
char name[64];
|
||||
int numSurfaces;
|
||||
int numBones;
|
||||
struct boneData_s *pBones;
|
||||
skelSurfaceGame_t *pSurfaces;
|
||||
int lodIndex[10];
|
||||
int numBoxes;
|
||||
struct skelHitBox_s *pBoxes;
|
||||
struct lodControl_s *pLOD;
|
||||
int numMorphTargets;
|
||||
char *pMorphTargets;
|
||||
} skelHeaderGame_t;
|
||||
|
||||
typedef struct boneData_s {
|
||||
short int channel;
|
||||
boneType_t boneType;
|
||||
short int parent;
|
||||
short int numChannels;
|
||||
short int numRefs;
|
||||
short int channelIndex[ 2 ];
|
||||
short int refIndex[ 2 ];
|
||||
vec3_t offset;
|
||||
float length;
|
||||
float weight;
|
||||
float bendRatio;
|
||||
float bendMax;
|
||||
float spinRatio;
|
||||
short int channel;
|
||||
boneType_t boneType;
|
||||
short int parent;
|
||||
short int numChannels;
|
||||
short int numRefs;
|
||||
short int channelIndex[2];
|
||||
short int refIndex[2];
|
||||
vec3_t offset;
|
||||
float length;
|
||||
float weight;
|
||||
float bendRatio;
|
||||
float bendMax;
|
||||
float spinRatio;
|
||||
} boneData_t;
|
||||
|
||||
typedef struct tikiSurface_s {
|
||||
int ident;
|
||||
char name[ 64 ];
|
||||
int numFrames;
|
||||
int numVerts;
|
||||
int minLod;
|
||||
int numTriangles;
|
||||
int ofsTriangles;
|
||||
int ofsCollapseMap;
|
||||
int ofsSt;
|
||||
int ofsXyzNormals;
|
||||
int ofsEnd;
|
||||
int ident;
|
||||
char name[64];
|
||||
int numFrames;
|
||||
int numVerts;
|
||||
int minLod;
|
||||
int numTriangles;
|
||||
int ofsTriangles;
|
||||
int ofsCollapseMap;
|
||||
int ofsSt;
|
||||
int ofsXyzNormals;
|
||||
int ofsEnd;
|
||||
} tikiSurface_t;
|
||||
|
||||
typedef struct dtikisurface_s {
|
||||
char name[ MAX_QPATH ];
|
||||
char shader[ MAX_TIKI_SHADER ][ MAX_QPATH ];
|
||||
int hShader[ MAX_TIKI_SHADER ];
|
||||
int numskins;
|
||||
int flags;
|
||||
float damage_multiplier;
|
||||
char name[MAX_QPATH];
|
||||
char shader[MAX_TIKI_SHADER][MAX_QPATH];
|
||||
int hShader[MAX_TIKI_SHADER];
|
||||
int numskins;
|
||||
int flags;
|
||||
float damage_multiplier;
|
||||
} dtikisurface_t;
|
||||
|
||||
/*typedef struct tikiFrame_s {
|
||||
|
@ -304,113 +305,113 @@ typedef struct dtikisurface_s {
|
|||
} tikiFrame_t;*/
|
||||
|
||||
typedef struct tiki_tess_data_s {
|
||||
int ident;
|
||||
tikiSurface_t *newsurface;
|
||||
tikiSurface_t *oldsurface;
|
||||
int ident;
|
||||
tikiSurface_t *newsurface;
|
||||
tikiSurface_t *oldsurface;
|
||||
} tiki_tess_data_t;
|
||||
|
||||
typedef struct skelWeight_s {
|
||||
int boneIndex;
|
||||
float boneWeight;
|
||||
vec3_t offset;
|
||||
int boneIndex;
|
||||
float boneWeight;
|
||||
vec3_t offset;
|
||||
} skelWeight_t;
|
||||
|
||||
typedef struct skelVertex_s {
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
skelWeight_t weights[ 1 ];
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
skelWeight_t weights[1];
|
||||
} skelVertex_t;
|
||||
|
||||
typedef struct skeletorVertex_s {
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
int numMorphs;
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
int numMorphs;
|
||||
} skeletorVertex_t;
|
||||
|
||||
typedef struct skeletorVertexGame_s {
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
int numMorphs;
|
||||
vec3_t normal;
|
||||
vec2_t texCoords;
|
||||
int numWeights;
|
||||
int numMorphs;
|
||||
} skeletorVertexGame_t;
|
||||
|
||||
typedef struct staticSurface_s {
|
||||
int ident;
|
||||
int ofsStaticData;
|
||||
skelSurfaceGame_t *surface;
|
||||
int meshNum;
|
||||
int ident;
|
||||
int ofsStaticData;
|
||||
skelSurfaceGame_t *surface;
|
||||
int meshNum;
|
||||
} staticSurface_t;
|
||||
|
||||
typedef struct {
|
||||
int morphIndex;
|
||||
vec3_t offset;
|
||||
int morphIndex;
|
||||
vec3_t offset;
|
||||
} skeletorMorph_t;
|
||||
|
||||
typedef struct dtikianimdef_s {
|
||||
char alias[ 48 ];
|
||||
float weight;
|
||||
float blendtime;
|
||||
int flags;
|
||||
int num_client_cmds;
|
||||
struct dtikicmd_s *client_cmds;
|
||||
int num_server_cmds;
|
||||
struct dtikicmd_s *server_cmds;
|
||||
char alias[48];
|
||||
float weight;
|
||||
float blendtime;
|
||||
int flags;
|
||||
int num_client_cmds;
|
||||
struct dtikicmd_s *client_cmds;
|
||||
int num_server_cmds;
|
||||
struct dtikicmd_s *server_cmds;
|
||||
} dtikianimdef_t;
|
||||
|
||||
typedef struct {
|
||||
short int shortQuat[ 4 ];
|
||||
short int shortOffset[ 3 ];
|
||||
short int pad;
|
||||
short int shortQuat[4];
|
||||
short int shortOffset[3];
|
||||
short int pad;
|
||||
} skelBone_t;
|
||||
|
||||
typedef struct {
|
||||
float bounds[ 2 ][ 3 ];
|
||||
float radius;
|
||||
float delta[ 3 ];
|
||||
skelBone_t bones[ 1 ];
|
||||
float bounds[2][3];
|
||||
float radius;
|
||||
float delta[3];
|
||||
skelBone_t bones[1];
|
||||
} skelFrame_t;
|
||||
|
||||
typedef struct {
|
||||
int ident;
|
||||
int version;
|
||||
char name[ 64 ];
|
||||
int type;
|
||||
int numFrames;
|
||||
int numbones;
|
||||
float totaltime;
|
||||
float frametime;
|
||||
float totaldelta[ 3 ];
|
||||
int ofsFrames;
|
||||
int ident;
|
||||
int version;
|
||||
char name[64];
|
||||
int type;
|
||||
int numFrames;
|
||||
int numbones;
|
||||
float totaltime;
|
||||
float frametime;
|
||||
float totaldelta[3];
|
||||
int ofsFrames;
|
||||
} skelAnimHeader_t;
|
||||
|
||||
typedef struct {
|
||||
float offset[ 4 ];
|
||||
float matrix[ 3 ][ 4 ];
|
||||
float offset[4];
|
||||
float matrix[3][4];
|
||||
} skelBoneCache_t;
|
||||
|
||||
typedef struct {
|
||||
float pos;
|
||||
float val;
|
||||
float pos;
|
||||
float val;
|
||||
} lodCurvePoint_t;
|
||||
|
||||
typedef struct {
|
||||
float base;
|
||||
float scale;
|
||||
float cutoff;
|
||||
float base;
|
||||
float scale;
|
||||
float cutoff;
|
||||
} lodCurvePointConstants_t;
|
||||
|
||||
typedef struct lodControl_s {
|
||||
float minMetric;
|
||||
float maxMetric;
|
||||
lodCurvePoint_t curve[ 5 ];
|
||||
lodCurvePointConstants_t consts[ 4 ];
|
||||
float minMetric;
|
||||
float maxMetric;
|
||||
lodCurvePoint_t curve[5];
|
||||
lodCurvePointConstants_t consts[4];
|
||||
} lodControl_t;
|
||||
|
||||
typedef struct {
|
||||
char path[ 96 ];
|
||||
skelHeaderGame_t *skel;
|
||||
size_t size;
|
||||
int numuses;
|
||||
char path[96];
|
||||
skelHeaderGame_t *skel;
|
||||
size_t size;
|
||||
int numuses;
|
||||
} skelcache_t;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,30 +22,27 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_skel.h : TIKI Skeletor
|
||||
|
||||
#ifndef __TIKI_SKEL_H__
|
||||
#define __TIKI_SKEL_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void TIKI_CacheFileSkel( skelHeader_t *pHeader, skelcache_t *cache, int length );
|
||||
void TIKI_CalcLodConsts( lodControl_t *LOD );
|
||||
qboolean TIKI_LoadSKB( const char *path, skelcache_t *cache );
|
||||
qboolean TIKI_LoadSKD( const char *path, skelcache_t *cache );
|
||||
skelHeaderGame_t *TIKI_GetSkel( int index );
|
||||
int TIKI_GetSkelCache( skelHeaderGame_t *pSkel );
|
||||
void TIKI_FreeSkel( int index );
|
||||
void TIKI_FreeSkelCache( skelcache_t *cache );
|
||||
skelcache_t *TIKI_FindSkel( const char *path );
|
||||
skelcache_t *TIKI_FindFreeSkel( void );
|
||||
int TIKI_RegisterSkel( const char *path, dtiki_t *tiki );
|
||||
void TIKI_CacheFileSkel(skelHeader_t *pHeader, skelcache_t *cache, int length);
|
||||
void TIKI_CalcLodConsts(lodControl_t *LOD);
|
||||
qboolean TIKI_LoadSKB(const char *path, skelcache_t *cache);
|
||||
qboolean TIKI_LoadSKD(const char *path, skelcache_t *cache);
|
||||
skelHeaderGame_t *TIKI_GetSkel(int index);
|
||||
int TIKI_GetSkelCache(skelHeaderGame_t *pSkel);
|
||||
void TIKI_FreeSkel(int index);
|
||||
void TIKI_FreeSkelCache(skelcache_t *cache);
|
||||
skelcache_t *TIKI_FindSkel(const char *path);
|
||||
skelcache_t *TIKI_FindFreeSkel(void);
|
||||
int TIKI_RegisterSkel(const char *path, dtiki_t *tiki);
|
||||
|
||||
void SaveLODFile( const char *path, lodControl_t *LOD );
|
||||
void GetLODFile( skelcache_t *cache );
|
||||
void SaveLODFile(const char *path, lodControl_t *LOD);
|
||||
void GetLODFile(skelcache_t *cache);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_SKEL_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -31,20 +31,20 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
TIKI_Surface_NameToNum
|
||||
===============
|
||||
*/
|
||||
int TIKI_Surface_NameToNum( dtiki_t *pmdl, const char *name )
|
||||
int TIKI_Surface_NameToNum(dtiki_t *pmdl, const char *name)
|
||||
{
|
||||
int i;
|
||||
dtikisurface_t *psurface;
|
||||
int i;
|
||||
dtikisurface_t *psurface;
|
||||
|
||||
for( i = 0; i < pmdl->num_surfaces; i++ )
|
||||
{
|
||||
psurface = &pmdl->surfaces[ i ];
|
||||
for (i = 0; i < pmdl->num_surfaces; i++) {
|
||||
psurface = &pmdl->surfaces[i];
|
||||
|
||||
if( !stricmp( psurface->name, name ) )
|
||||
return i;
|
||||
}
|
||||
if (!stricmp(psurface->name, name)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -52,14 +52,13 @@ int TIKI_Surface_NameToNum( dtiki_t *pmdl, const char *name )
|
|||
TIKI_Surface_NumToName
|
||||
===============
|
||||
*/
|
||||
const char *TIKI_Surface_NumToName( dtiki_t *pmdl, int num )
|
||||
const char *TIKI_Surface_NumToName(dtiki_t *pmdl, int num)
|
||||
{
|
||||
if( num < 0 || num >= pmdl->num_surfaces )
|
||||
{
|
||||
TIKI_Error( "TIKI_Surface_NumToName: Surface %d out of range for %s.\n", num, pmdl->a->name );
|
||||
return NULL;
|
||||
}
|
||||
if (num < 0 || num >= pmdl->num_surfaces) {
|
||||
TIKI_Error("TIKI_Surface_NumToName: Surface %d out of range for %s.\n", num, pmdl->a->name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
assert( pmdl->surfaces[ num ].name[ 0 ] );
|
||||
return pmdl->surfaces[ num ].name;
|
||||
assert(pmdl->surfaces[num].name[0]);
|
||||
return pmdl->surfaces[num].name;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,18 +22,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_surface.h : TIKI Surface
|
||||
|
||||
#ifndef __TIKI_SURFACE_H__
|
||||
#define __TIKI_SURFACE_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int TIKI_Surface_NameToNum( dtiki_t *pmdl, const char *name );
|
||||
const char *TIKI_Surface_NumToName( dtiki_t *pmdl, int num );
|
||||
int TIKI_Surface_NameToNum(dtiki_t *pmdl, const char *name);
|
||||
const char *TIKI_Surface_NumToName(dtiki_t *pmdl, int num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_IMPORTS_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -33,9 +33,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
TIKI_Tag_NameToNum
|
||||
===============
|
||||
*/
|
||||
int TIKI_Tag_NameToNum(dtiki_t* pmdl, const char* name)
|
||||
int TIKI_Tag_NameToNum(dtiki_t *pmdl, const char *name)
|
||||
{
|
||||
return pmdl->GetBoneNumFromName(name);
|
||||
return pmdl->GetBoneNumFromName(name);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -43,9 +43,9 @@ int TIKI_Tag_NameToNum(dtiki_t* pmdl, const char* name)
|
|||
TIKI_Tag_NumToName
|
||||
===============
|
||||
*/
|
||||
const char* TIKI_Tag_NumToName(dtiki_t* pmdl, int iTagNum)
|
||||
const char *TIKI_Tag_NumToName(dtiki_t *pmdl, int iTagNum)
|
||||
{
|
||||
return pmdl->GetBoneNameFromNum(iTagNum);
|
||||
return pmdl->GetBoneNameFromNum(iTagNum);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -53,16 +53,16 @@ const char* TIKI_Tag_NumToName(dtiki_t* pmdl, int iTagNum)
|
|||
TIKI_TransformInternal
|
||||
===============
|
||||
*/
|
||||
SkelMat4* TIKI_TransformInternal(dtiki_t* tiki, int entnum, int tagnum)
|
||||
SkelMat4 *TIKI_TransformInternal(dtiki_t *tiki, int entnum, int tagnum)
|
||||
{
|
||||
skeletor_c* skeletor;
|
||||
skeletor_c *skeletor;
|
||||
|
||||
if (tagnum < 0 || !tiki || tagnum >= tiki->m_boneList.NumChannels()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
return &skeletor->GetBoneFrame(tagnum);
|
||||
skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
return &skeletor->GetBoneFrame(tagnum);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -70,16 +70,16 @@ SkelMat4* TIKI_TransformInternal(dtiki_t* tiki, int entnum, int tagnum)
|
|||
TIKI_IsOnGroundInternal
|
||||
===============
|
||||
*/
|
||||
qboolean TIKI_IsOnGroundInternal(dtiki_t* tiki, int entnum, int tagnum, float threshold)
|
||||
qboolean TIKI_IsOnGroundInternal(dtiki_t *tiki, int entnum, int tagnum, float threshold)
|
||||
{
|
||||
skeletor_c* skeletor;
|
||||
skeletor_c *skeletor;
|
||||
|
||||
if (tagnum < 0 || !tiki || tagnum >= tiki->m_boneList.NumChannels()) {
|
||||
return qfalse;
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->IsBoneOnGround(tagnum, threshold);
|
||||
skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->IsBoneOnGround(tagnum, threshold);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -87,22 +87,22 @@ qboolean TIKI_IsOnGroundInternal(dtiki_t* tiki, int entnum, int tagnum, float th
|
|||
TIKI_OrientationInternal
|
||||
===============
|
||||
*/
|
||||
orientation_t TIKI_OrientationInternal(dtiki_t* tiki, int entnum, int tagnum, float scale)
|
||||
orientation_t TIKI_OrientationInternal(dtiki_t *tiki, int entnum, int tagnum, float scale)
|
||||
{
|
||||
if (tagnum < 0 || !tiki || tagnum >= tiki->m_boneList.NumChannels()) {
|
||||
return orientation_t{};
|
||||
}
|
||||
if (tagnum < 0 || !tiki || tagnum >= tiki->m_boneList.NumChannels()) {
|
||||
return orientation_t {};
|
||||
}
|
||||
|
||||
const skeletor_c* skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
const SkelMat4& pTransform = skeletor->GetBoneFrame(tagnum);
|
||||
const skeletor_c *skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
const SkelMat4 & pTransform = skeletor->GetBoneFrame(tagnum);
|
||||
|
||||
orientation_t orient;
|
||||
orient.origin[0] = (pTransform.val[3][0] + tiki->load_origin[0]) * (scale * tiki->load_scale);
|
||||
orient.origin[1] = (pTransform.val[3][1] + tiki->load_origin[1]) * (scale * tiki->load_scale);
|
||||
orient.origin[2] = (pTransform.val[3][2] + tiki->load_origin[2]) * (scale * tiki->load_scale);
|
||||
memcpy(orient.axis, pTransform.val, sizeof(orient.axis));
|
||||
orientation_t orient;
|
||||
orient.origin[0] = (pTransform.val[3][0] + tiki->load_origin[0]) * (scale * tiki->load_scale);
|
||||
orient.origin[1] = (pTransform.val[3][1] + tiki->load_origin[1]) * (scale * tiki->load_scale);
|
||||
orient.origin[2] = (pTransform.val[3][2] + tiki->load_origin[2]) * (scale * tiki->load_scale);
|
||||
memcpy(orient.axis, pTransform.val, sizeof(orient.axis));
|
||||
|
||||
return orient;
|
||||
return orient;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -110,10 +110,12 @@ orientation_t TIKI_OrientationInternal(dtiki_t* tiki, int entnum, int tagnum, fl
|
|||
TIKI_SetPoseInternal
|
||||
===============
|
||||
*/
|
||||
void TIKI_SetPoseInternal(void* skeletor, const frameInfo_t* frameInfo, const int* bone_tag, const vec4_t* bone_quat, float actionWeight)
|
||||
void TIKI_SetPoseInternal(
|
||||
void *skeletor, const frameInfo_t *frameInfo, const int *bone_tag, const vec4_t *bone_quat, float actionWeight
|
||||
)
|
||||
{
|
||||
skeletor_c* skel = (skeletor_c*)skeletor;
|
||||
skel->SetPose(frameInfo, bone_tag, bone_quat, actionWeight);
|
||||
skeletor_c *skel = (skeletor_c *)skeletor;
|
||||
skel->SetPose(frameInfo, bone_tag, bone_quat, actionWeight);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -121,10 +123,10 @@ void TIKI_SetPoseInternal(void* skeletor, const frameInfo_t* frameInfo, const in
|
|||
TIKI_GetRadiusInternal
|
||||
===============
|
||||
*/
|
||||
float TIKI_GetRadiusInternal(dtiki_t* tiki, int entnum, float scale)
|
||||
float TIKI_GetRadiusInternal(dtiki_t *tiki, int entnum, float scale)
|
||||
{
|
||||
skeletor_c* skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->GetRadius() * tiki->load_scale * scale;
|
||||
skeletor_c *skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->GetRadius() * tiki->load_scale * scale;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -132,10 +134,10 @@ float TIKI_GetRadiusInternal(dtiki_t* tiki, int entnum, float scale)
|
|||
TIKI_GetCentroidRadiusInternal
|
||||
===============
|
||||
*/
|
||||
float TIKI_GetCentroidRadiusInternal(dtiki_t* tiki, int entnum, float scale, float* centroid)
|
||||
float TIKI_GetCentroidRadiusInternal(dtiki_t *tiki, int entnum, float scale, float *centroid)
|
||||
{
|
||||
skeletor_c* skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->GetCentroidRadius(centroid) * tiki->load_scale * scale;
|
||||
skeletor_c *skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
return skeletor->GetCentroidRadius(centroid) * tiki->load_scale * scale;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -143,10 +145,10 @@ float TIKI_GetCentroidRadiusInternal(dtiki_t* tiki, int entnum, float scale, flo
|
|||
TIKI_GetFrameInternal
|
||||
===============
|
||||
*/
|
||||
void TIKI_GetFrameInternal(dtiki_t* tiki, int entnum, skelAnimFrame_t* newFrame)
|
||||
void TIKI_GetFrameInternal(dtiki_t *tiki, int entnum, skelAnimFrame_t *newFrame)
|
||||
{
|
||||
skeletor_c* skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
skeletor->GetFrame(newFrame);
|
||||
skeletor_c *skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
skeletor->GetFrame(newFrame);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -154,8 +156,8 @@ void TIKI_GetFrameInternal(dtiki_t* tiki, int entnum, skelAnimFrame_t* newFrame)
|
|||
TIKI_SetEyeTargetPos
|
||||
===============
|
||||
*/
|
||||
void TIKI_SetEyeTargetPos(dtiki_t* tiki, int entnum, vec3_t pos)
|
||||
void TIKI_SetEyeTargetPos(dtiki_t *tiki, int entnum, vec3_t pos)
|
||||
{
|
||||
skeletor_c* skeletor = (skeletor_c*)TIKI_GetSkeletor(tiki, entnum);
|
||||
skeletor->SetEyeTargetPos(pos);
|
||||
skeletor_c *skeletor = (skeletor_c *)TIKI_GetSkeletor(tiki, entnum);
|
||||
skeletor->SetEyeTargetPos(pos);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,26 +22,25 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_tag.h : TIKI Tag
|
||||
|
||||
#ifndef __TIKI_TAG_H__
|
||||
#define __TIKI_TAG_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int TIKI_Tag_NameToNum( dtiki_t *pmdl, const char *name );
|
||||
const char *TIKI_Tag_NumToName( dtiki_t *pmdl, int iTagNum );
|
||||
SkelMat4 *TIKI_TransformInternal( dtiki_t *tiki, int entnum, int tagnum );
|
||||
qboolean TIKI_IsOnGroundInternal( dtiki_t *tiki, int entnum, int tagnum, float threshold );
|
||||
orientation_t TIKI_OrientationInternal( dtiki_t *tiki, int entnum, int tagnum, float scale );
|
||||
void TIKI_SetPoseInternal( void *skeletor, const frameInfo_t *frameInfo, const int *bone_tag, const vec4_t *bone_quat, float actionWeight );
|
||||
float TIKI_GetRadiusInternal( dtiki_t *tiki, int entnum, float scale );
|
||||
float TIKI_GetCentroidRadiusInternal( dtiki_t *tiki, int entnum, float scale, float *centroid );
|
||||
void TIKI_GetFrameInternal( dtiki_t *tiki, int entnum, skelAnimFrame_t *newFrame );
|
||||
void TIKI_SetEyeTargetPos( dtiki_t *tiki, int entnum, vec3_t pos );
|
||||
int TIKI_Tag_NameToNum(dtiki_t *pmdl, const char *name);
|
||||
const char *TIKI_Tag_NumToName(dtiki_t *pmdl, int iTagNum);
|
||||
SkelMat4 *TIKI_TransformInternal(dtiki_t *tiki, int entnum, int tagnum);
|
||||
qboolean TIKI_IsOnGroundInternal(dtiki_t *tiki, int entnum, int tagnum, float threshold);
|
||||
orientation_t TIKI_OrientationInternal(dtiki_t *tiki, int entnum, int tagnum, float scale);
|
||||
void TIKI_SetPoseInternal(
|
||||
void *skeletor, const frameInfo_t *frameInfo, const int *bone_tag, const vec4_t *bone_quat, float actionWeight
|
||||
);
|
||||
float TIKI_GetRadiusInternal(dtiki_t *tiki, int entnum, float scale);
|
||||
float TIKI_GetCentroidRadiusInternal(dtiki_t *tiki, int entnum, float scale, float *centroid);
|
||||
void TIKI_GetFrameInternal(dtiki_t *tiki, int entnum, skelAnimFrame_t *newFrame);
|
||||
void TIKI_SetEyeTargetPos(dtiki_t *tiki, int entnum, vec3_t pos);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_TAG_H__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -32,16 +32,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
TIKI_Name
|
||||
===============
|
||||
*/
|
||||
const char *TIKI_Name( dtiki_t *pmdl )
|
||||
const char *TIKI_Name(dtiki_t *pmdl)
|
||||
{
|
||||
if( pmdl )
|
||||
{
|
||||
return pmdl->a->name;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (pmdl) {
|
||||
return pmdl->a->name;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -49,16 +46,13 @@ const char *TIKI_Name( dtiki_t *pmdl )
|
|||
TIKI_NumAnims
|
||||
===============
|
||||
*/
|
||||
int TIKI_NumAnims( dtiki_t *pmdl )
|
||||
int TIKI_NumAnims(dtiki_t *pmdl)
|
||||
{
|
||||
if( pmdl )
|
||||
{
|
||||
return pmdl->a->num_anims;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (pmdl) {
|
||||
return pmdl->a->num_anims;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -66,16 +60,13 @@ int TIKI_NumAnims( dtiki_t *pmdl )
|
|||
TIKI_NumSurfaces
|
||||
===============
|
||||
*/
|
||||
int TIKI_NumSurfaces( dtiki_t *pmdl )
|
||||
int TIKI_NumSurfaces(dtiki_t *pmdl)
|
||||
{
|
||||
if( pmdl )
|
||||
{
|
||||
return pmdl->num_surfaces;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (pmdl) {
|
||||
return pmdl->num_surfaces;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -83,9 +74,9 @@ int TIKI_NumSurfaces( dtiki_t *pmdl )
|
|||
TIKI_NumTags
|
||||
===============
|
||||
*/
|
||||
int TIKI_NumTags( dtiki_t *pmdl )
|
||||
int TIKI_NumTags(dtiki_t *pmdl)
|
||||
{
|
||||
return pmdl->m_boneList.NumChannels();
|
||||
return pmdl->m_boneList.NumChannels();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -93,15 +84,14 @@ int TIKI_NumTags( dtiki_t *pmdl )
|
|||
TIKI_CalculateBounds
|
||||
===============
|
||||
*/
|
||||
void TIKI_CalculateBounds( dtiki_t *pmdl, float scale, vec3_t mins, vec3_t maxs )
|
||||
void TIKI_CalculateBounds(dtiki_t *pmdl, float scale, vec3_t mins, vec3_t maxs)
|
||||
{
|
||||
int j;
|
||||
int j;
|
||||
|
||||
for( j = 0; j < 3; j++ )
|
||||
{
|
||||
mins[ j ] = pmdl->a->mins[ j ] * pmdl->load_scale * scale;
|
||||
maxs[ j ] = pmdl->a->maxs[ j ] * pmdl->load_scale * scale;
|
||||
}
|
||||
for (j = 0; j < 3; j++) {
|
||||
mins[j] = pmdl->a->mins[j] * pmdl->load_scale * scale;
|
||||
maxs[j] = pmdl->a->maxs[j] * pmdl->load_scale * scale;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -109,9 +99,9 @@ void TIKI_CalculateBounds( dtiki_t *pmdl, float scale, vec3_t mins, vec3_t maxs
|
|||
TIKI_GlobalRadius
|
||||
===============
|
||||
*/
|
||||
float TIKI_GlobalRadius( dtiki_t *pmdl )
|
||||
float TIKI_GlobalRadius(dtiki_t *pmdl)
|
||||
{
|
||||
return pmdl->radius;
|
||||
return pmdl->radius;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -119,22 +109,21 @@ float TIKI_GlobalRadius( dtiki_t *pmdl )
|
|||
TIKI_NumHeadModels
|
||||
===============
|
||||
*/
|
||||
int TIKI_NumHeadModels( dtikianim_t *tiki )
|
||||
int TIKI_NumHeadModels(dtikianim_t *tiki)
|
||||
{
|
||||
int numheadmodels = 0;
|
||||
const char *s = tiki->headmodels;
|
||||
int numheadmodels = 0;
|
||||
const char *s = tiki->headmodels;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
s = strstr( s, "\n" );
|
||||
if( !s ) {
|
||||
break;
|
||||
}
|
||||
numheadmodels++;
|
||||
s++;
|
||||
}
|
||||
while (1) {
|
||||
s = strstr(s, "\n");
|
||||
if (!s) {
|
||||
break;
|
||||
}
|
||||
numheadmodels++;
|
||||
s++;
|
||||
}
|
||||
|
||||
return numheadmodels;
|
||||
return numheadmodels;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -142,38 +131,32 @@ int TIKI_NumHeadModels( dtikianim_t *tiki )
|
|||
TIKI_GetHeadModel
|
||||
===============
|
||||
*/
|
||||
void TIKI_GetHeadModel( dtikianim_t *tiki, int num, char *name )
|
||||
void TIKI_GetHeadModel(dtikianim_t *tiki, int num, char *name)
|
||||
{
|
||||
const char *s, *t;
|
||||
const char *s, *t;
|
||||
|
||||
if( tiki->headmodels == ( char * )1 )
|
||||
{
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
if (tiki->headmodels == (char *)1) {
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
s = tiki->headmodels;
|
||||
for( num = num - 1; num >= 0; num-- )
|
||||
{
|
||||
s = strstr( s, "\n" );
|
||||
if( !s )
|
||||
{
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
s = tiki->headmodels;
|
||||
for (num = num - 1; num >= 0; num--) {
|
||||
s = strstr(s, "\n");
|
||||
if (!s) {
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
t = strstr( s, "\n" );
|
||||
if( t )
|
||||
{
|
||||
strncpy( name, s, t - s );
|
||||
name[ t - s ] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*name = 0;
|
||||
}
|
||||
t = strstr(s, "\n");
|
||||
if (t) {
|
||||
strncpy(name, s, t - s);
|
||||
name[t - s] = 0;
|
||||
} else {
|
||||
*name = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -181,22 +164,21 @@ void TIKI_GetHeadModel( dtikianim_t *tiki, int num, char *name )
|
|||
TIKI_NumHeadSkins
|
||||
===============
|
||||
*/
|
||||
int TIKI_NumHeadSkins( dtikianim_t *tiki )
|
||||
int TIKI_NumHeadSkins(dtikianim_t *tiki)
|
||||
{
|
||||
int numheadskins = 0;
|
||||
const char *s = tiki->headskins;
|
||||
int numheadskins = 0;
|
||||
const char *s = tiki->headskins;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
s = strstr( s, "\n" );
|
||||
if( !s ) {
|
||||
break;
|
||||
}
|
||||
numheadskins++;
|
||||
s++;
|
||||
}
|
||||
while (1) {
|
||||
s = strstr(s, "\n");
|
||||
if (!s) {
|
||||
break;
|
||||
}
|
||||
numheadskins++;
|
||||
s++;
|
||||
}
|
||||
|
||||
return numheadskins;
|
||||
return numheadskins;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -204,36 +186,30 @@ int TIKI_NumHeadSkins( dtikianim_t *tiki )
|
|||
TIKI_GetHeadSkin
|
||||
===============
|
||||
*/
|
||||
void TIKI_GetHeadSkin( dtikianim_t *tiki, int num, char *name )
|
||||
void TIKI_GetHeadSkin(dtikianim_t *tiki, int num, char *name)
|
||||
{
|
||||
const char *s, *t;
|
||||
const char *s, *t;
|
||||
|
||||
if( tiki->headskins == ( char * )1 )
|
||||
{
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
if (tiki->headskins == (char *)1) {
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
s = tiki->headskins;
|
||||
for( num = num - 1; num >= 0; num-- )
|
||||
{
|
||||
s = strstr( s, "\n" );
|
||||
if( !s )
|
||||
{
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
s = tiki->headskins;
|
||||
for (num = num - 1; num >= 0; num--) {
|
||||
s = strstr(s, "\n");
|
||||
if (!s) {
|
||||
*name = 0;
|
||||
return;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
t = strstr( s, "\n" );
|
||||
if( t )
|
||||
{
|
||||
strncpy( name, s, t - s );
|
||||
name[ t - s ] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*name = 0;
|
||||
}
|
||||
t = strstr(s, "\n");
|
||||
if (t) {
|
||||
strncpy(name, s, t - s);
|
||||
name[t - s] = 0;
|
||||
} else {
|
||||
*name = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
|
@ -22,26 +22,23 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// tiki_utility.h : TIKI Utility
|
||||
|
||||
#ifndef __TIKI_UTILITY_H__
|
||||
#define __TIKI_UTILITY_H__
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
const char *TIKI_Name( dtiki_t *pmdl );
|
||||
int TIKI_NumAnims( dtiki_t *pmdl );
|
||||
int TIKI_NumSurfaces( dtiki_t *pmdl );
|
||||
int TIKI_NumTags( dtiki_t *pmdl );
|
||||
void TIKI_CalculateBounds( dtiki_t *pmdl, float scale, vec3_t mins, vec3_t maxs );
|
||||
float TIKI_GlobalRadius( dtiki_t *pmdl );
|
||||
int TIKI_NumHeadModels( dtikianim_t *tiki );
|
||||
void TIKI_GetHeadModel( dtikianim_t *tiki, int num, char *name );
|
||||
int TIKI_NumHeadSkins( dtikianim_t *tiki );
|
||||
void TIKI_GetHeadSkin( dtikianim_t *tiki, int num, char *name );
|
||||
const char *TIKI_Name(dtiki_t *pmdl);
|
||||
int TIKI_NumAnims(dtiki_t *pmdl);
|
||||
int TIKI_NumSurfaces(dtiki_t *pmdl);
|
||||
int TIKI_NumTags(dtiki_t *pmdl);
|
||||
void TIKI_CalculateBounds(dtiki_t *pmdl, float scale, vec3_t mins, vec3_t maxs);
|
||||
float TIKI_GlobalRadius(dtiki_t *pmdl);
|
||||
int TIKI_NumHeadModels(dtikianim_t *tiki);
|
||||
void TIKI_GetHeadModel(dtikianim_t *tiki, int num, char *name);
|
||||
int TIKI_NumHeadSkins(dtikianim_t *tiki);
|
||||
void TIKI_GetHeadSkin(dtikianim_t *tiki, int num, char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __TIKI_TIKI_H__
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue