154 lines
5.6 KiB
154 lines
5.6 KiB
/*** |
|
* |
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved. |
|
* |
|
* This product contains software technology licensed from Id |
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. |
|
* All Rights Reserved. |
|
* |
|
* Use, distribution, and modification of this source code and/or resulting |
|
* object code is restricted to non-commercial enhancements to products from |
|
* Valve LLC. All other use, distribution, or modification is prohibited |
|
* without written permission from Valve LLC. |
|
* |
|
****/ |
|
|
|
|
|
#ifndef R_STUDIOINT_H |
|
#define R_STUDIOINT_H |
|
|
|
#define STUDIO_INTERFACE_VERSION 1 |
|
|
|
typedef struct engine_studio_api_s |
|
{ |
|
// Allocate number*size bytes and zero it |
|
void *( *Mem_Calloc )( int number, size_t size ); |
|
// Check to see if pointer is in the cache |
|
void *( *Cache_Check )( struct cache_user_s *c ); |
|
// Load file into cache ( can be swapped out on demand ) |
|
void ( *LoadCacheFile )( const char *path, struct cache_user_s *cu ); |
|
// Retrieve model pointer for the named model |
|
struct model_s *( *Mod_ForName )( const char *name, int crash_if_missing ); |
|
// Retrieve pointer to studio model data block from a model |
|
void *( *Mod_Extradata )( struct model_s *mod ); |
|
// Retrieve indexed model from client side model precache list |
|
struct model_s *( *GetModelByIndex )( int index ); |
|
// Get entity that is set for rendering |
|
struct cl_entity_s * ( *GetCurrentEntity )( void ); |
|
// Get referenced player_info_t |
|
struct player_info_s *( *PlayerInfo )( int index ); |
|
// Get most recently received player state data from network system |
|
struct entity_state_s *( *GetPlayerState )( int index ); |
|
// Get viewentity |
|
struct cl_entity_s * ( *GetViewEntity )( void ); |
|
// Get current frame count, and last two timestampes on client |
|
void ( *GetTimes )( int *framecount, double *current, double *old ); |
|
// Get a pointer to a cvar by name |
|
struct cvar_s *( *GetCvar )( const char *name ); |
|
// Get current render origin and view vectors ( up, right and vpn ) |
|
void ( *GetViewInfo )( float *origin, float *upv, float *rightv, float *vpnv ); |
|
// Get sprite model used for applying chrome effect |
|
struct model_s *( *GetChromeSprite )( void ); |
|
// Get model counters so we can incement instrumentation |
|
void ( *GetModelCounters )( int **s, int **a ); |
|
// Get software scaling coefficients |
|
void ( *GetAliasScale )( float *x, float *y ); |
|
|
|
// Get bone, light, alias, and rotation matrices |
|
float ****( *StudioGetBoneTransform )( void ); |
|
float ****( *StudioGetLightTransform )( void ); |
|
float ***( *StudioGetAliasTransform )( void ); |
|
float ***( *StudioGetRotationMatrix )( void ); |
|
|
|
// Set up body part, and get submodel pointers |
|
void ( *StudioSetupModel )( int bodypart, void **ppbodypart, void **ppsubmodel ); |
|
// Check if entity's bbox is in the view frustum |
|
int ( *StudioCheckBBox )( void ); |
|
// Apply lighting effects to model |
|
void ( *StudioDynamicLight )( struct cl_entity_s *ent, struct alight_s *plight ); |
|
void ( *StudioEntityLight )( struct alight_s *plight ); |
|
void ( *StudioSetupLighting )( struct alight_s *plighting ); |
|
|
|
// Draw mesh vertices |
|
void ( *StudioDrawPoints )( void ); |
|
|
|
// Draw hulls around bones |
|
void ( *StudioDrawHulls )( void ); |
|
// Draw bbox around studio models |
|
void ( *StudioDrawAbsBBox )( void ); |
|
// Draws bones |
|
void ( *StudioDrawBones )( void ); |
|
// Loads in appropriate texture for model |
|
void ( *StudioSetupSkin )( void *ptexturehdr, int index ); |
|
// Sets up for remapped colors |
|
void ( *StudioSetRemapColors )( int top, int bottom ); |
|
// Set's player model and returns model pointer |
|
struct model_s *( *SetupPlayerModel )( int index ); |
|
// Fires any events embedded in animation |
|
void ( *StudioClientEvents )( void ); |
|
// Retrieve/set forced render effects flags |
|
int ( *GetForceFaceFlags )( void ); |
|
void ( *SetForceFaceFlags )( int flags ); |
|
// Tell engine the value of the studio model header |
|
void ( *StudioSetHeader )( void *header ); |
|
// Tell engine which model_t * is being renderered |
|
void ( *SetRenderModel )( struct model_s *model ); |
|
|
|
// Final state setup and restore for rendering |
|
void ( *SetupRenderer )( int rendermode ); |
|
void ( *RestoreRenderer )( void ); |
|
|
|
// Set render origin for applying chrome effect |
|
void ( *SetChromeOrigin )( void ); |
|
|
|
// True if using D3D/OpenGL |
|
int ( *IsHardware )( void ); |
|
|
|
// Only called by hardware interface |
|
void ( *GL_StudioDrawShadow )( void ); |
|
void ( *GL_SetRenderMode )( int mode ); |
|
|
|
void ( *StudioSetRenderamt )( int iRenderamt ); |
|
void ( *StudioSetCullState )( int iCull ); |
|
void ( *StudioRenderShadow )( int iSprite, float *p1, float *p2, float *p3, float *p4 ); |
|
} engine_studio_api_t; |
|
|
|
typedef struct server_studio_api_s |
|
{ |
|
// Allocate number*size bytes and zero it |
|
void *( *Mem_Calloc )( int number, size_t size ); |
|
// Check to see if pointer is in the cache |
|
void *( *Cache_Check )( struct cache_user_s *c ); |
|
// Load file into cache ( can be swapped out on demand ) |
|
void ( *LoadCacheFile )( const char *path, struct cache_user_s *cu ); |
|
// Retrieve pointer to studio model data block from a model |
|
void *( *Mod_Extradata )( struct model_s *mod ); |
|
} server_studio_api_t; |
|
|
|
// client blending |
|
typedef struct r_studio_interface_s |
|
{ |
|
int version; |
|
int ( *StudioDrawModel )( int flags ); |
|
int ( *StudioDrawPlayer )( int flags, struct entity_state_s *pplayer ); |
|
} r_studio_interface_t; |
|
|
|
// server blending |
|
#define SV_BLENDING_INTERFACE_VERSION 1 |
|
|
|
typedef struct sv_blending_interface_s |
|
{ |
|
int version; |
|
|
|
void ( *SV_StudioSetupBones )( struct model_s *pModel, |
|
float frame, |
|
int sequence, |
|
const vec3_t angles, |
|
const vec3_t origin, |
|
const byte *pcontroller, |
|
const byte *pblending, |
|
int iBone, |
|
const edict_t *pEdict ); |
|
} sv_blending_interface_t; |
|
|
|
#endif//R_STUDIOINT_H
|
|
|