123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #define MAX_FACES 16
- typedef float vec5_t[5];
- typedef struct
- {
- int numpoints;
- vec5_t points[8]; // variable sized
- } winding_t;
- #define MAX_POINTS_ON_WINDING 64
- typedef struct
- {
- vec3_t normal;
- float dist;
- } plane_t;
- typedef struct
- {
- // implicit rep
- vec3_t planepts[3];
- texturedef_t texture;
- // cached rep
- plane_t plane;
- qtexture_t *qtexture;
- float light; // 0 - 1.0
- winding_t *w;
- } face_t;
- #define ON_EPSILON 0.1
- #define FP_EPSILON 0.01
- #define VECTOR_EPSILON 0.0001
- #define SIDE_FRONT 0
- #define SIDE_BACK 1
- #define SIDE_ON 2
- winding_t *ClipWinding (winding_t *in, plane_t *split);
- winding_t *CopyWinding (winding_t *w);
- winding_t *NewWinding (int points);
- @interface SetBrush : Object
- {
- BOOL regioned; // not active
- BOOL selected;
- BOOL invalid; // not a proper polyhedron
- id parent; // the entity this brush is in
- vec3_t bmins, bmaxs;
- vec3_t entitycolor;
- int numfaces;
- face_t faces[MAX_FACES];
- }
- - initOwner: own mins:(float *)mins maxs:(float *)maxs texture:(texturedef_t *)tex;
- - initFromTokens: own;
- - setMins:(float *)mins maxs:(float *)maxs;
- - parent;
- - setParent: (id)p;
- - setEntityColor: (vec3_t)color;
- - calcWindings;
- - writeToFILE: (FILE *)f region: (BOOL)reg;
- - (BOOL)selected;
- - (BOOL)regioned;
- - setSelected: (BOOL)s;
- - setRegioned: (BOOL)s;
- - getMins: (vec3_t)mins maxs: (vec3_t)maxs;
- - (BOOL)containsPoint: (vec3_t)pt;
- - freeWindings;
- - removeIfInvalid;
- extern vec3_t region_min, region_max;
- - newRegion;
- - (texturedef_t *)texturedef;
- - (texturedef_t *)texturedefForFace: (int)f;
- - setTexturedef: (texturedef_t *)tex;
- - setTexturedef: (texturedef_t *)tex forFace:(int)f;
- - XYDrawSelf;
- - ZDrawSelf;
- - CameraDrawSelf;
- - XYRenderSelf;
- - CameraRenderSelf;
- - hitByRay: (vec3_t)p1 : (vec3_t) p2 : (float *)time : (int *)face;
- //
- // single brush actions
- //
- extern int numcontrolpoints;
- extern float *controlpoints[MAX_FACES*3];
- - getZdragface: (vec3_t)dragpoint;
- - getXYdragface: (vec3_t)dragpoint;
- - getXYShearPoints: (vec3_t)dragpoint;
- - addFace: (face_t *)f;
- //
- // multiple brush actions
- //
- - carveByClipper;
- extern vec3_t sb_translate;
- - translate;
- extern id carve_in, carve_out;
- - select;
- - deselect;
- - remove;
- - flushTextures;
- extern vec3_t sb_mins, sb_maxs;
- - addToBBox;
- extern vec3_t sel_x, sel_y, sel_z;
- extern vec3_t sel_org;
- - transform;
- - flipNormals;
- - carve;
- - setCarveVars;
- extern id sb_newowner;
- - moveToEntity;
- - takeCurrentTexture;
- extern vec3_t select_min, select_max;
- - selectPartial;
- - selectComplete;
- - regionPartial;
- - regionComplete;
- extern float sb_floor_dir, sb_floor_dist;
- - feetToFloor;
- - (int) getNumBrushFaces;
- - (face_t *)getBrushFace: (int)which;
- @end
|