aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/QERTYPES.H
diff options
context:
space:
mode:
Diffstat (limited to 'q3radiant/QERTYPES.H')
-rwxr-xr-xq3radiant/QERTYPES.H454
1 files changed, 454 insertions, 0 deletions
diff --git a/q3radiant/QERTYPES.H b/q3radiant/QERTYPES.H
new file mode 100755
index 0000000..eeb99c1
--- /dev/null
+++ b/q3radiant/QERTYPES.H
@@ -0,0 +1,454 @@
+/*
+===========================================================================
+Copyright (C) 1999-2005 Id Software, Inc.
+
+This file is part of Quake III Arena source code.
+
+Quake III Arena source code is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the License,
+or (at your option) any later version.
+
+Quake III Arena source code is distributed in the hope that it will be
+useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Foobar; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+// qertypes.h
+//
+// common types
+// merged from brush.h, etc. for plugin support
+//
+#ifndef _QERTYPE_H
+#define _QERTYPE_H
+
+#ifndef __BYTEBOOL__
+#define __BYTEBOOL__
+typedef boolean qboolean;
+//typedef unsigned char byte;
+#endif
+
+#define MAXPOINTS 16
+
+typedef float vec_t;
+typedef vec_t vec2_t[2];
+typedef vec_t vec3_t[3];
+
+#include "splines/math_vector.h"
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h
+#endif
+
+class texdef_t
+{
+public:
+ texdef_t()
+ {
+ name = new char[1];
+ name[0] = '\0';
+ }
+ ~texdef_t()
+ {
+ delete []name;
+ name = NULL;
+ }
+
+ const char *Name( void )
+ {
+ if ( name ) {
+ return name;
+ }
+
+ return "";
+ }
+
+ void SetName(const char *p)
+ {
+ if (name)
+ {
+ delete []name;
+ }
+ if (p)
+ {
+ name = strcpy(new char[strlen(p)+1], p);
+ }
+ else
+ {
+ name = new char[1];
+ name[0] = '\0';
+ }
+ }
+
+ texdef_t& operator =(const texdef_t& rhs)
+ {
+ if (&rhs != this)
+ {
+ SetName(rhs.name);
+ shift[0] = rhs.shift[0];
+ shift[1] = rhs.shift[1];
+ rotate = rhs.rotate;
+ scale[0] = rhs.scale[0];
+ scale[1] = rhs.scale[1];
+ contents = rhs.contents;
+ flags = rhs.flags;
+ value = rhs.value;
+ }
+ return *this;
+ }
+ //char name[128];
+ char *name;
+ float shift[2];
+ float rotate;
+ float scale[2];
+ int contents;
+ int flags;
+ int value;
+};
+
+// Timo
+// new brush primitive texdef
+typedef struct brushprimit_texdef_s
+{
+ vec_t coords[2][3];
+} brushprimit_texdef_t;
+
+class texturewin_t
+{
+public:
+ texturewin_t()
+ {
+ }
+ ~texturewin_t()
+ {
+ }
+ int width, height;
+ int originy;
+ // add brushprimit_texdef_t for brush primitive coordinates storage
+ brushprimit_texdef_t brushprimit_texdef;
+ int m_nTotalHeight;
+ // surface plugin, must be casted to a IPluginTexdef*
+ void* pTexdef;
+ texdef_t texdef;
+};
+
+#define QER_TRANS 0x00000001
+#define QER_NOCARVE 0x00000002
+
+typedef struct qtexture_s
+{
+ struct qtexture_s *next;
+ char name[64]; // includes partial directory and extension
+ int width, height;
+ int contents;
+ int flags;
+ int value;
+ int texture_number; // gl bind number
+
+ // name of the .shader file
+ char shadername[1024]; // old shader stuff
+ qboolean bFromShader; // created from a shader
+ float fTrans; // amount of transparency
+ int nShaderFlags; // qer_ shader flags
+ vec3_t color; // for flat shade mode
+ qboolean inuse; // true = is present on the level
+
+ // cast this one to an IPluginQTexture if you are using it
+ // NOTE: casting can be done with a GETPLUGINQTEXTURE defined in isurfaceplugin.h
+ // TODO: if the __ISURFACEPLUGIN_H_ header is used, use a union { void *pData; IPluginQTexture *pPluginQTexture } kind of thing ?
+ void *pData;
+
+ //++timo FIXME: this is the actual filename of the texture
+ // this will be removed after shader code cleanup
+ char filename[64];
+
+} qtexture_t;
+
+// NOTE: don't trust this definition!
+// you should read float points[..][5]
+// see NewWinding definition
+#define MAX_POINTS_ON_WINDING 64
+typedef struct
+{
+ int numpoints;
+ int maxpoints;
+ float points[8][5]; // variable sized
+} winding_t;
+
+typedef struct
+{
+ vec3_t normal;
+ double dist;
+ int type;
+} plane_t;
+
+//++timo texdef and brushprimit_texdef are static
+// TODO : do dynamic ?
+typedef struct face_s
+{
+ struct face_s *next;
+ struct face_s *original; //used for vertex movement
+ vec3_t planepts[3];
+ texdef_t texdef;
+ plane_t plane;
+
+ winding_t *face_winding;
+
+ vec3_t d_color;
+ qtexture_t *d_texture;
+
+ // Timo new brush primit texdef
+ brushprimit_texdef_t brushprimit_texdef;
+
+ // cast this one to an IPluginTexdef if you are using it
+ // NOTE: casting can be done with a GETPLUGINTEXDEF defined in isurfaceplugin.h
+ // TODO: if the __ISURFACEPLUGIN_H_ header is used, use a union { void *pData; IPluginTexdef *pPluginTexdef } kind of thing ?
+ void *pData;
+} face_t;
+
+typedef struct {
+ vec3_t xyz;
+ float sideST[2];
+ float capST[2];
+} curveVertex_t;
+
+typedef struct {
+ curveVertex_t v[2];
+} sideVertex_t;
+
+
+#define MIN_PATCH_WIDTH 3
+#define MIN_PATCH_HEIGHT 3
+
+#define MAX_PATCH_WIDTH 16
+#define MAX_PATCH_HEIGHT 16
+
+// patch type info
+// type in lower 16 bits, flags in upper
+// endcaps directly follow this patch in the list
+
+// types
+#define PATCH_GENERIC 0x00000000 // generic flat patch
+#define PATCH_CYLINDER 0x00000001 // cylinder
+#define PATCH_BEVEL 0x00000002 // bevel
+#define PATCH_ENDCAP 0x00000004 // endcap
+#define PATCH_HEMISPHERE 0x00000008 // hemisphere
+#define PATCH_CONE 0x00000010 // cone
+#define PATCH_TRIANGLE 0x00000020 // simple tri, assumes 3x3 patch
+
+// behaviour styles
+#define PATCH_CAP 0x00001000 // flat patch applied as a cap
+#define PATCH_SEAM 0x00002000 // flat patch applied as a seam
+#define PATCH_THICK 0x00004000 // patch applied as a thick portion
+
+// styles
+#define PATCH_BEZIER 0x00000000 // default bezier
+#define PATCH_BSPLINE 0x10000000 // bspline
+
+#define PATCH_TYPEMASK 0x00000fff //
+#define PATCH_BTYPEMASK 0x0000f000 //
+#define PATCH_STYLEMASK 0xffff0000 //
+
+typedef struct {
+ vec3_t xyz;
+ float st[2];
+ float lightmap[2];
+ vec3_t normal;
+} drawVert_t;
+
+// used in brush primitive AND entities
+typedef struct epair_s
+{
+ struct epair_s *next;
+ char *key;
+ char *value;
+} epair_t;
+
+struct brush_s;
+typedef struct brush_s brush_t;
+
+typedef struct {
+ int width, height; // in control points, not patches
+ int contents, flags, value, type;
+ qtexture_t *d_texture;
+ drawVert_t ctrl[MAX_PATCH_WIDTH][MAX_PATCH_HEIGHT];
+ brush_t *pSymbiot;
+ qboolean bSelected;
+ qboolean bOverlay;
+ qboolean bDirty;
+ int nListID;
+ epair_t *epairs;
+ // cast this one to an IPluginTexdef if you are using it
+ // NOTE: casting can be done with a GETPLUGINTEXDEF defined in isurfaceplugin.h
+ // TODO: if the __ISURFACEPLUGIN_H_ header is used, use a union { void *pData; IPluginTexdef *pPluginTexdef } kind of thing ?
+ void *pData;
+} patchMesh_t;
+
+typedef struct {
+ int index;
+ qtexture_t *texture;
+ texdef_t texdef;
+} terrainFace_t;
+
+typedef struct {
+ float height;
+ float scale;
+ terrainFace_t tri;
+ vec4_t rgba;
+ vec3_t normal;
+ vec3_t xyz;
+} terrainVert_t;
+
+#define MAX_TERRAIN_TEXTURES 128
+typedef struct {
+ int width, height;
+
+ vec3_t mins, maxs;
+ vec3_t origin;
+ float scale_x;
+ float scale_y;
+
+ int numtextures;
+ qtexture_t *textures[ MAX_TERRAIN_TEXTURES ];
+
+ terrainVert_t *heightmap; // width * height
+
+ epair_t *epairs;
+
+ brush_s *pSymbiot;
+ bool bSelected;
+ bool bDirty;
+ int nListID;
+} terrainMesh_t;
+
+typedef struct brush_s
+{
+ struct brush_s *prev, *next; // links in active/selected
+ struct brush_s *oprev, *onext; // links in entity
+ struct entity_s *owner;
+ vec3_t mins, maxs;
+ face_t *brush_faces;
+
+ qboolean bModelFailed;
+ //
+ // curve brush extensions
+ // all are derived from brush_faces
+ qboolean patchBrush;
+ qboolean hiddenBrush;
+ qboolean terrainBrush;
+
+ //int nPatchID;
+
+ patchMesh_t *pPatch;
+ terrainMesh_t *pTerrain;
+
+ struct entity_s *pUndoOwner;
+
+ int undoId; //undo ID
+ int redoId; //redo ID
+ int ownerId; //entityId of the owner entity for undo
+
+ // TTimo: HTREEITEM is MFC, some plugins really don't like it
+#ifdef QERTYPES_USE_MFC
+ int numberId; // brush number
+ HTREEITEM itemOwner; // owner for grouping
+#else
+ int numberId;
+ DWORD itemOwner;
+#endif
+
+ // brush primitive only
+ epair_t *epairs;
+
+} brush_t;
+
+
+#define MAX_FLAGS 8
+
+
+typedef struct trimodel_t
+{
+ vec3_t v[3];
+ float st[3][2];
+} trimodel;
+
+typedef struct entitymodel_t
+{
+ struct entitymodel_t *pNext;
+ int nTriCount;
+ trimodel *pTriList;
+ int nTextureBind;
+ int nSkinWidth;
+ int nSkinHeight;
+ int nModelPosition;
+} entitymodel;
+
+
+// eclass show flags
+
+#define ECLASS_LIGHT 0x00000001
+#define ECLASS_ANGLE 0x00000002
+#define ECLASS_PATH 0x00000004
+#define ECLASS_MISCMODEL 0x00000008
+#define ECLASS_PLUGINENTITY 0x00000010
+
+typedef struct eclass_s
+{
+ struct eclass_s *next;
+ char *name;
+ qboolean fixedsize;
+ qboolean unknown; // wasn't found in source
+ vec3_t mins, maxs;
+ vec3_t color;
+ texdef_t texdef;
+ char *comments;
+ char flagnames[MAX_FLAGS][32];
+
+/*
+ int nTriCount;
+ trimodel *pTriList;
+ int nTextureBind;
+ int nSkinWidth, nSkinHeight;
+*/
+ entitymodel *model;
+ char *modelpath;
+ char *skinpath;
+ int nFrame;
+ unsigned int nShowFlags;
+
+ HMODULE hPlug;
+} eclass_t;
+
+extern eclass_t *eclass;
+
+/*
+** window bits
+*/
+#define W_CAMERA 0x0001
+#define W_XY 0x0002
+#define W_XY_OVERLAY 0x0004
+#define W_Z 0x0008
+#define W_TEXTURE 0x0010
+#define W_Z_OVERLAY 0x0020
+#define W_CONSOLE 0x0040
+#define W_ENTITY 0x0080
+#define W_CAMERA_IFON 0x0100
+#define W_XZ 0x0200 //--| only used for patch vertex manip stuff
+#define W_YZ 0x0400 //--|
+#define W_GROUP 0x0800
+#define W_MEDIA 0x1000
+#define W_ALL 0xFFFFFFFF
+
+// used in some Drawing routines
+enum VIEWTYPE {YZ, XZ, XY};
+
+enum terrainnoise_t { NOISE_NONE, NOISE_PLUS, NOISE_PLUSMINUS };
+enum terrainbrush_t { TERRAIN_BRUSH_CIRCLE, TERRAIN_BRUSH_SQUARE };
+enum terrainfalloff_t { TERRAIN_FALLOFF_LINEAR, TERRAIN_FALLOFF_CURVED };
+
+#endif \ No newline at end of file