📄 ogrequake3types.h
字号:
// Quake 3 data definitions
// Copyright (C) 1999-2000 Id Software, Inc.
//
// This file must be identical in the quake and utils directories
// contents flags are seperate bits
// a given brush can contribute multiple content bits
// these definitions also need to be in q_shared.h!
#ifndef __Quake3Types_H__
#define __Quake3Types_H__
#define BSP_HEADER_ID (*(int*)"IBSP")
#define BSP_HEADER_VER (46)
#define BSP_ENTITIES_LUMP (0)
#define BSP_SHADERS_LUMP (1)
#define BSP_PLANES_LUMP (2)
#define BSP_NODES_LUMP (3)
#define BSP_LEAVES_LUMP (4)
#define BSP_LFACES_LUMP (5)
#define BSP_LBRUSHES_LUMP (6)
#define BSP_MODELS_LUMP (7)
#define BSP_BRUSH_LUMP (8)
#define BSP_BRUSHSIDES_LUMP (9)
#define BSP_VERTICES_LUMP (10)
#define BSP_ELEMENTS_LUMP (11)
#define BSP_FOG_LUMP (12)
#define BSP_FACES_LUMP (13)
#define BSP_LIGHTMAPS_LUMP (14)
#define BSP_LIGHTVOLS_LUMP (15)
#define BSP_VISIBILITY_LUMP (16)
#define BSP_LIGHTMAP_BANKSIZE (128*128*3)
#define CONTENTS_SOLID 1 // an eye is never valid in a solid
#define CONTENTS_LAVA 8
#define CONTENTS_SLIME 16
#define CONTENTS_WATER 32
#define CONTENTS_FOG 64
#define CONTENTS_AREAPORTAL 0x8000
#define CONTENTS_PLAYERCLIP 0x10000
#define CONTENTS_MONSTERCLIP 0x20000
//bot specific contents types
#define CONTENTS_TELEPORTER 0x40000
#define CONTENTS_JUMPPAD 0x80000
#define CONTENTS_CLUSTERPORTAL 0x100000
#define CONTENTS_DONOTENTER 0x200000
#define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity
#define CONTENTS_BODY 0x2000000 // should never be on a brush, only in game
#define CONTENTS_CORPSE 0x4000000
#define CONTENTS_DETAIL 0x8000000 // brushes not used for the bsp
#define CONTENTS_STRUCTURAL 0x10000000 // brushes used for the bsp
#define CONTENTS_TRANSLUCENT 0x20000000 // don't consume surface fragments inside
#define CONTENTS_TRIGGER 0x40000000
#define CONTENTS_NODROP 0x80000000 // don't leave bodies or items (death fog, lava)
#define SURF_NODAMAGE 0x1 // never give falling damage
#define SURF_SLICK 0x2 // effects game physics
#define SURF_SKY 0x4 // lighting from environment map
#define SURF_LADDER 0x8
#define SURF_NOIMPACT 0x10 // don't make missile explosions
#define SURF_NOMARKS 0x20 // don't leave missile marks
#define SURF_FLESH 0x40 // make flesh sounds and effects
#define SURF_NODRAW 0x80 // don't generate a drawsurface at all
#define SURF_HINT 0x100 // make a primary bsp splitter
#define SURF_SKIP 0x200 // completely ignore, allowing non-closed brushes
#define SURF_NOLIGHTMAP 0x400 // surface doesn't need a lightmap
#define SURF_POINTLIGHT 0x800 // generate lighting info at vertexes
#define SURF_METALSTEPS 0x1000 // clanking footsteps
#define SURF_NOSTEPS 0x2000 // no footstep sounds
#define SURF_NONSOLID 0x4000 // don't collide against curves with this set
#define SURF_LIGHTFILTER 0x8000 // act as a light filter during q3map -light
#define SURF_ALPHASHADOW 0x10000 // do per-pixel light shadow casting in q3map
#define SURF_NODLIGHT 0x20000 // don't dlight even if solid (solid lava, skies)
/* Shader flags */
enum
{
SHADER_NOCULL = 1 << 0,
SHADER_TRANSPARENT = 1 << 1,
SHADER_DEPTHWRITE = 1 << 2,
SHADER_SKY = 1 << 3,
SHADER_NOMIPMAPS = 1 << 4,
SHADER_NEEDCOLOURS = 1 << 5,
SHADER_DEFORMVERTS = 1 << 6
};
/* Shaderpass flags */
enum
{
SHADER_LIGHTMAP = 1 << 0,
SHADER_BLEND = 1 << 1,
SHADER_ALPHAFUNC = 1 << 3,
SHADER_TCMOD = 1 << 4,
SHADER_ANIMMAP = 1 << 5,
SHADER_TCGEN_ENV = 1 << 6
};
/* Transform functions */
enum WaveType
{
SHADER_FUNC_NONE = 0,
SHADER_FUNC_SIN = 1,
SHADER_FUNC_TRIANGLE = 2,
SHADER_FUNC_SQUARE = 3,
SHADER_FUNC_SAWTOOTH = 4,
SHADER_FUNC_INVERSESAWTOOTH = 5
};
/* *Gen functions */
enum GenFunc
{
SHADER_GEN_IDENTITY = 0,
SHADER_GEN_WAVE = 1,
SHADER_GEN_VERTEX = 2
};
enum TexGen
{
TEXGEN_BASE = 0, // Coord set 0
TEXGEN_LIGHTMAP = 1, // Coord set 1
TEXGEN_ENVIRONMENT = 2 // Neither, generated
};
enum DeformFunc
{
DEFORM_FUNC_NONE = 0,
DEFORM_FUNC_BULGE = 1,
DEFORM_FUNC_WAVE = 2,
DEFORM_FUNC_NORMAL = 3,
DEFORM_FUNC_MOVE = 4,
DEFORM_FUNC_AUTOSPRITE = 5,
DEFORM_FUNC_AUTOSPRITE2 = 6
};
/////////////////////////////////////////////////////////
//
// bsp contents
//
struct bsp_plane_t {
float normal[3];
float dist;
};
struct bsp_model_t {
float bbox[6];
int face_start;
int face_count;
int brush_start;
int brush_count;
};
struct bsp_node_t {
int plane; // dividing plane
//int children[2]; // left and right nodes,
// negative are leaves
int front;
int back;
int bbox[6];
};
struct bsp_leaf_t {
int cluster; // visibility cluster number
int area;
int bbox[6];
int face_start;
int face_count;
int brush_start;
int brush_count;
};
#define BSP_FACETYPE_NORMAL (1)
#define BSP_FACETYPE_PATCH (2)
#define BSP_FACETYPE_MESH (3)
#define BSP_FACETYPE_FLARE (4)
struct bsp_face_t {
int shader; // shader ref
int unknown;
int type; // face type
int vert_start;
int vert_count;
int elem_start;
int elem_count;
int lm_texture; // lightmap
int lm_offset[2];
int lm_size[2];
float org[3]; // facetype_normal only
float bbox[6]; // facetype_patch only
float normal[3]; // facetype_normal only
int mesh_cp[2]; // patch control point dims
};
struct bsp_shader_t {
char name[64];
int surface_flags;
int content_flags;
};
struct bsp_vertex_t {
float point[3];
float texture[2];
float lightmap[2];
float normal[3];
int color;
};
struct bsp_vis_t {
int cluster_count;
int row_size;
unsigned char data[1];
};
// OGRE additions
struct bsp_lump_entry_t {
int offset;
int size;
};
struct bsp_header_t {
char magic[4];
int version;
bsp_lump_entry_t lumps[17];
};
//
// Brushes sides in BSP tree
//
struct bsp_brushside_t {
int planenum;
int content; //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -