diff --git a/tools/Forge/Bundles/MapEdit/CameraView.h b/tools/Forge/Bundles/MapEdit/CameraView.h index 132af86de..449f4dffe 100644 --- a/tools/Forge/Bundles/MapEdit/CameraView.h +++ b/tools/Forge/Bundles/MapEdit/CameraView.h @@ -2,9 +2,13 @@ #define CameraView_h #include -#include "mathlib.h" + +#include "QF/mathlib.h" + #include "SetBrush.h" +#include "render.h" + extern id cameraview_i; extern byte renderlist[1024*1024*4]; diff --git a/tools/Forge/Bundles/MapEdit/CameraView.m b/tools/Forge/Bundles/MapEdit/CameraView.m index 48d29a840..8772c6a35 100644 --- a/tools/Forge/Bundles/MapEdit/CameraView.m +++ b/tools/Forge/Bundles/MapEdit/CameraView.m @@ -1,6 +1,13 @@ -#include "qedefs.h" +#include "QF/sys.h" + +#include "CameraView.h" +#include "Map.h" +#include "QuakeEd.h" +#include "XYView.h" +#include "ZView.h" id cameraview_i; +extern NSBezierPath *path; BOOL timedrawing = 0; @@ -75,10 +82,10 @@ initWithFrame: [map_i makeAllPerform: @selector(feetToFloor)]; if (sb_floor_dist == 99999) { - qprintf ("already on top floor"); + Sys_Printf ("already on top floor"); return self; } - qprintf ("up floor"); + Sys_Printf ("up floor"); origin[2] += sb_floor_dist; [quakeed_i updateCamera]; return self; @@ -91,10 +98,10 @@ initWithFrame: [map_i makeAllPerform: @selector(feetToFloor)]; if (sb_floor_dist == -99999) { - qprintf ("already on bottom floor"); + Sys_Printf ("already on bottom floor"); return self; } - qprintf ("down floor"); + Sys_Printf ("down floor"); origin[2] += sb_floor_dist; [quakeed_i updateCamera]; return self; @@ -121,7 +128,7 @@ homeView [quakeed_i updateAll]; - qprintf ("homed view angle"); + Sys_Printf ("homed view angle"); return self; } @@ -223,7 +230,7 @@ float mid_x, mid_y; float topscale = (240.0/3)/160; float bottomscale = (240.0*2/3)/160; -extern plane_t frustum[5]; +extern plane_t rfrustum[5]; void MakeCampt (vec3_t in, campt_t *pt) { @@ -267,15 +274,16 @@ void CameraMoveto(vec3_t p) { campt_t *pt; - if (upath->numberOfPoints > 2048) + if ([path elementCount] > 2048) lineflush (); pt = &campts[cam_cur]; cam_cur ^= 1; MakeCampt (p,pt); - if (!pt->clipflags) - { // onscreen, so move there immediately - UPmoveto (upath, pt->screen[0], pt->screen[1]); + if (!pt->clipflags) { + // onscreen, so move there immediately + NSPoint point = {pt->screen[0], pt->screen[1]}; + [path moveToPoint: point]; } } @@ -285,22 +293,23 @@ void ClipLine (vec3_t p1, vec3_t p2, int planenum) vec3_t new; plane_t *pl; float scale; + NSPoint point; - if (planenum == 5) - { // draw it! + if (planenum == 5) { + // draw it! scale = mid_x/p1[2]; - new[0] = mid_x + p1[0]*scale; - new[1] = mid_y + p1[1]*scale; - UPmoveto (upath, new[0], new[1]); + point.x = mid_x + p1[0]*scale; + point.y = mid_y + p1[1]*scale; + [path moveToPoint: point]; scale = mid_x/p2[2]; - new[0] = mid_x + p2[0]*scale; - new[1] = mid_y + p2[1]*scale; - UPlineto (upath, new[0], new[1]); + point.x = mid_x + p2[0]*scale; + point.y = mid_y + p2[1]*scale; + [path lineToPoint: point]; return; } - pl = &frustum[planenum]; + pl = &rfrustum[planenum]; d = DotProduct (p1, pl->normal) - pl->dist; d2 = DotProduct (p2, pl->normal) - pl->dist; @@ -348,9 +357,11 @@ void CameraLineto(vec3_t p) if (! bits ) { + NSPoint point1 = {p1->screen[0], p1->screen[1]}; + NSPoint point2 = {p2->screen[0], p2->screen[1]}; c_on++; - UPmoveto (upath, p1->screen[0], p1->screen[1]); - UPlineto (upath, p2->screen[0], p2->screen[1]); + [path moveToPoint: point1]; + [path lineToPoint: point2]; return; // entirely on screen } @@ -463,10 +474,10 @@ drawSelf */ - drawSelf:(NSRect)rects :(int)rectCount { - static float drawtime; // static to shut up compiler warning + float drawtime = 0; if (timedrawing) - drawtime = I_FloatTime (); + drawtime = Sys_DoubleTime (); if (drawmode == dr_texture || drawmode == dr_flat) [self drawSolid]; @@ -476,7 +487,7 @@ drawSelf if (timedrawing) { //XXX NSPing (); - drawtime = I_FloatTime() - drawtime; + drawtime = Sys_DoubleTime () - drawtime; printf ("CameraView drawtime: %5.3f\n", drawtime); } @@ -564,7 +575,7 @@ modalMoveLoop int i; // vec3_t temp; - qprintf ("moving camera position"); + Sys_Printf ("moving camera position"); VectorCopy (origin, originbase); @@ -810,7 +821,7 @@ mouseDown { if (drawmode != dr_texture) { - qprintf ("No texture setting except in texture mode!\n"); + Sys_Printf ("No texture setting except in texture mode!\n"); NopSound (); return; } @@ -826,7 +837,7 @@ mouseDown { if (drawmode != dr_texture) { - qprintf ("No texture setting except in texture mode!\n"); + Sys_Printf ("No texture setting except in texture mode!\n"); NopSound (); return; } @@ -836,7 +847,7 @@ mouseDown } - qprintf ("bad flags for click"); + Sys_Printf ("bad flags for click"); NopSound (); return; @@ -863,13 +874,13 @@ rightMouseDown // if (flags == 0) { - qprintf ("looking"); + Sys_Printf ("looking"); [self viewDrag: &pt]; - qprintf (""); + Sys_Printf ("%s", ""); return; } - qprintf ("bad flags for click"); + Sys_Printf ("bad flags for click"); NopSound (); return; diff --git a/tools/Forge/Bundles/MapEdit/Clipper.h b/tools/Forge/Bundles/MapEdit/Clipper.h index b2a1702c2..c166a8771 100644 --- a/tools/Forge/Bundles/MapEdit/Clipper.h +++ b/tools/Forge/Bundles/MapEdit/Clipper.h @@ -1,6 +1,12 @@ #ifndef Clipper_h #define Clipper_h +#include + +#include "QF/mathlib.h" + +#include "SetBrush.h" + extern id clipper_i; @interface Clipper : NSObject diff --git a/tools/Forge/Bundles/MapEdit/Clipper.m b/tools/Forge/Bundles/MapEdit/Clipper.m index 201e17837..4b24e6f48 100644 --- a/tools/Forge/Bundles/MapEdit/Clipper.m +++ b/tools/Forge/Bundles/MapEdit/Clipper.m @@ -1,9 +1,15 @@ -#include "qedefs.h" - #include #include +#include "QF/sys.h" + +#include "Clipper.h" +#include "Map.h" +#include "XYView.h" +#include "CameraView.h" +#include "QuakeEd.h" + id clipper_i; @implementation Clipper @@ -42,7 +48,7 @@ id clipper_i; } else { - qprintf ("no clipplane"); + Sys_Printf ("no clipplane"); NSBeep (); } diff --git a/tools/Forge/Bundles/MapEdit/Entity.h b/tools/Forge/Bundles/MapEdit/Entity.h index 74825ad5e..59854df34 100644 --- a/tools/Forge/Bundles/MapEdit/Entity.h +++ b/tools/Forge/Bundles/MapEdit/Entity.h @@ -1,27 +1,28 @@ #ifndef Entity_h #define Entity_h -#define MAX_KEY 64 -#define MAX_VALUE 128 -typedef struct epair_s -{ - struct epair_s *next; - char key[MAX_KEY]; - char value[MAX_VALUE]; +#include + +#include "QF/mathlib.h" + +typedef struct epair_s { + struct epair_s *next; + char *key; + char *value; } epair_t; // an Entity is a list of brush objects, with additional key / value info -@interface Entity : NSObject +@interface Entity : NSMutableArray { epair_t *epairs; BOOL modifiable; } - initClass: (char *)classname; -- initFromTokens; +- initFromScript: (struct script_s *) script; -- free; +- (void)dealloc; - (BOOL)modifiable; - setModifiable: (BOOL)m; @@ -32,7 +33,7 @@ typedef struct epair_s - (char *)valueForQKey: (char *)k; - getVector: (vec3_t)v forKey: (char *)k; -- setKey:(char *)k toValue:(char *)v; +- setKey:(const char *)k toValue:(const char *)v; - (int)numPairs; - (epair_t *)epairs; - removeKeyPair: (char *)key; diff --git a/tools/Forge/Bundles/MapEdit/Entity.m b/tools/Forge/Bundles/MapEdit/Entity.m index 5e33340e9..0d4d5a20f 100644 --- a/tools/Forge/Bundles/MapEdit/Entity.m +++ b/tools/Forge/Bundles/MapEdit/Entity.m @@ -1,5 +1,14 @@ -#include "qedefs.h" +#include "QF/dstring.h" +#include "QF/script.h" +#include "QF/sys.h" + +#include "Entity.h" +#include "EntityClass.h" +#include "TexturePalette.h" +#include "SetBrush.h" +#include "Map.h" +#include "CameraView.h" @implementation Entity @@ -15,13 +24,10 @@ vec3_t bad_maxs = {8, 8, 8}; // get class new = [entity_classes_i classForName: [self valueForQKey: "classname"]]; - if (new) - { + if (new) { v = [new mins]; v2 = [new maxs]; - } - else - { + } else { v = bad_mins; v2 = bad_maxs; } @@ -43,31 +49,6 @@ vec3_t bad_maxs = {8, 8, 8}; return self; } -- copyWithZone:(NSZone *)zone -{ - id new, nb; - epair_t *e; - int i; - - new = [[Entity alloc] init]; - [new setModifiable: modifiable]; - - for (e=epairs ; e ; e=e->next) - { // don't copy target and targetname fields - if (strncmp(e->key,"target",6)) - [new setKey: e->key toValue: e->value]; - } - - for (i=0 ; inext; + free (e->key); + free (e->value); free (e); } - return [super free]; + [super dealloc]; } - (BOOL)modifiable @@ -131,19 +114,17 @@ vec3_t bad_maxs = {8, 8, 8}; return self; } -- removeObject: o +- (void)removeObject: o { - o = [super removeObject: o]; - if (numElements) - return o; + [super removeObject: o]; + if ([self count]) + return; // the entity is empty, so remove the entire thing - if ( self == [map_i objectAt: 0]) - return o; // never remove the world + if ( self == [map_i objectAtIndex: 0]) + return; // never remove the world [map_i removeObject: self]; - [self free]; - - return o; + [self release]; } @@ -184,33 +165,27 @@ vec3_t bad_maxs = {8, 8, 8}; return self; } -- setKey:(char *)k toValue:(char *)v +- setKey:(const char *)k toValue:(const char *)v { epair_t *e; - if (strlen(k) > MAX_KEY) - Error ("setKey: %s > MAX_KEY", k); - if (strlen(v) > MAX_VALUE) - Error ("setKey: %s > MAX_VALUE", v); - while (*k && *k <= ' ') k++; if (!*k) return self; // don't set NULL values - for (e=epairs ; e ; e=e->next) - if (!strcmp(k,e->key)) - { - memset (e->value, 0, sizeof(e->value)); - strcpy (e->value, v); + for (e=epairs ; e ; e=e->next) { + if (!strcmp (k, e->key)) { + free (e->value); + e->value = strdup (v); return self; } + } e = malloc (sizeof(epair_t)); - memset (e, 0, sizeof(epair_t)); - - strcpy (e->key, k); - strcpy (e->value, v); + + e->key = strdup (k); + e->value = strdup (v); e->next = epairs; epairs = e; @@ -287,7 +262,7 @@ If the entity does not have a "targetname" key, a unique one is generated maxt = 0; for (i=1 ; i -#include "mathlib.h" + +#include "QF/mathlib.h" typedef enum {esize_model, esize_fixed} esize_t; @@ -15,10 +16,10 @@ typedef enum {esize_model, esize_fixed} esize_t; vec3_t mins, maxs; vec3_t color; char *comments; - char flagnames[MAX_FLAGS][32]; + char *flagnames[MAX_FLAGS]; } -- initFromText: (char *)text; +- initFromText: (const char *)text source: (const char *)filename; - (char *)classname; - (esize_t)esize; - (float *)mins; // only for esize_fixed diff --git a/tools/Forge/Bundles/MapEdit/EntityClass.m b/tools/Forge/Bundles/MapEdit/EntityClass.m index ed0a881b7..c20f73d9b 100644 --- a/tools/Forge/Bundles/MapEdit/EntityClass.m +++ b/tools/Forge/Bundles/MapEdit/EntityClass.m @@ -1,8 +1,36 @@ +#include -#include "qedefs.h" +#include "QF/dstring.h" +#include "QF/quakeio.h" +#include "QF/script.h" +#include "QF/sys.h" +#include "QF/va.h" + +#include "EntityClass.h" @implementation EntityClass +static int +parse_vector (script_t *script, vec3_t vec) +{ + int r; + + if (!Script_GetToken (script, 0)) + return 0; + if (strcmp (script->token->str, "(")) + return 0; + + r = sscanf (script->p, "%f %f %f)", &vec[0], &vec[1], &vec[2]); + if (r != 3) + return 0; + + while (strcmp (script->token->str, ")")) { + if (!Script_GetToken (script, 0)) + return 0; + } + return 1; +} + // the classname, color triple, and bounding box are parsed out of comments // A ? size means take the exact brush size. // @@ -13,89 +41,64 @@ // // /*QUAKED func_door (0 .5 .8) ? START_OPEN STONE_SOUND DOOR_DONT_LINK GOLD_KEY SILVER_KEY -char *debugname; -- initFromText: (char *)text +- initFromText: (const char *)text source: (const char *)filename { - char *t; - int len; - int r, i; - char parms[256], *p; + const char *t; + size_t len; + int i; + script_t *script; [super init]; text += strlen("/*QUAKED "); + + script = Script_New (); + Script_Start (script, filename, text); + + // grab the name + if (!Script_GetToken (script, 0)) + return 0; + if (!strcmp (script->token->str, "*/")) + return 0; + name = strdup (script->token->str); + + // grab the color + if (!parse_vector (script, color)) + return 0; -// grab the name - text = COM_Parse (text); - name = malloc (strlen(com_token)+1); - strcpy (name, com_token); - debugname = name; - -// grab the color - r = sscanf (text," (%f %f %f)", &color[0], &color[1], &color[2]); - if (r != 3) - return NULL; - - while (*text != ')') - { - if (!*text) - return NULL; - text++; - } - text++; - -// get the size - text = COM_Parse (text); - if (com_token[0] == '(') - { // parse the size as two vectors + // get the size + if (!strcmp (script->token->str, "(")) { + Script_UngetToken (script); + if (!parse_vector (script, mins)) + return 0; + if (!parse_vector (script, maxs)) + return 0; esize = esize_fixed; - r = sscanf (text,"%f %f %f) (%f %f %f)", &mins[0], &mins[1], &mins[2], &maxs[0], &maxs[1], &maxs[2]); - if (r != 6) - return NULL; - - for (i=0 ; i<2 ; i++) - { - while (*text != ')') - { - if (!*text) - return NULL; - text++; - } - text++; - } - } - else - { // use the brushes + } else if (!strcmp (script->token->str, "?")) { + // use the brushes esize = esize_model; + } else { + return 0; } -// get the flags - - -// copy to the first /n - p = parms; - while (*text && *text != '\n') - *p++ = *text++; - *p = 0; - text++; - -// any remaining words are parm flags - p = parms; - for (i=0 ; i<8 ; i++) - { - p = COM_Parse (p); - if (!p) + // get the flags + // any remaining words on the line are parm flags + for (i = 0; i < MAX_FLAGS; i++) { + if (!Script_TokenAvailable (script, 0)) break; - strcpy (flagnames[i], com_token); - } + Script_GetToken (script, 0); + flagnames[i] = strdup (script->token->str); + } + while (Script_TokenAvailable (script, 0)) + Script_GetToken (script, 0); // find the length until close comment - for (t=text ; t[0] && !(t[0]=='*' && t[1]=='/') ; t++) - ; + for (t = script->p; t[0] && !(t[0] == '*' && t[1] == '/'); t++) + ; // copy the comment block out - len = t-text; - comments = malloc (len+1); + len = t - text; + comments = malloc (len + 1); memcpy (comments, text, len); comments[len] = 0; @@ -136,7 +139,7 @@ char *debugname; - (char *)flagName: (unsigned)flagnum { if (flagnum >= MAX_FLAGS) - Error ("EntityClass flagName: bad number"); + Sys_Error ("EntityClass flagName: bad number"); return flagnames[flagnum]; } @@ -176,26 +179,36 @@ scanFile */ - (void)scanFile: (char *)filename { - int size; + int size, line; char *data; id cl; int i; char path[1024]; - + QFile *file; + sprintf (path,"%s/%s", source_path, filename); - - size = LoadFile (path, (void *)&data); - - for (i=0 ; i + extern id keypairview_i; @interface KeypairView:NSView diff --git a/tools/Forge/Bundles/MapEdit/KeypairView.m b/tools/Forge/Bundles/MapEdit/KeypairView.m index 7758d119c..30d0d01bd 100644 --- a/tools/Forge/Bundles/MapEdit/KeypairView.m +++ b/tools/Forge/Bundles/MapEdit/KeypairView.m @@ -1,5 +1,8 @@ -#include "qedefs.h" +#include "KeypairView.h" +#include "Map.h" +#include "Entity.h" +#include "Things.h" id keypairview_i; diff --git a/tools/Forge/Bundles/MapEdit/Map.h b/tools/Forge/Bundles/MapEdit/Map.h index 2b4a2e23b..4196c1b92 100644 --- a/tools/Forge/Bundles/MapEdit/Map.h +++ b/tools/Forge/Bundles/MapEdit/Map.h @@ -1,6 +1,10 @@ #ifndef Map_h #define Map_h +#include + +#include "QF/mathlib.h" + // Map is a list of Entity objects extern id map_i; diff --git a/tools/Forge/Bundles/MapEdit/Map.m b/tools/Forge/Bundles/MapEdit/Map.m index ed7b40bdf..b897581fa 100644 --- a/tools/Forge/Bundles/MapEdit/Map.m +++ b/tools/Forge/Bundles/MapEdit/Map.m @@ -1,9 +1,22 @@ -#include "qedefs.h" - #include #include +#include "QF/quakeio.h" +#include "QF/script.h" +#include "QF/sys.h" + +#include "Map.h" +#include "Entity.h" +#include "TexturePalette.h" +#include "SetBrush.h" +#include "XYView.h" +#include "CameraView.h" +#include "QuakeEd.h" +#include "Things.h" +#include "InspectorControl.h" +#include "Project.h" + id map_i; @@ -46,7 +59,7 @@ FILE METHODS else { [w removeObjectAtIndex: 0]; - [o free]; + [o release]; } } @@ -55,8 +68,8 @@ FILE METHODS { o = [self objectAtIndex: 0]; [self removeObjectAtIndex: 0]; - [o freeObjects]; - [o free]; + [o removeAllObjects]; + [o release]; } return self; @@ -169,6 +182,7 @@ FILE METHODS - writeStats { +/*XXX FILE *f; extern int c_updateall; struct timeval tp; @@ -180,6 +194,7 @@ FILE METHODS fprintf (f,"%i %i\n", (int)tp.tv_sec, c_updateall); c_updateall = 0; fclose (f); +*/ return self; } @@ -223,17 +238,26 @@ readMapFile int i, c; vec3_t org; float angle; + QFile *file; + script_t *script; + size_t size; [self saveSelected]; - qprintf ("loading %s\n", fname); + Sys_Printf ("loading %s\n", fname); - LoadFile (fname, (void **)&dat); - StartTokenParsing (dat); + file = Qopen (fname, "rt"); + size = Qfilesize (file); + dat = malloc (size + 1); + size = Qread (file, dat, size); + Qclose (file); + dat[size] = 0; - do - { - new = [[Entity alloc] initFromTokens]; + script = Script_New (); + Script_Start (script, fname, dat); + + do { + new = [[Entity alloc] initFromScript: script]; if (!new) break; [self addObject: new]; @@ -288,11 +312,11 @@ writeMapFile FILE *f; int i; - qprintf ("writeMapFile: %s", fname); + Sys_Printf ("writeMapFile: %s", fname); f = fopen (fname,"w"); if (!f) - Error ("couldn't write %s", fname); + Sys_Error ("couldn't write %s", fname); for (i=0 ; i<[self count] ; i++) [[self objectAtIndex: i] writeToFILE: f region: reg]; @@ -353,7 +377,7 @@ make a target connection from the original entity. oldent = [self currentEntity]; if (oldent == [self objectAtIndex: 0]) { - qprintf ("Must have a non-world entity selected to connect"); + Sys_Printf ("Must have a non-world entity selected to connect"); return self; } @@ -361,13 +385,13 @@ make a target connection from the original entity. ent = [self currentEntity]; if (ent == oldent) { - qprintf ("Must click on a different entity to connect"); + Sys_Printf ("Must click on a different entity to connect"); return self; } if (ent == [self objectAtIndex: 0]) { - qprintf ("Must click on a non-world entity to connect"); + Sys_Printf ("Must click on a non-world entity to connect"); return self; } @@ -422,13 +446,13 @@ to intervening world brushes if (besttime == 99999) { - qprintf ("trace missed"); + Sys_Printf ("trace missed"); return self; } if ( [bestbrush regioned] ) { - qprintf ("WANRING: clicked on regioned brush"); + Sys_Printf ("WANRING: clicked on regioned brush"); return self; } @@ -448,12 +472,12 @@ to intervening world brushes } [bestbrush setSelected: YES]; - qprintf ("selected entity %i brush %i face %i", [self indexOfObject:bestent], [bestent indexOfObject: bestbrush], bestface); + Sys_Printf ("selected entity %i brush %i face %i", (int) [self indexOfObject:bestent], (int) [bestent indexOfObject: bestbrush], bestface); } else { [bestbrush setSelected: NO]; - qprintf ("deselected entity %i brush %i face %i", [self indexOfObject:bestent], [bestent indexOfObject: bestbrush], bestface); + Sys_Printf ("deselected entity %i brush %i face %i", (int) [self indexOfObject:bestent], (int) [bestent indexOfObject: bestbrush], bestface); } [quakeed_i enableFlushWindow]; @@ -548,14 +572,14 @@ getTextureRay if ( ![bestent modifiable]) { - qprintf ("can't modify spawned entities"); + Sys_Printf ("can't modify spawned entities"); return self; } td = [bestbrush texturedefForFace: bestface]; [texturepalette_i setTextureDef: td]; - qprintf ("grabbed texturedef and sizes"); + Sys_Printf ("grabbed texturedef and sizes"); [bestbrush getMins: mins maxs: maxs]; @@ -604,19 +628,19 @@ setTextureRay if (besttime == 99999) { - qprintf ("trace missed"); + Sys_Printf ("trace missed"); return self; } if ( ![bestent modifiable]) { - qprintf ("can't modify spawned entities"); + Sys_Printf ("can't modify spawned entities"); return self; } if ( [bestbrush regioned] ) { - qprintf ("WANRING: clicked on regioned brush"); + Sys_Printf ("WANRING: clicked on regioned brush"); return self; } @@ -626,12 +650,12 @@ setTextureRay if (allsides) { [bestbrush setTexturedef: &td]; - qprintf ("textured entity %i brush %i", [self indexOfObject:bestent], [bestent indexOfObject: bestbrush]); + Sys_Printf ("textured entity %i brush %i", (int) [self indexOfObject:bestent], (int) [bestent indexOfObject: bestbrush]); } else { [bestbrush setTexturedef: &td forFace: bestface]; - qprintf ("deselected entity %i brush %i face %i", [self indexOfObject:bestent], [bestent indexOfObject: bestbrush], bestface); + Sys_Printf ("deselected entity %i brush %i face %i", (int) [self indexOfObject:bestent], (int) [bestent indexOfObject: bestbrush], bestface); } [quakeed_i enableFlushWindow]; @@ -669,12 +693,12 @@ OPERATIONS ON SELECTIONS if ([brush regioned]) continue; total++; - [brush perform:sel]; + [brush performSelector:sel]; } } // if (!total) -// qprintf ("nothing selected"); +// Sys_Printf ("nothing selected"); return self; } @@ -696,7 +720,7 @@ OPERATIONS ON SELECTIONS continue; if ([brush regioned]) continue; - [brush perform:sel]; + [brush performSelector:sel]; } } @@ -718,7 +742,7 @@ OPERATIONS ON SELECTIONS brush = [ent objectAtIndex: j]; if ([brush regioned]) continue; - [brush perform:sel]; + [brush performSelector:sel]; } } @@ -738,7 +762,7 @@ OPERATIONS ON SELECTIONS for (j = c2-1 ; j >=0 ; j--) { brush = [ent objectAtIndex: j]; - [brush perform:sel]; + [brush performSelector:sel]; } } @@ -757,7 +781,7 @@ void sel_identity (void) { if ( ![currentEntity modifiable]) { - qprintf ("can't modify spawned entities"); + Sys_Printf ("can't modify spawned entities"); return self; } @@ -912,14 +936,14 @@ UI operations o = [self selectedBrush]; if (!o) { - qprintf ("nothing selected"); + Sys_Printf ("nothing selected"); return self; } o = [o parent]; c = [o count]; for (i=0 ; i + extern id quakeed_i; extern BOOL filter_light, filter_path, filter_entities; extern BOOL filter_clip_brushes, filter_water_brushes, filter_world; -extern UserPath *upath; - extern id g_cmd_out_i; double I_FloatTime (void); diff --git a/tools/Forge/Bundles/MapEdit/QuakeEd.m b/tools/Forge/Bundles/MapEdit/QuakeEd.m index 372dde803..0d42b61f7 100644 --- a/tools/Forge/Bundles/MapEdit/QuakeEd.m +++ b/tools/Forge/Bundles/MapEdit/QuakeEd.m @@ -1,5 +1,5 @@ -#include "qedefs.h" +#include "QuakeEd.h" id quakeed_i; id entclasses_i; @@ -29,8 +29,6 @@ void NopSound (void) NSBeep (); } -UserPath *upath; - void My_Malloc_Error (int code) { diff --git a/tools/Forge/Bundles/MapEdit/SetBrush.h b/tools/Forge/Bundles/MapEdit/SetBrush.h index 1eefab8cd..516ae2abb 100644 --- a/tools/Forge/Bundles/MapEdit/SetBrush.h +++ b/tools/Forge/Bundles/MapEdit/SetBrush.h @@ -1,9 +1,13 @@ #ifndef SetBrush_h #define SetBrush_h -#define MAX_FACES 16 +#include -typedef float vec5_t[5]; +#include "QF/mathlib.h" + +#include "TexturePalette.h" + +#define MAX_FACES 16 typedef struct { @@ -61,7 +65,7 @@ winding_t *NewWinding (int points); } - initOwner: own mins:(float *)mins maxs:(float *)maxs texture:(texturedef_t *)tex; -- initFromTokens: own; +- initFromScript: (struct script_s *) script owner: own; - setMins:(float *)mins maxs:(float *)maxs; - parent; diff --git a/tools/Forge/Bundles/MapEdit/SetBrush.m b/tools/Forge/Bundles/MapEdit/SetBrush.m index eed82f400..5a126983f 100644 --- a/tools/Forge/Bundles/MapEdit/SetBrush.m +++ b/tools/Forge/Bundles/MapEdit/SetBrush.m @@ -1,4 +1,11 @@ -#include "qedefs.h" +#include "QF/script.h" +#include "QF/sys.h" + +#include "SetBrush.h" +#include "Entity.h" +#include "EntityClass.h" +#include "Map.h" +#include "Preferences.h" @implementation SetBrush @@ -74,10 +81,10 @@ void CheckFace (face_t *f) w = f->w; if (!w) - Error ("CheckFace: no winding"); + Sys_Error ("CheckFace: no winding"); if (w->numpoints < 3) - Error ("CheckFace: %i points",w->numpoints); + Sys_Error ("CheckFace: %i points",w->numpoints); for (i=0 ; inumpoints ; i++) { @@ -85,21 +92,21 @@ void CheckFace (face_t *f) for (j=0 ; j<3 ; j++) if (p1[j] > BOGUS_RANGE || p1[j] < -BOGUS_RANGE) - Error ("CheckFace: BUGUS_RANGE: %f",p1[j]); + Sys_Error ("CheckFace: BUGUS_RANGE: %f",p1[j]); j = i+1 == w->numpoints ? 0 : i+1; // check the point is on the face plane d = DotProduct (p1, f->plane.normal) - f->plane.dist; if (d < -ON_EPSILON || d > ON_EPSILON) - Error ("CheckFace: point off plane"); + Sys_Error ("CheckFace: point off plane"); // check the edge isn't degenerate p2 = w->points[j]; VectorSubtract (p2, p1, dir); if (VectorLength (dir) < ON_EPSILON) - Error ("CheckFace: degenerate edge"); + Sys_Error ("CheckFace: degenerate edge"); CrossProduct (f->plane.normal, dir, edgenormal); VectorNormalize (edgenormal); @@ -113,7 +120,7 @@ void CheckFace (face_t *f) continue; d = DotProduct (w->points[j], edgenormal); if (d > edgedist) - Error ("CheckFace: non-convex"); + Sys_Error ("CheckFace: non-convex"); } } } @@ -136,12 +143,12 @@ NewWinding winding_t *NewWinding (int points) { winding_t *w; - int size; + size_t size; if (points > MAX_POINTS_ON_WINDING) - Error ("NewWinding: %i points", points); + Sys_Error ("NewWinding: %i points", points); - size = (int)((winding_t *)0)->points[points]; + size = (size_t)((winding_t *)0)->points[points]; w = malloc (size); memset (w, 0, size); @@ -156,10 +163,10 @@ CopyWinding */ winding_t *CopyWinding (winding_t *w) { - int size; + size_t size; winding_t *c; - size = (int)((winding_t *)0)->points[w->numpoints]; + size = (size_t)((winding_t *)0)->points[w->numpoints]; c = malloc (size); memcpy (c, w, size); return c; @@ -263,7 +270,7 @@ winding_t *ClipWinding (winding_t *in, plane_t *split) } if (neww->numpoints > maxpts) - Error ("ClipWinding: points exceeded estimate"); + Sys_Error ("ClipWinding: points exceeded estimate"); // free the original winding free (in); @@ -306,7 +313,7 @@ winding_t *BasePolyForPlane (face_t *f) } } if (x==-1) - Error ("BasePolyForPlane: no axis found"); + Sys_Error ("BasePolyForPlane: no axis found"); VectorCopy (vec3_origin, vup); switch (x) @@ -321,7 +328,7 @@ winding_t *BasePolyForPlane (face_t *f) } v = DotProduct (vup, p->normal); - VectorMA (vup, -v, p->normal, vup); + VectorMultAdd (vup, -v, p->normal, vup); VectorNormalize (vup); VectorScale (p->normal, p->dist, org); @@ -621,23 +628,10 @@ initOwner::: return self; } -- copyFromZone:(NSZone *)zone -{ - id new; - - [self freeWindings]; - new = [super copyFromZone: zone]; - - [self calcWindings]; - [new calcWindings]; - - return new; -} - -- free +- (void)dealloc { [self freeWindings]; - return [super free]; + return [super dealloc]; } /* @@ -646,7 +640,7 @@ initOwner: fromTokens =========== */ int numsb; -- initFromTokens: own +- initFromScript: (script_t *) script owner: own { face_t *f; int i,j; @@ -659,44 +653,44 @@ int numsb; numfaces = 0; do { - if (!GetToken (true)) + if (!Script_GetToken (script, true)) break; - if (!strcmp (token, "}") ) + if (!strcmp (Script_Token (script), "}") ) break; for (i=0 ; i<3 ; i++) { if (i != 0) - GetToken (true); - if (strcmp (token, "(") ) - Error ("parsing map file"); + Script_GetToken (script, true); + if (strcmp (Script_Token (script), "(") ) + Sys_Error ("parsing map file"); for (j=0 ; j<3 ; j++) { - GetToken (false); - f->planepts[i][j] = atoi(token); + Script_GetToken (script, false); + f->planepts[i][j] = atoi(Script_Token (script)); } - GetToken (false); - if (strcmp (token, ")") ) - Error ("parsing map file"); + Script_GetToken (script, false); + if (strcmp (Script_Token (script), ")") ) + Sys_Error ("parsing map file"); } - GetToken (false); - strcpy (f->texture.texture, token); - GetToken (false); - f->texture.shift[0] = atof(token); - GetToken (false); - f->texture.shift[1] = atof(token); - GetToken (false); - f->texture.rotate = atof(token); - GetToken (false); - f->texture.scale[0] = atof(token); - GetToken (false); - f->texture.scale[1] = atof(token); + Script_GetToken (script, false); + strcpy (f->texture.texture, Script_Token (script)); + Script_GetToken (script, false); + f->texture.shift[0] = atof(Script_Token (script)); + Script_GetToken (script, false); + f->texture.shift[1] = atof(Script_Token (script)); + Script_GetToken (script, false); + f->texture.rotate = atof(Script_Token (script)); + Script_GetToken (script, false); + f->texture.scale[0] = atof(Script_Token (script)); + Script_GetToken (script, false); + f->texture.scale[1] = atof(Script_Token (script)); #if 0 - flags = atoi(token); + flags = atoi(Script_Token (script)); flags &= 7; @@ -827,7 +821,7 @@ setTexturedef - setTexturedef: (texturedef_t *)tex forFace:(int)f { if ( (unsigned)f > numfaces) - Error ("setTexturedef:forFace: bad face number %i",f); + Sys_Error ("setTexturedef:forFace: bad face number %i",f); faces[f].texture = *tex; faces[f].qtexture = NULL; // recache next render @@ -1000,7 +994,7 @@ hitByRay *time = DotProduct (frontpoint, dir); if (*time < 0) - Error ("hitByRay: negative t"); + Sys_Error ("hitByRay: negative t"); *face = frontface; @@ -1027,9 +1021,9 @@ BOOL fakebrush; vec3_t forward, right; char *targname; vec3_t min, max, temp; - char targ[64]; + char *targ; - strcpy (targ, [parent valueForQKey: "target"]); + targ = [parent valueForQKey: "target"]; if (!targ || !targ[0]) return self; @@ -1040,12 +1034,12 @@ BOOL fakebrush; c = [map_i count]; for (i=0 ; i + +#include "QF/qtypes.h" + typedef union { byte chan[4]; diff --git a/tools/Forge/Bundles/MapEdit/TexturePalette.m b/tools/Forge/Bundles/MapEdit/TexturePalette.m index 7d674deb0..647fd6494 100644 --- a/tools/Forge/Bundles/MapEdit/TexturePalette.m +++ b/tools/Forge/Bundles/MapEdit/TexturePalette.m @@ -1,5 +1,6 @@ +#include "QF/qendian.h" -#include "qedefs.h" +#include "TexturePalette.h" id texturepalette_i; @@ -55,7 +56,7 @@ unsigned badtex_d[] = 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff }; -qtexture_t badtex = {"notexture",16,16,NULL, badtex_d, {0,0,255,255}}; +qtexture_t badtex = {"notexture",16,16,NULL, badtex_d, {{0,0,255,255}}}; /* ============== diff --git a/tools/Forge/Bundles/MapEdit/Things.h b/tools/Forge/Bundles/MapEdit/Things.h index 30e3ca9c9..9be98d0e0 100644 --- a/tools/Forge/Bundles/MapEdit/Things.h +++ b/tools/Forge/Bundles/MapEdit/Things.h @@ -3,6 +3,8 @@ #include +#include "Entity.h" + extern id things_i; #define ENTITYNAMEKEY "spawn" diff --git a/tools/Forge/Bundles/MapEdit/Things.m b/tools/Forge/Bundles/MapEdit/Things.m index ec93630f7..efb9e8dd0 100644 --- a/tools/Forge/Bundles/MapEdit/Things.m +++ b/tools/Forge/Bundles/MapEdit/Things.m @@ -1,5 +1,10 @@ -#include "qedefs.h" +#include "Things.h" +#include "QuakeEd.h" +#include "Map.h" +#include "EntityClass.h" +#include "KeypairView.h" +#include "Project.h" id things_i; @@ -21,7 +26,7 @@ id things_i; - loadEntityComment:(id)obj { [entity_comment_i selectAll:self]; - [entity_comment_i replaceSel:[obj comments]]; + [entity_comment_i replaceCharactersInRange:[entity_comment_i selectedRange] withString:[NSString stringWithCString:[obj comments]]]; return self; } @@ -33,13 +38,13 @@ id things_i; path = [project_i getProgDirectory]; - [prog_path_i setStringValue: path]; + [prog_path_i setStringValue: [NSString stringWithCString:path]]; [[EntityClassList alloc] initForSourceDirectory: path]; - [self loadEntityComment:[entity_classes_i objectAt:lastSelected]]; + [self loadEntityComment:[entity_classes_i objectAtIndex:lastSelected]]; [entity_browser_i loadColumnZero]; - [[entity_browser_i matrixInColumn:0] selectCellAt:lastSelected :0]; + [[entity_browser_i matrixInColumn:0] selectCellAtRow:lastSelected column:0]; [entity_browser_i setDoubleAction: @selector(doubleClickEntity:)]; @@ -52,7 +57,7 @@ id things_i; matr = [sender matrixInColumn: 0]; lastSelected = [matr selectedRow]; - [self loadEntityComment:[entity_classes_i objectAt:lastSelected]]; + [self loadEntityComment:[entity_classes_i objectAtIndex:lastSelected]]; [quakeed_i makeFirstResponder: quakeed_i]; return self; @@ -67,7 +72,7 @@ id things_i; - (char *)spawnName { - return [[entity_classes_i objectAt:lastSelected] classname]; + return [[entity_classes_i objectAtIndex:lastSelected] classname]; } @@ -83,22 +88,22 @@ id things_i; if (!path || !path[0]) { path = [project_i getProgDirectory]; - [prog_path_i setStringValue: path]; + [prog_path_i setStringValue: [NSString stringWithCString:path]]; } // Free all entity info in memory... - [entity_classes_i freeObjects]; - [entity_classes_i free]; + [entity_classes_i removeAllObjects]; + [entity_classes_i release]; // Now, RELOAD! [[EntityClassList alloc] initForSourceDirectory: path]; lastSelected = 0; - ent = [entity_classes_i objectAt:lastSelected]; - [self loadEntityComment:[entity_classes_i objectAt:lastSelected]]; + ent = [entity_classes_i objectAtIndex:lastSelected]; + [self loadEntityComment:[entity_classes_i objectAtIndex:lastSelected]]; [entity_browser_i loadColumnZero]; - [[entity_browser_i matrixInColumn:0] selectCellAt:lastSelected :0]; + [[entity_browser_i matrixInColumn:0] selectCellAtRow:lastSelected column:0]; [self newCurrentEntity]; // in case flags changed @@ -113,14 +118,14 @@ id things_i; classent = [entity_classes_i classForName:class]; if (!classent) return self; - lastSelected = [entity_classes_i indexOf: classent]; + lastSelected = [entity_classes_i indexOfObject: classent]; if (lastSelected < 0) lastSelected = 0; [self loadEntityComment:classent]; - [[entity_browser_i matrixInColumn:0] selectCellAt:lastSelected :0]; - [[entity_browser_i matrixInColumn:0] scrollCellToVisible:lastSelected :0]; + [[entity_browser_i matrixInColumn:0] selectCellAtRow:lastSelected column:0]; + [[entity_browser_i matrixInColumn:0] scrollCellToVisibleAtRow:lastSelected column:0]; return self; } @@ -136,7 +141,7 @@ id things_i; ent = [map_i currentEntity]; classname = [ent valueForQKey: "classname"]; - if (ent != [map_i objectAt: 0]) + if (ent != [map_i objectAtIndex: 0]) [self selectClass: classname]; // don't reset for world classent = [entity_classes_i classForName:classname]; flagname = [ent valueForQKey: "spawnflags"]; @@ -149,11 +154,11 @@ id things_i; for (r=0 ; r<4 ; r++) for (c=0 ; c<3 ; c++) { - cell = [flags_i cellAt: r : c]; + cell = [flags_i cellAtRow: r column: c]; if (c < 2) { flagname = [classent flagName: c*4 + r]; - [cell setTitle: flagname]; + [cell setTitle: [NSString stringWithCString:flagname]]; } [cell setIntValue: (flags & (1<< ((c*4)+r)) ) > 0]; } @@ -175,8 +180,8 @@ id things_i; // - setSelectedKey:(epair_t *)ep; { - [keyInput_i setStringValue:ep->key]; - [valueInput_i setStringValue:ep->value]; + [keyInput_i setStringValue:[NSString stringWithCString:ep->key]]; + [valueInput_i setStringValue:[NSString stringWithCString:ep->value]]; [valueInput_i selectText:self]; return self; } @@ -237,7 +242,7 @@ id things_i; const char *title; char value[10]; - title = [[sender selectedCell] title]; + title = [[[sender selectedCell] title] cString]; if (!strcmp(title,"Up")) strcpy (value, "-1"); else if (!strcmp(title,"Dn")) @@ -245,8 +250,8 @@ id things_i; else strcpy (value, title); - [keyInput_i setStringValue:"angle"]; - [valueInput_i setStringValue:value]; + [keyInput_i setStringValue:@"angle"]; + [valueInput_i setStringValue:[NSString stringWithCString:value]]; [self addPair:NULL]; [self clearInputs]; @@ -269,7 +274,7 @@ id things_i; for (r=0 ; r<4 ; r++) for (c=0 ; c<3 ; c++) { - cell = [flags_i cellAt: r : c]; + cell = [flags_i cellAtRow: r column: c]; i = ([cell intValue] > 0); flags |= (i<< ((c*4)+r)); } @@ -304,10 +309,10 @@ id things_i; i = 0; while(max--) { - object = [entity_classes_i objectAt:i]; + object = [entity_classes_i objectAtIndex:i]; [matrix addRow]; - cell = [matrix cellAt:i++ :0]; - [cell setStringValue:[object classname]]; + cell = [matrix cellAtRow:i++ column:0]; + [cell setStringValue:[NSString stringWithCString:[object classname]]]; [cell setLeaf:YES]; [cell setLoaded:YES]; } diff --git a/tools/Forge/Bundles/MapEdit/UserPath.m b/tools/Forge/Bundles/MapEdit/UserPath.m index 1f744ab54..d6014d33b 100644 --- a/tools/Forge/Bundles/MapEdit/UserPath.m +++ b/tools/Forge/Bundles/MapEdit/UserPath.m @@ -8,9 +8,9 @@ */ #include "UserPath.h" -#include -#include -#include +//#include +//#include +//#include #include #include @@ -137,16 +137,16 @@ int sendUserPath(UserPath *up) exception.code = 0; if (up->opForUserPath != 0) { - NS_DURING + //NS_DURING DPSDoUserPath(up->points, up->numberOfPoints, dps_float, up->ops, up->numberOfOps, up->bbox, up->opForUserPath); if (up->ping) { NSPing(); } - NS_HANDLER - exception = NSLocalHandler; - NS_ENDHANDLER + //NS_HANDLER +// exception = NSLocalHandler; + //NS_ENDHANDLER if (exception.code) { NSReportError(&exception); if (exception.code == dps_err_ps) { diff --git a/tools/Forge/Bundles/MapEdit/XYView.h b/tools/Forge/Bundles/MapEdit/XYView.h index d45d346ed..c68b13db4 100644 --- a/tools/Forge/Bundles/MapEdit/XYView.h +++ b/tools/Forge/Bundles/MapEdit/XYView.h @@ -2,9 +2,13 @@ #define XYView_h #include -#include "mathlib.h" + +#include "QF/mathlib.h" + #include "SetBrush.h" +#include "render.h" + extern id xyview_i; #define MINSCALE 0.125 @@ -23,7 +27,6 @@ void linecolor (float r, float g, float b); void XYmoveto (vec3_t pt); void XYlineto (vec3_t pt); -typedef enum {dr_wire, dr_flat, dr_texture} drawmode_t; @interface XYView : NSView diff --git a/tools/Forge/Bundles/MapEdit/XYView.m b/tools/Forge/Bundles/MapEdit/XYView.m index f2a54c3a5..3f8c428a1 100644 --- a/tools/Forge/Bundles/MapEdit/XYView.m +++ b/tools/Forge/Bundles/MapEdit/XYView.m @@ -1,8 +1,15 @@ -#include "qedefs.h" +#include "XYView.h" +#include "ZView.h" +#include "CameraView.h" +#include "Clipper.h" +#include "QuakeEd.h" +#include "Map.h" +#include "Entity.h" +#include "PopScrollView.h" id xyview_i; -id scalemenu_i, gridmenu_i, scrollview_i, gridbutton_i, scalebutton_i; +id scrollview_i, gridbutton_i, scalebutton_i; vec3_t xy_viewnormal; // v_forward for xy view float xy_viewdist; // clip behind this plane @@ -14,12 +21,12 @@ float xy_viewdist; // clip behind this plane initWithFrame: ================== */ -- initWithFrame:(const NSRect *)frameRect +- initWithFrame:(NSRect)frameRect { [super initWithFrame:frameRect]; [self allocateGState]; - NSSetRect (&realbounds, 0,0,0,0); + realbounds = NSMakeRect (0,0,0,0); gridsize = 16; scale = 1.0; @@ -31,50 +38,45 @@ initWithFrame: // // initialize the pop up menus // - scalemenu_i = [[PopUpList alloc] init]; - [scalemenu_i setTarget: self]; - [scalemenu_i setAction: @selector(scaleMenuTarget:)]; + scalebutton_i = [[NSPopUpButton alloc] init]; + [scalebutton_i setTarget: self]; + [scalebutton_i setAction: @selector(scaleMenuTarget:)]; + [scalebutton_i addItemWithTitle: @"12.5%"]; + [scalebutton_i addItemWithTitle: @"25%"]; + [scalebutton_i addItemWithTitle: @"50%"]; + [scalebutton_i addItemWithTitle: @"75%"]; + [scalebutton_i addItemWithTitle: @"100%"]; + [scalebutton_i addItemWithTitle: @"200%"]; + [scalebutton_i addItemWithTitle: @"300%"]; + [scalebutton_i selectItemAtIndex: 4]; - [scalemenu_i addItem: "12.5%"]; - [scalemenu_i addItem: "25%"]; - [scalemenu_i addItem: "50%"]; - [scalemenu_i addItem: "75%"]; - [scalemenu_i addItem: "100%"]; - [scalemenu_i addItem: "200%"]; - [scalemenu_i addItem: "300%"]; - [[scalemenu_i itemList] selectCellAt: 4 : 0]; + + gridbutton_i = [[NSPopUpButton alloc] init]; + [gridbutton_i setTarget: self]; + [gridbutton_i setAction: @selector(gridMenuTarget:)]; + + [gridbutton_i addItemWithTitle: @"grid 1"]; + [gridbutton_i addItemWithTitle: @"grid 2"]; + [gridbutton_i addItemWithTitle: @"grid 4"]; + [gridbutton_i addItemWithTitle: @"grid 8"]; + [gridbutton_i addItemWithTitle: @"grid 16"]; + [gridbutton_i addItemWithTitle: @"grid 32"]; + [gridbutton_i addItemWithTitle: @"grid 64"]; - scalebutton_i = NSCreatePopUpListButton(scalemenu_i); - - - gridmenu_i = [[PopUpList alloc] init]; - [gridmenu_i setTarget: self]; - [gridmenu_i setAction: @selector(gridMenuTarget:)]; - - [gridmenu_i addItem: "grid 1"]; - [gridmenu_i addItem: "grid 2"]; - [gridmenu_i addItem: "grid 4"]; - [gridmenu_i addItem: "grid 8"]; - [gridmenu_i addItem: "grid 16"]; - [gridmenu_i addItem: "grid 32"]; - [gridmenu_i addItem: "grid 64"]; + [gridbutton_i selectItemAtIndex: 4]; - [[gridmenu_i itemList] selectCellAt: 4 : 0]; - - gridbutton_i = NSCreatePopUpListButton(gridmenu_i); - // initialize the scroll view scrollview_i = [[PopScrollView alloc] - initWithFrame: frameRect - button1: scalebutton_i - button2: gridbutton_i + initWithFrame: frameRect + button1: scalebutton_i + button2: gridbutton_i ]; [scrollview_i setLineScroll: 64]; - [scrollview_i setAutosizing: NS_WIDTHSIZABLE | NS_HEIGHTSIZABLE]; + [scrollview_i setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; // link objects together - [[scrollview_i setDocView: self] free]; - + [scrollview_i setDocumentView: self]; + RELEASE (scrollview_i); return scrollview_i; } @@ -95,7 +97,7 @@ initWithFrame: - drawMode: sender { - drawmode = [sender selectedCol]; + drawmode = [sender selectedColumn]; [quakeed_i updateXY]; return self; } @@ -103,7 +105,7 @@ initWithFrame: - setDrawMode: (drawmode_t)mode { drawmode = mode; - [mode_radio_i selectCellAt:0: mode]; + [mode_radio_i selectCellAtRow:0 column: mode]; [quakeed_i updateXY]; return self; } @@ -115,9 +117,7 @@ initWithFrame: } /* -=================== -setOrigin:scale: -=================== + v */ - setOrigin: (NSPoint *)pt scale: (float)sc { @@ -129,38 +129,38 @@ setOrigin:scale: // scale = sc; - [superview getFrame: &sframe]; - [superview getFrame: &newbounds]; + sframe = [[self superview] frame]; + newbounds = [[self superview] frame]; newbounds.origin = *pt; newbounds.size.width /= scale; newbounds.size.height /= scale; + sframe.size.width /= scale; + sframe.size.height /= scale; // // union with the realbounds // - NSUnionRect (&realbounds, &newbounds); + newbounds = NSUnionRect (realbounds, newbounds); // // redisplay everything // - [quakeed_i disableDisplay]; + //XXX[quakeed_i disableDisplay]; // // size this view // - [self sizeTo: newbounds.size.width : newbounds.size.height]; - [self setDrawOrigin: newbounds.origin.x : newbounds.origin.y]; - [self moveTo: newbounds.origin.x : newbounds.origin.y]; + [self setBoundsSize: newbounds.size]; + [self setBoundsOrigin: newbounds.origin]; + //XXX[self moveTo: newbounds.origin.x : newbounds.origin.y]; // // scroll and scale the clip view // - [superview setDrawSize - : sframe.size.width/scale - : sframe.size.height/scale]; - [superview setDrawOrigin: pt->x : pt->y]; + [[self superview] setBoundsSize: sframe.size]; + [[self superview] setBoundsOrigin: *pt]; - [quakeed_i reenableDisplay]; + //XXX[quakeed_i reenableDisplay]; [scrollview_i display]; return self; @@ -171,7 +171,7 @@ setOrigin:scale: NSRect sbounds; NSPoint mid, delta; - [[xyview_i superview] getBounds: &sbounds]; + sbounds = [[xyview_i superview] bounds]; mid.x = sbounds.origin.x + sbounds.size.width/2; mid.y = sbounds.origin.y + sbounds.size.height/2; @@ -197,7 +197,7 @@ When superview is resized { NSRect r; - [superview getBounds: &r]; + r = [[self superview] bounds]; [self newRealBounds: &r]; return self; @@ -221,25 +221,25 @@ If realbounds has shrunk, nothing will change. // // calculate the area visible in the cliprect // - [superview getBounds: &sbounds]; - NSUnionRect (nb, &sbounds); + sbounds = [[self superview] bounds]; + sbounds = NSUnionRect (*nb, sbounds); // // size this view // - [quakeed_i disableDisplay]; + //XXX[quakeed_i disableDisplay]; - [self suspendNotifyAncestorWhenFrameChanged:YES]; - [self sizeTo: sbounds.size.width : sbounds.size.height]; - [self setDrawOrigin: sbounds.origin.x : sbounds.origin.y]; - [self moveTo: sbounds.origin.x : sbounds.origin.y]; - [self suspendNotifyAncestorWhenFrameChanged:NO]; + [self setPostsBoundsChangedNotifications:NO]; + [self setBoundsSize: sbounds.size]; + [self setBoundsOrigin: sbounds.origin]; + //XXX[self moveTo: sbounds.origin.x : sbounds.origin.y]; + [self setPostsBoundsChangedNotifications:YES]; - [scrollview_i reflectScroll: superview]; - [quakeed_i reenableDisplay]; + [scrollview_i reflectScrolledClipView: [scrollview_i contentView]]; + //XXX[quakeed_i reenableDisplay]; - [[scrollview_i horizScroller] display]; - [[scrollview_i vertScroller] display]; + [[scrollview_i horizontalScroller] display]; + [[scrollview_i verticalScroller] display]; return self; } @@ -259,7 +259,7 @@ Called when the scaler popup on the window is used NSRect visrect, sframe; float nscale; - item = [[sender selectedCell] title]; + item = [[[sender selectedCell] title] cString]; sscanf (item,"%f",&nscale); nscale /= 100; @@ -267,8 +267,8 @@ Called when the scaler popup on the window is used return NULL; // keep the center of the view constant - [superview getBounds: &visrect]; - [superview getFrame: &sframe]; + visrect = [[self superview] bounds]; + sframe = [[self superview] frame]; visrect.origin.x += visrect.size.width/2; visrect.origin.y += visrect.size.height/2; @@ -287,8 +287,8 @@ zoomIn */ - zoomIn: (NSPoint *)constant { - id itemlist; - int selected, numrows, numcollumns; + id itemlist, selectedItem; + int selected, numrows; NSRect visrect; NSPoint ofs, new; @@ -296,20 +296,20 @@ zoomIn // // set the popup // - itemlist = [scalemenu_i itemList]; - [itemlist getNumRows: &numrows numCols:&numcollumns]; - - selected = [itemlist selectedRow] + 1; + itemlist = [scalebutton_i itemArray]; + numrows = [itemlist count]; + + selectedItem = [scalebutton_i selectedItem]; + selected = [itemlist indexOfObject: selectedItem] + 1; if (selected >= numrows) return NULL; - [itemlist selectCellAt: selected : 0]; - [scalebutton_i setTitle: [[itemlist selectedCell] title]]; + [scalebutton_i selectItemAtIndex: selected]; // // zoom the view // - [superview getBounds: &visrect]; + visrect = [[self superview] bounds]; ofs.x = constant->x - visrect.origin.x; ofs.y = constant->y - visrect.origin.y; @@ -329,29 +329,28 @@ zoomOut */ - zoomOut: (NSPoint *)constant { - id itemlist; - int selected, numrows, numcollumns; + id itemlist, selectedItem; + int selected; NSRect visrect; NSPoint ofs, new; - + // // set the popup // - itemlist = [scalemenu_i itemList]; - [itemlist getNumRows: &numrows numCols:&numcollumns]; - - selected = [itemlist selectedRow] - 1; + itemlist = [scalebutton_i itemArray]; + + selectedItem = [scalebutton_i selectedItem]; + selected = [itemlist indexOfObject: selectedItem] - 1; if (selected < 0) return NULL; - [itemlist selectCellAt: selected : 0]; - [scalebutton_i setTitle: [[itemlist selectedCell] title]]; + [scalebutton_i selectItemAtIndex: selected]; // // zoom the view // - [superview getBounds: &visrect]; + visrect = [[self superview] bounds]; ofs.x = constant->x - visrect.origin.x; ofs.y = constant->y - visrect.origin.y; @@ -377,7 +376,7 @@ Called when the scaler popup on the window is used char const *item; int grid; - item = [[sender selectedCell] title]; + item = [[[sender selectedCell] title] cString]; sscanf (item,"grid %d",&grid); if (grid == gridsize) @@ -460,24 +459,23 @@ superviewChanged =============================================================================== */ -vec3_t cur_linecolor; +vec3_t cur_linecolor; +NSBezierPath *path; void linestart (float r, float g, float b) { - beginUserPath (upath,NO); - cur_linecolor[0] = r; - cur_linecolor[1] = g; - cur_linecolor[2] = b; + [path removeAllPoints]; + VectorSet (r, g, b, cur_linecolor); } void lineflush (void) { - if (!upath->numberOfPoints) + if ([path isEmpty]) return; - endUserPath (upath, dps_ustroke); + //endUserPath (upath, dps_ustroke); PSsetrgbcolor (cur_linecolor[0], cur_linecolor[1], cur_linecolor[2]); - sendUserPath (upath); - beginUserPath (upath,NO); + [path stroke]; + [path removeAllPoints]; } void linecolor (float r, float g, float b) @@ -485,21 +483,21 @@ void linecolor (float r, float g, float b) if (cur_linecolor[0] == r && cur_linecolor[1] == g && cur_linecolor[2] == b) return; // do nothing lineflush (); - cur_linecolor[0] = r; - cur_linecolor[1] = g; - cur_linecolor[2] = b; + VectorSet (r, g, b, cur_linecolor); } void XYmoveto (vec3_t pt) { - if (upath->numberOfPoints > 2048) + NSPoint point = {pt[0], pt[1]}; + if ([path elementCount] > 2048) lineflush (); - UPmoveto (upath, pt[0], pt[1]); + [path moveToPoint: point]; } void XYlineto (vec3_t pt) { - UPlineto (upath, pt[0], pt[1]); + NSPoint point = {pt[0], pt[1]}; + [path lineToPoint: point]; } /* @@ -513,19 +511,20 @@ Rect is in global world (unscaled) coordinates ============ */ -- drawGrid: (const NSRect *)rect +- drawGrid: (NSRect)rect { int x,y, stopx, stopy; float top,bottom,right,left; char text[10]; BOOL showcoords; + NSPoint point; showcoords = [quakeed_i showCoordinates]; - left = rect->origin.x-1; - bottom = rect->origin.y-1; - right = rect->origin.x+rect->size.width+2; - top = rect->origin.y+rect->size.height+2; + left = rect.origin.x-1; + bottom = rect.origin.y-1; + right = rect.origin.x+rect.size.width+2; + top = rect.origin.y+rect.size.height+2; PSsetlinewidth (0.15); @@ -555,24 +554,30 @@ Rect is in global world (unscaled) coordinates if (stopy >= top) stopy -= gridsize; - beginUserPath (upath,NO); + [path removeAllPoints]; for ( ; y<=stopy ; y+= gridsize) if (y&63) { - UPmoveto (upath, left, y); - UPlineto (upath, right, y); + point.x = left; + point.y = y; + [path moveToPoint: point]; + point.x = right; + [path lineToPoint: point]; } for ( ; x<=stopx ; x+= gridsize) if (x&63) { - UPmoveto (upath, x, top); - UPlineto (upath, x, bottom); + point.x = x; + point.y = top; + [path moveToPoint: point]; + point.y = bottom; + [path lineToPoint: point]; } - endUserPath (upath, dps_ustroke); + //endUserPath (upath, dps_ustroke); PSsetrgbcolor (0.8,0.8,1.0); // thin grid color - sendUserPath (upath); + [path stroke]; } @@ -601,18 +606,19 @@ PSsetrgbcolor (0.8,0.8,1.0); // thin grid color if (stopy >= top) stopy -= 64; - beginUserPath (upath,NO); + [path removeAllPoints]; for ( ; y<=stopy ; y+= 64) { if (showcoords) { sprintf (text, "%i",y); - PSmoveto(left,y); - PSshow(text); + PSmoveto (left, y); + PSshow (text); } - UPmoveto (upath, left, y); - UPlineto (upath, right, y); + [path moveToPoint: point]; + point.x = right; + [path lineToPoint: point]; } for ( ; x<=stopx ; x+= 64) @@ -620,16 +626,19 @@ PSsetrgbcolor (0.8,0.8,1.0); // thin grid color if (showcoords) { sprintf (text, "%i",x); - PSmoveto(x,bottom+2); - PSshow(text); + PSmoveto (x, bottom + 2); + PSshow (text); } - UPmoveto (upath, x, top); - UPlineto (upath, x, bottom); + point.x = x; + point.y = top; + [path moveToPoint: point]; + point.y = bottom; + [path lineToPoint: point]; } - endUserPath (upath, dps_ustroke); + //endUserPath (upath, dps_ustroke); PSsetgray (12.0/16); - sendUserPath (upath); + [path stroke]; } return self; @@ -640,7 +649,7 @@ PSsetrgbcolor (0.8,0.8,1.0); // thin grid color drawWire ================== */ -- drawWire: (const NSRect *)rects +- drawWire: (NSRect)rects { NSRect visRect; int i,j, c, c2; @@ -652,9 +661,9 @@ drawWire if ([quakeed_i showCoordinates]) // if coords are showing, update everything { - [self getVisibleRect:&visRect]; - rects = &visRect; - xy_draw_rect = *rects; + visRect = [self visibleRect]; + rects = visRect; + xy_draw_rect = rects; } @@ -672,11 +681,11 @@ drawWire c = [map_i count]; for (i=0 ; i=0 ; j--) { - brush = [ent objectAt: j]; + brush = [ent objectAtIndex: j]; if ( [brush selected] ) continue; if ([brush regioned]) @@ -685,7 +694,7 @@ drawWire } if (i > 0 && drawnames) { // draw entity names - brush = [ent objectAt: 0]; + brush = [ent objectAtIndex: 0]; if (![brush regioned]) { [brush getMins: mins maxs: maxs]; @@ -703,7 +712,7 @@ drawWire newrect.origin.y -= gridsize; newrect.size.width += 2*gridsize; newrect.size.height += 2*gridsize; - if (!NSEqualRect (&newrect, &realbounds)) + if (!NSEqualRects (newrect, realbounds)) [self newRealBounds: &newrect]; return self; @@ -717,10 +726,10 @@ drawSolid */ - drawSolid { - unsigned char *planes[5]; + const unsigned char *planes[5]; NSRect visRect; - [self getVisibleRect:&visRect]; + visRect = [self visibleRect]; // // draw the image into imagebuffer @@ -762,11 +771,11 @@ drawSolid // display the output // [self lockFocus]; - [[self window] setBackingType:NS_RETAINED]; + [[self window] setBackingType:NSBackingStoreRetained]; planes[0] = (unsigned char *)r_picbuffer; NSDrawBitmap( - &visRect, + visRect, r_width, r_height, 8, @@ -775,12 +784,12 @@ drawSolid r_width*4, NO, NO, - NS_RGBColorSpace, + NSCalibratedRGBColorSpace, planes ); - NSPing (); - [[self window] setBackingType:NS_BUFFERED]; + //NSPing (); + [[self window] setBackingType:NSBackingStoreBuffered]; [self unlockFocus]; return self; @@ -792,19 +801,20 @@ drawSelf =================== */ NSRect xy_draw_rect; -- drawSelf:(const NSRect *)rects :(int)rectCount +- drawSelf:(NSRect)rects :(int)rectCount { static float drawtime; // static to shut up compiler warning if (timedrawing) drawtime = I_FloatTime (); - xy_draw_rect = *rects; + xy_draw_rect = rects; newrect.origin.x = newrect.origin.y = 99999; newrect.size.width = newrect.size.height = -2*99999; // setup for text - PSselectfont("Helvetica-Medium",10/scale); + //PSselectfont("Helvetica-Medium",10/scale); + GSSetFont (DEFCTXT, [NSFont fontWithName:@"Helvetica-Medium" size: 10/scale]); PSrotate(0); if (drawmode == dr_texture || drawmode == dr_flat) @@ -814,7 +824,7 @@ NSRect xy_draw_rect; if (timedrawing) { - NSPing (); + //NSPing (); drawtime = I_FloatTime() - drawtime; printf ("CameraView drawtime: %5.3f\n", drawtime); } @@ -846,8 +856,8 @@ static NSPoint oldreletive; NSPoint startpt, newpt; NSPoint reletive, delta; - startpt = startevent->location; - [self convertPoint:&startpt fromView:NULL]; + startpt = [startevent locationInWindow]; + startpt = [self convertPoint:startpt fromView:NULL]; oldreletive.x = oldreletive.y = 0; @@ -859,19 +869,25 @@ static NSPoint oldreletive; while (1) { - event = [NSApp getNextEvent: NS_LMOUSEUPMASK | NS_LMOUSEDRAGGEDMASK - | NS_RMOUSEUPMASK | NS_RMOUSEDRAGGEDMASK | NS_APPDEFINEDMASK]; + unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask + | NSRightMouseUpMask | NSRightMouseDraggedMask + | NSApplicationDefinedMask; + event = [NSApp nextEventMatchingMask: eventMask + untilDate: [NSDate distantFuture] + inMode: NSEventTrackingRunLoopMode + dequeue: YES]; - if (event->type == NS_LMOUSEUP || event->type == NS_RMOUSEUP) + + if ([event type] == NSLeftMouseUp || [event type] == NSRightMouseUp) break; - if (event->type == NS_APPDEFINED) + if ([event type] == NSApplicationDefined) { // doesn't work. grrr. - [quakeed_i applicationDefined:event]; + //[quakeed_i applicationDefined:event]; continue; } - newpt = event->location; - [self convertPoint:&newpt fromView:NULL]; + newpt = [event locationInWindow]; + newpt = [self convertPoint:newpt fromView:NULL]; if (ug) { @@ -929,8 +945,8 @@ void ScrollCallback (float dx, float dy) NSPoint neworg; float scale; - [ [xyview_i superview] getBounds: &basebounds]; - [xyview_i convertRectFromSuperview: &basebounds]; + basebounds = [[xyview_i superview] bounds]; + [xyview_i convertRect: basebounds fromView: [xyview_i superview]]; neworg.x = basebounds.origin.x - dx; neworg.y = basebounds.origin.y - dy; @@ -983,8 +999,8 @@ void DirectionCallback (float dx, float dy) qprintf ("changing camera direction"); - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; direction[0] = pt.x; direction[1] = pt.y; @@ -1038,8 +1054,8 @@ void NewCallback (float dx, float dy) qprintf ("sizing new brush"); - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; neworg[0] = [self snapToGrid: pt.x]; neworg[1] = [self snapToGrid: pt.y]; @@ -1095,8 +1111,8 @@ void ControlCallback (float dx, float dy) if ([map_i numSelected] != 1) return NO; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; dragpoint[0] = pt.x; dragpoint[1] = pt.y; @@ -1108,8 +1124,8 @@ void ControlCallback (float dx, float dy) qprintf ("dragging brush plane"); - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; [self dragFrom: theEvent useGrid: YES @@ -1136,8 +1152,8 @@ void ControlCallback (float dx, float dy) return NO; br = [map_i selectedBrush]; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; // if the XY point is inside the brush, make the point on top p1[0] = pt.x; @@ -1167,8 +1183,8 @@ void ControlCallback (float dx, float dy) qprintf ("dragging brush plane"); - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; [self dragFrom: theEvent useGrid: YES @@ -1203,20 +1219,20 @@ mouseDown vec3_t p1, p2; int flags; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; p1[0] = p2[0] = pt.x; p1[1] = p2[1] = pt.y; p1[2] = xy_viewnormal[2] * -4096; p2[2] = xy_viewnormal[2] * 4096; - flags = theEvent->flags & (NS_SHIFTMASK | NS_CONTROLMASK | NS_ALTERNATEMASK | NS_COMMANDMASK); + flags = [theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); // // shift click to select / deselect a brush from the world // - if (flags == NS_SHIFTMASK) + if (flags == NSShiftKeyMask) { [map_i selectRay: p1 : p2 : YES]; return self; @@ -1225,7 +1241,7 @@ mouseDown // // cmd-shift click to set a target/targetname entity connection // - if (flags == (NS_SHIFTMASK|NS_COMMANDMASK) ) + if (flags == (NSShiftKeyMask|NSCommandKeyMask) ) { [map_i entityConnect: p1 : p2]; return self; @@ -1237,7 +1253,7 @@ mouseDown if ( flags == 0 ) { // if double click, position Z checker - if (theEvent->data.mouse.click > 1) + if ([theEvent clickCount] > 1) { qprintf ("positioned Z checker"); [zview_i setPoint: &pt]; @@ -1247,7 +1263,7 @@ mouseDown } // check eye - if ( [cameraview_i XYmouseDown: &pt flags: theEvent->flags] ) + if ( [cameraview_i XYmouseDown: &pt flags: [theEvent modifierFlags]] ) return self; // camera move // check z post @@ -1279,12 +1295,12 @@ mouseDown // // control click = position and drag camera // - if (flags == NS_CONTROLMASK) + if (flags == NSControlKeyMask) { [cameraview_i setXYOrigin: &pt]; [quakeed_i newinstance]; [cameraview_i display]; - [cameraview_i XYmouseDown: &pt flags: theEvent->flags]; + [cameraview_i XYmouseDown: &pt flags: [theEvent modifierFlags]]; qprintf (""); return self; } @@ -1292,7 +1308,7 @@ mouseDown // // command click = drag Z checker // - if (flags == NS_COMMANDMASK) + if (flags == NSCommandKeyMask) { // check single plane dragging [self shearDragFrom: theEvent]; @@ -1309,7 +1325,7 @@ return self; // // alt click = set entire brush texture // - if (flags == NS_ALTERNATEMASK) + if (flags == NSAlternateKeyMask) { if (drawmode != dr_texture) { @@ -1325,7 +1341,7 @@ return self; // // ctrl-alt click = set single face texture // - if (flags == (NS_CONTROLMASK | NS_ALTERNATEMASK) ) + if (flags == (NSControlKeyMask | NSAlternateKeyMask) ) { if (drawmode != dr_texture) { @@ -1353,22 +1369,22 @@ rightMouseDown NSPoint pt; int flags; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; - flags = theEvent->flags & (NS_SHIFTMASK | NS_CONTROLMASK | NS_ALTERNATEMASK | NS_COMMANDMASK); + flags = [theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); - if (flags == NS_COMMANDMASK) + if (flags == NSCommandKeyMask) { return [self scrollDragFrom: theEvent]; } - if (flags == NS_ALTERNATEMASK) + if (flags == NSAlternateKeyMask) { return [clipper_i XYClick: pt]; } - if (flags == 0 || flags == NS_CONTROLMASK) + if (flags == 0 || flags == NSControlKeyMask) { return [self directionDragFrom: theEvent]; } diff --git a/tools/Forge/Bundles/MapEdit/ZScrollView.h b/tools/Forge/Bundles/MapEdit/ZScrollView.h index ab625ed31..5b7793a5b 100644 --- a/tools/Forge/Bundles/MapEdit/ZScrollView.h +++ b/tools/Forge/Bundles/MapEdit/ZScrollView.h @@ -8,7 +8,7 @@ id button1; } -- initFrame:(NSRect)frameRect button1: b1; +- initWithFrame:(NSRect)frameRect button1: b1; - tile; @end diff --git a/tools/Forge/Bundles/MapEdit/ZScrollView.m b/tools/Forge/Bundles/MapEdit/ZScrollView.m index 97e200896..412aeead5 100644 --- a/tools/Forge/Bundles/MapEdit/ZScrollView.m +++ b/tools/Forge/Bundles/MapEdit/ZScrollView.m @@ -1,4 +1,4 @@ -#include "qedefs.h" +#include "ZScrollView.h" @implementation ZScrollView @@ -10,7 +10,7 @@ Initizes a scroll view with a button at it's lower right corner ==================== */ -- initWithFrame:(const NSRect *)frameRect button1:b1 +- initWithFrame:(NSRect)frameRect button1:b1 { [super initWithFrame: frameRect]; @@ -18,10 +18,10 @@ Initizes a scroll view with a button at it's lower right corner button1 = b1; - [self setHorizScrollerRequired: YES]; - [self setVertScrollerRequired: YES]; + [self setHasHorizontalScroller: YES]; + [self setHasVerticalScroller: YES]; - [self setBorderType: NS_BEZEL]; + [self setBorderType: NSBezelBorder]; return self; } @@ -40,11 +40,11 @@ Adjust the size for the pop up scale menu NSRect scrollerframe; [super tile]; - [_horizScroller getFrame: &scrollerframe]; - [button1 setFrame: &scrollerframe]; + scrollerframe = [_horizScroller frame]; + [button1 setFrame: scrollerframe]; scrollerframe.size.width = 0; - [_horizScroller setFrame: &scrollerframe]; + [_horizScroller setFrame: scrollerframe]; return self; } @@ -55,16 +55,16 @@ Adjust the size for the pop up scale menu { return YES; } - +/* - superviewSizeChanged:(const NSSize *)oldSize { [super superviewSizeChanged: oldSize]; - [[self docView] newSuperBounds]; + [[self documentView] newSuperBounds]; return self; } - +*/ @end diff --git a/tools/Forge/Bundles/MapEdit/ZView.h b/tools/Forge/Bundles/MapEdit/ZView.h index 572a91251..bdb3d5567 100644 --- a/tools/Forge/Bundles/MapEdit/ZView.h +++ b/tools/Forge/Bundles/MapEdit/ZView.h @@ -2,7 +2,10 @@ #define ZView_h #include -#include "mathlib.h" + +#include "QF/mathlib.h" + +#include "render.h" extern id zview_i; diff --git a/tools/Forge/Bundles/MapEdit/ZView.m b/tools/Forge/Bundles/MapEdit/ZView.m index 226df722e..f71b7d71f 100644 --- a/tools/Forge/Bundles/MapEdit/ZView.m +++ b/tools/Forge/Bundles/MapEdit/ZView.m @@ -1,5 +1,10 @@ -#include "qedefs.h" +#include "ZView.h" +#include "ZScrollView.h" +#include "QuakeEd.h" +#include "Map.h" +#include "XYView.h" +#include "CameraView.h" id zview_i; @@ -8,6 +13,8 @@ id zscrollview_i, zscalemenu_i, zscalebutton_i; float zplane; float zplanedir; +extern NSBezierPath *path; + @implementation ZView /* @@ -48,7 +55,7 @@ initWithFrame: // initialize the scroll view zscrollview_i = [[ZScrollView alloc] - initFrame: frameRect + initWithFrame: frameRect button1: zscalebutton_i ]; [zscrollview_i setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; @@ -335,18 +342,18 @@ Rect is in global world (unscaled) coordinates if (y= top) stopy -= 32; - beginUserPath (upath,NO); + [path removeAllPoints]; for ( ; y<=stopy ; y+= 64) { - UPmoveto (upath, left, y); - UPlineto (upath, right, y); + [path moveToPoint: NSMakePoint (left, y)]; + [path lineToPoint: NSMakePoint (right, y)]; } - endUserPath (upath, dps_ustroke); + //endUserPath (upath, dps_ustroke); PSsetgray (12.0/16.0); - sendUserPath (upath); + [path stroke]; // // tiles @@ -387,9 +394,9 @@ Rect is in global world (unscaled) coordinates if (stopy >= top) stopy -= 64; - beginUserPath (upath,NO); + [path removeAllPoints]; PSsetgray (0); // for text - PSselectfont("Helvetica-Medium",10/scale); + GSSetFont (DEFCTXT, [NSFont fontWithName:@"Helvetica-Medium" size: 10/scale]); PSrotate(0); for ( ; y<=stopy ; y+= 64) @@ -400,17 +407,17 @@ Rect is in global world (unscaled) coordinates PSmoveto(left,y); PSshow(text); } - UPmoveto (upath, left+24, y); - UPlineto (upath, right, y); + [path moveToPoint: NSMakePoint (left + 24, y)]; + [path lineToPoint: NSMakePoint (right, y)]; } // divider - UPmoveto (upath, 0, _bounds.origin.y); - UPlineto (upath, 0, _bounds.origin.y + _bounds.size.height); + [path moveToPoint: NSMakePoint (0, _bounds.origin.y)]; + [path lineToPoint: NSMakePoint (0, _bounds.origin.y + _bounds.size.height)]; - endUserPath (upath, dps_ustroke); + //endUserPath (upath, dps_ustroke); PSsetgray (10.0/16.0); - sendUserPath (upath); + [path stroke]; // // origin @@ -448,11 +455,11 @@ drawSelf maxheight = -999999; // allways draw the entire bar - [self getVisibleRect:&visRect]; + visRect = [self visibleRect]; rects = &visRect; // erase window - NSEraseRect (&rects[0]); + NSEraseRect (rects[0]); // draw grid [self drawGrid: &rects[0]]; @@ -534,21 +541,27 @@ static NSPoint oldreletive; gridsize = [xyview_i gridsize]; - startpt = startevent->location; - [self convertPoint:&startpt fromView:NULL]; + startpt = [startevent locationInWindow]; + startpt = [self convertPoint:startpt fromView:NULL]; oldreletive.x = oldreletive.y = 0; + reletive.x = 0; while (1) { - event = [NSApp getNextEvent: - NSLeftMouseUpMask | NSLeftMouseDraggedMask - | NSRightMouseUpMask | NSRightMouseDraggedMask]; - if (event->type == NSLeftMouseUp || event->type == NSRightMouseUp) + unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask + | NSRightMouseUpMask | NSRightMouseDraggedMask + | NSApplicationDefinedMask; + event = [NSApp nextEventMatchingMask: eventMask + untilDate: [NSDate distantFuture] + inMode: NSEventTrackingRunLoopMode + dequeue: YES]; + + if ([event type] == NSLeftMouseUp || [event type] == NSRightMouseUp) break; - newpt = event->location; - [self convertPoint:&newpt fromView:NULL]; + newpt = [event locationInWindow]; + newpt = [self convertPoint:newpt fromView:NULL]; reletive.y = newpt.y - startpt.y; @@ -602,8 +615,8 @@ void ZScrollCallback (float dy) NSPoint neworg; float scale; - [ [zview_i _super_view] getBounds: &basebounds]; - [zview_i convertRectFromSuperview: &basebounds]; + basebounds = [[zview_i superview] bounds]; + basebounds = [zview_i convertRect: basebounds fromView: [zview_i superview]]; neworg.y = basebounds.origin.y - dy; @@ -644,8 +657,8 @@ void ZControlCallback (float dy) if ([map_i numSelected] != 1) return NO; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; dragpoint[0] = origin[0]; dragpoint[1] = origin[1]; @@ -657,8 +670,8 @@ void ZControlCallback (float dy) qprintf ("dragging brush plane"); - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; [self dragFrom: theEvent useGrid: YES @@ -685,14 +698,14 @@ mouseDown int flags; vec3_t p1; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; p1[0] = origin[0]; p1[1] = origin[1]; p1[2] = pt.y; - flags = theEvent->flags & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); + flags = [theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); // // shift click to select / deselect a brush from the world @@ -719,7 +732,7 @@ mouseDown { [cameraview_i setZOrigin: pt.y]; [quakeed_i updateAll]; - [cameraview_i ZmouseDown: &pt flags:theEvent->flags]; + [cameraview_i ZmouseDown: &pt flags:[theEvent modifierFlags]]; return; } @@ -729,7 +742,7 @@ mouseDown if ( flags == 0 ) { // check eye - if ( [cameraview_i ZmouseDown: &pt flags:theEvent->flags] ) + if ( [cameraview_i ZmouseDown: &pt flags:[theEvent modifierFlags]] ) return; if ([map_i numSelected]) @@ -760,10 +773,10 @@ rightMouseDown NSPoint pt; int flags; - pt= theEvent->location; - [self convertPoint:&pt fromView:NULL]; + pt= [theEvent locationInWindow]; + pt = [self convertPoint:pt fromView:NULL]; - flags = theEvent->flags & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); + flags = [theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask); // @@ -808,13 +821,13 @@ modalMoveLoop // goto drawentry; - while (event->type != NSLeftMouseUp) + while ([event type] != NSLeftMouseUp) { // // calculate new point // - newpt = event->location; - [converter convertPoint:&newpt fromView:NULL]; + newpt = [event locationInWindow]; + newpt = [converter convertPoint:newpt fromView:NULL]; delta[0] = newpt.x-basept->x; delta[1] = newpt.y-basept->y; @@ -830,10 +843,12 @@ drawentry: // [quakeed_i newinstance]; [self display]; - NSPing (); - event = [NSApp getNextEvent: - NSLeftMouseUpMask | NSLeftMouseDraggedMask]; + unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask; + event = [NSApp nextEventMatchingMask: eventMask + untilDate: [NSDate distantFuture] + inMode: NSEventTrackingRunLoopMode + dequeue: YES]; } // diff --git a/tools/Forge/Bundles/MapEdit/misc.m b/tools/Forge/Bundles/MapEdit/misc.m index fedb865b5..63dc9ddee 100644 --- a/tools/Forge/Bundles/MapEdit/misc.m +++ b/tools/Forge/Bundles/MapEdit/misc.m @@ -1,5 +1,4 @@ -#include "qedefs.h" char token[MAXTOKEN]; diff --git a/tools/Forge/Bundles/MapEdit/render.h b/tools/Forge/Bundles/MapEdit/render.h index 98041f0cc..a8ae10284 100644 --- a/tools/Forge/Bundles/MapEdit/render.h +++ b/tools/Forge/Bundles/MapEdit/render.h @@ -1,6 +1,10 @@ #ifndef render_h #define render_h +#include "SetBrush.h" + +typedef enum {dr_wire, dr_flat, dr_texture} drawmode_t; + extern int r_width, r_height; extern unsigned *r_picbuffer; extern float *r_zbuffer; diff --git a/tools/Forge/Bundles/MapEdit/render.m b/tools/Forge/Bundles/MapEdit/render.m index f6408b9dd..5e4c3289b 100644 --- a/tools/Forge/Bundles/MapEdit/render.m +++ b/tools/Forge/Bundles/MapEdit/render.m @@ -1,6 +1,7 @@ -#include "qedefs.h" +#include "render.h" +extern vec3_t xy_viewnormal; //define NOLIGHT @@ -511,7 +512,7 @@ REN_BeginCamera =================== */ float r_width_2, r_height_3; -plane_t frustum[5]; +plane_t rfrustum[5]; void REN_BeginCamera (void) { @@ -520,58 +521,58 @@ void REN_BeginCamera (void) // clip to right side - frustum[0].normal[0] = -1; - frustum[0].normal[1] = 0; - frustum[0].normal[2] = 1; - frustum[0].dist = 0; + rfrustum[0].normal[0] = -1; + rfrustum[0].normal[1] = 0; + rfrustum[0].normal[2] = 1; + rfrustum[0].dist = 0; // clip to left side - frustum[1].normal[0] = 1; - frustum[1].normal[1] = 0; - frustum[1].normal[2] = 1; - frustum[1].dist = 0; + rfrustum[1].normal[0] = 1; + rfrustum[1].normal[1] = 0; + rfrustum[1].normal[2] = 1; + rfrustum[1].dist = 0; // clip to top side - frustum[2].normal[0] = 0; - frustum[2].normal[1] = -1; - frustum[2].normal[2] = r_height_3 / r_width_2; - frustum[2].dist = 0; + rfrustum[2].normal[0] = 0; + rfrustum[2].normal[1] = -1; + rfrustum[2].normal[2] = r_height_3 / r_width_2; + rfrustum[2].dist = 0; // clip to bottom side - frustum[3].normal[0] = 0; - frustum[3].normal[1] = 1; - frustum[3].normal[2] = 2*r_height_3 / r_width_2; - frustum[3].dist = 0; + rfrustum[3].normal[0] = 0; + rfrustum[3].normal[1] = 1; + rfrustum[3].normal[2] = 2*r_height_3 / r_width_2; + rfrustum[3].dist = 0; // near Z - frustum[4].normal[0] = 0; - frustum[4].normal[1] = 0; - frustum[4].normal[2] = 1; - frustum[4].dist = 1; + rfrustum[4].normal[0] = 0; + rfrustum[4].normal[1] = 0; + rfrustum[4].normal[2] = 1; + rfrustum[4].dist = 1; } void REN_BeginXY (void) { - frustum[0].normal[0] = 1; - frustum[0].normal[1] = 0; - frustum[0].normal[2] = 0; - frustum[0].dist = 0; + rfrustum[0].normal[0] = 1; + rfrustum[0].normal[1] = 0; + rfrustum[0].normal[2] = 0; + rfrustum[0].dist = 0; - frustum[1].normal[0] = -1; - frustum[1].normal[1] = 0; - frustum[1].normal[2] = 0; - frustum[1].dist = -r_width; + rfrustum[1].normal[0] = -1; + rfrustum[1].normal[1] = 0; + rfrustum[1].normal[2] = 0; + rfrustum[1].dist = -r_width; - frustum[2].normal[0] = 0; - frustum[2].normal[1] = 1; - frustum[2].normal[2] = 0; - frustum[2].dist = 0; + rfrustum[2].normal[0] = 0; + rfrustum[2].normal[1] = 1; + rfrustum[2].normal[2] = 0; + rfrustum[2].dist = 0; - frustum[3].normal[0] = 0; - frustum[3].normal[1] = -1; - frustum[3].normal[2] = 0; - frustum[3].dist = -r_height; + rfrustum[3].normal[0] = 0; + rfrustum[3].normal[1] = -1; + rfrustum[3].normal[2] = 0; + rfrustum[3].dist = -r_height; } /* @@ -623,7 +624,7 @@ void REN_DrawCameraFace (face_t *idpol) // for (i=0 ; i<4 ; i++) { - w = ClipWinding (w, &frustum[i]); + w = ClipWinding (w, &rfrustum[i]); if (!w) return; } @@ -698,7 +699,7 @@ void REN_DrawXYFace (face_t *idpol) // for (i=0 ; i<4 ; i++) { - w = ClipWinding (w, &frustum[i]); + w = ClipWinding (w, &rfrustum[i]); if (!w) return; }