X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=vmf.h;fp=vmf.h;h=c5f736b4474977214d8ef543dbb79ba1029c4a0d;hp=4829d48174599bb6906c802e0cfeef0446d3a20c;hb=8382aed7f0cdc38bc5c58832d4a15277cf56d4be;hpb=0bd8697a99ced50789a5d41b84a4b87f39cb1653 diff --git a/vmf.h b/vmf.h index 4829d48..c5f736b 100644 --- a/vmf.h +++ b/vmf.h @@ -1,7 +1,8 @@ -#define SOLID_MAX_SIDES 512 -#define VMF_FLAG_IS_PROP 0x1 -#define VMF_FLAG_IS_INSTANCE 0x2 -#define VMF_FLAG_BRUSH_ENT 0x4 +// This software is not affiliated with Valve Corporation +// We are not affiliated, associated, authorized, endorsed by, or in any way officially +// connected with Valve Corporation, or any of its subsidiaries or its affiliates. +// +// All trademarks are property of their respective owners typedef struct vmf_solid vmf_solid; typedef struct vmf_vert vmf_vert; @@ -12,6 +13,53 @@ typedef struct vmf_map vmf_map; typedef enum ESolidResult ESolidResult; +// API +//======================================================================================================================= + +// Load vmf from disk +vmf_map *vmf_init( const char *path ); +void vmf_free( vmf_map *map ); + +// Solidgen API ~ Converting brushes into meshes +// --------------------------------------------- +void solidgen_ctx_init( vmf_solid *ctx ); +void solidgen_ctx_reset( vmf_solid *ctx ); +void solidgen_ctx_free( vmf_solid *ctx ); +void solidgen_bounds( vmf_solid *ctx, boxf box ); + +ESolidResult solidgen_push( vmf_solid *ctx, vdf_node *node ); + +// General VMF +// ----------- +int solid_has_displacement( vdf_node *node ); +int vmf_class_is_prop( vdf_node *ent ); + +// Build the list of all models used in this map, including instances +void vmf_index_models( vmf_map *map ); + +// Loads all models that have the resource flagged with need_load +void vmf_load_models( vmf_map *map ); + +// Create matrix describing this entities transform +void vmf_entity_transform( vdf_node *ent, m4x3f mat ); + +u32 vmf_visgroup_id( vdf_node *root, const char *name ); +int vmf_visgroup_match( vdf_node *ent, u32 target ); + +// Currently unused +//void vmf_addbisector( double p[4] ); +//void vmf_clearbisectors( void ); +//void vmf_ignore_mat( const char *material ); +//void vmf_clearignore( void ); + +// Implementation +//======================================================================================================================= + +#define SOLID_MAX_SIDES 512 +#define VMF_FLAG_IS_PROP 0x1 +#define VMF_FLAG_IS_INSTANCE 0x2 +#define VMF_FLAG_BRUSH_ENT 0x4 + enum ESolidResult { k_ESolidResult_valid, @@ -80,7 +128,7 @@ struct vmf_map m4x3f transform; }; -// IMPLEMENTATION +#ifdef VALVE_IMPLEMENTATION void solidgen_ctx_reset( vmf_solid *ctx ) { @@ -802,3 +850,5 @@ int vmf_visgroup_match( vdf_node *ent, u32 target ) return 0; } + +#endif