#ifndef SetBrush_h #define SetBrush_h #include #include "QF/mathlib.h" #include "TexturePalette.h" #define MAX_FACES 16 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 : NSObject { 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; - initFromScript: (struct script_s *) script owner: 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 #endif//SetBrush_h