tactical whitespace bomb

Add return-type information to all methods, split up lines properly where
I could find them, and ran the whole thing through uncrustify. Looks purty
now. :)
This commit is contained in:
Jeff Teunissen 2010-09-29 16:09:11 -04:00 committed by Bill Currie
parent a4eec40843
commit 0e5cd14829
47 changed files with 3544 additions and 3602 deletions

View file

@ -9,68 +9,68 @@
#include "render.h"
extern id cameraview_i;
extern id cameraview_i;
extern byte renderlist[1024 * 1024 * 4];
extern byte renderlist[1024 * 1024 * 4];
void CameraMoveto (vec3_t p);
void CameraLineto (vec3_t p);
extern BOOL timedrawing;
extern BOOL timedrawing;
@interface CameraView:NSView
@interface CameraView: NSView
{
float xa, ya, za;
float move;
float xa, ya, za;
float move;
float *zbuffer;
unsigned *imagebuffer;
float *zbuffer;
unsigned *imagebuffer;
BOOL angleChange; // JR 6.8.95
BOOL angleChange; // JR 6.8.95
vec3_t origin;
vec3_t matrix[3];
vec3_t origin;
vec3_t matrix[3];
NSPoint dragspot;
NSPoint dragspot;
drawmode_t drawmode;
NSBezierPath *xycamera;
NSBezierPath *xycamera_aim;
NSBezierPath *zcamera;
NSBezierPath *xycamera;
NSBezierPath *xycamera_aim;
NSBezierPath *zcamera;
// UI links
id mode_radio_i;
id mode_radio_i;
}
-setXYOrigin:(NSPoint *) pt;
-setZOrigin:(float) pt;
- (id) setXYOrigin: (NSPoint *)pt;
- (id) setZOrigin: (float)pt;
-setOrigin:(vec3_t)
org
angle:(float)angle;
- (id) setOrigin: (vec3_t)org
angle: (float)angle;
-getOrigin:(vec3_t)org;
- (id) getOrigin: (vec3_t)org;
-(float) yawAngle;
- (float) yawAngle;
-matrixFromAngles;
-_keyDown:(NSEvent *)theEvent;
- (id) matrixFromAngles;
- (id) _keyDown: (NSEvent *)theEvent;
-drawMode:sender;
-setDrawMode:(drawmode_t) mode;
- (id) drawMode: sender;
- (id) setDrawMode: (drawmode_t)mode;
-homeView:sender;
- (id) homeView: sender;
- (void) XYDrawSelf; // for drawing viewpoint in XY view
- (void) ZDrawSelf; // for drawing viewpoint in XY view
-(BOOL) XYmouseDown:(NSPoint *)pt flags:(int)flags;// return YES if brush handled
- (BOOL) XYmouseDown: (NSPoint *)pt // return YES if brush handled
flags: (int)flags;
-(BOOL) ZmouseDown:(NSPoint *)pt flags:(int)flags;// return YES if brush handled
- (BOOL) ZmouseDown: (NSPoint *)pt // return YES if brush handled
flags: (int)flags;
-upFloor:sender;
-downFloor:sender;
- (id) upFloor: sender;
- (id) downFloor: sender;
@end
#endif // CameraView_h

View file

@ -1,15 +1,16 @@
#include "QF/sys.h"
#import <AppKit/NSEvent.h>
#include "CameraView.h"
#include "Map.h"
#include "QuakeEd.h"
#include "XYView.h"
#include "ZView.h"
id cameraview_i;
extern NSBezierPath *path;
id cameraview_i;
extern NSBezierPath *path;
BOOL timedrawing = 0;
BOOL timedrawing = 0;
@implementation CameraView
/*
@ -17,9 +18,9 @@ BOOL timedrawing = 0;
initWithFrame:
==================
*/
- initWithFrame:(NSRect)frameRect
- (id) initWithFrame: (NSRect)frameRect
{
int size;
int size;
[super initWithFrame: frameRect];
@ -42,9 +43,9 @@ initWithFrame:
return self;
}
-(void)awakeFromNib
- (void) awakeFromNib
{
NSBezierPath *path;
NSBezierPath *path;
path = zcamera = [NSBezierPath new];
[path setLineWidth: 0.3];
@ -77,20 +78,21 @@ initWithFrame:
[path relativeLineToPoint: NSMakePoint (45, -45)];
}
-setXYOrigin:(NSPoint *)pt
- (id) setXYOrigin: (NSPoint *)pt
{
origin[0] = pt->x;
origin[1] = pt->y;
return self;
}
-setZOrigin:(float)pt
- (id) setZOrigin: (float)pt
{
origin[2] = pt;
return self;
}
-setOrigin:(vec3_t)org angle:(float)angle
- (id) setOrigin: (vec3_t)org
angle: (float)angle
{
VectorCopy (org, origin);
ya = angle;
@ -98,18 +100,18 @@ initWithFrame:
return self;
}
-getOrigin:(vec3_t)org
- (id) getOrigin: (vec3_t)org
{
VectorCopy (origin, org);
return self;
}
-(float)yawAngle
- (float) yawAngle
{
return ya;
}
-upFloor:sender
- (id) upFloor: sender
{
sb_floor_dir = 1;
sb_floor_dist = 99999;
@ -124,7 +126,7 @@ initWithFrame:
return self;
}
-downFloor:sender
- (id) downFloor: sender
{
sb_floor_dir = -1;
sb_floor_dist = -99999;
@ -152,7 +154,7 @@ UI TARGETS
homeView
============
*/
-homeView:sender
- (id) homeView: sender
{
xa = za = 0;
@ -165,14 +167,14 @@ homeView
return self;
}
-drawMode:sender
- (id) drawMode: sender
{
drawmode =[sender selectedColumn];
drawmode = [sender selectedColumn];
[quakeed_i updateCamera];
return self;
}
-setDrawMode:(drawmode_t)mode
- (id) setDrawMode: (drawmode_t)mode
{
drawmode = mode;
[mode_radio_i selectCellAtRow: 0 column: mode];
@ -188,39 +190,40 @@ TRANSFORMATION METHODS
===============================================================================
*/
-matrixFromAngles
- (id) matrixFromAngles
{
if (xa > M_PI * 0.4)
xa = M_PI * 0.4;
if (xa < -M_PI * 0.4)
xa = -M_PI * 0.4;
// vpn
// vpn
matrix[2][0] = cos (xa) * cos (ya);
matrix[2][1] = cos (xa) * sin (ya);
matrix[2][2] = sin (xa);
// vup
// vup
matrix[1][0] = cos (xa + M_PI / 2) * cos (ya);
matrix[1][1] = cos (xa + M_PI / 2) * sin (ya);
matrix[1][2] = sin (xa + M_PI / 2);
// vright
// vright
CrossProduct (matrix[2], matrix[1], matrix[0]);
return self;
}
-inverseTransform:(vec_t *)invec to:(vec_t *)outvec
- (id) inverseTransform: (vec_t *)invec
to: (vec_t *)outvec
{
vec3_t inverse[3];
vec3_t temp;
int i, j;
vec3_t inverse[3];
vec3_t temp;
int i, j;
for (i = 0; i < 3; i++)
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
inverse[i][j] = matrix[j][i];
}
temp[0] = DotProduct (invec, inverse[0]);
temp[1] = DotProduct (invec, inverse[1]);
@ -231,44 +234,42 @@ TRANSFORMATION METHODS
return self;
}
/*
===============================================================================
DRAWING METHODS
DRAWING METHODS
===============================================================================
*/
typedef struct {
vec3_t trans;
int clipflags;
vec3_t screen; // valid only if clipflags == 0
typedef struct {
vec3_t trans;
int clipflags;
vec3_t screen; // valid only if clipflags == 0
} campt_t;
#define CLIP_RIGHT 1
#define CLIP_LEFT 2
#define CLIP_TOP 4
#define CLIP_BOTTOM 8
#define CLIP_FRONT 16
#define CLIP_RIGHT 1
#define CLIP_LEFT 2
#define CLIP_TOP 4
#define CLIP_BOTTOM 8
#define CLIP_FRONT 16
int cam_cur;
campt_t campts[2];
vec3_t r_matrix[3];
vec3_t r_origin;
float mid_x, mid_y;
float topscale = (240.0 / 3) / 160;
float bottomscale = (240.0 * 2 / 3) / 160;
vec3_t r_matrix[3];
vec3_t r_origin;
float mid_x, mid_y;
float topscale = (240.0 / 3) / 160;
float bottomscale = (240.0 * 2 / 3) / 160;
extern plane_t rfrustum[5];
extern plane_t rfrustum[5];
void
MakeCampt (vec3_t in, campt_t * pt)
{
vec3_t temp;
float scale;
vec3_t temp;
float scale;
// transform the points
VectorSubtract (in, r_origin, temp);
@ -277,7 +278,7 @@ MakeCampt (vec3_t in, campt_t * pt)
pt->trans[1] = DotProduct (temp, r_matrix[1]);
pt->trans[2] = DotProduct (temp, r_matrix[2]);
// check clip flags
// check clip flags
if (pt->trans[2] < 1)
pt->clipflags = CLIP_FRONT;
else
@ -296,17 +297,16 @@ MakeCampt (vec3_t in, campt_t * pt)
if (pt->clipflags)
return;
// project
// project
scale = mid_x / pt->trans[2];
pt->screen[0] = mid_x + pt->trans[0] * scale;
pt->screen[1] = mid_y + pt->trans[1] * scale;
}
void
CameraMoveto (vec3_t p)
{
campt_t *pt;
campt_t *pt;
if ([path elementCount] > 2048)
lineflush ();
@ -314,9 +314,8 @@ CameraMoveto (vec3_t p)
pt = &campts[cam_cur];
cam_cur ^= 1;
MakeCampt (p, pt);
if (!pt->clipflags) {
// onscreen, so move there immediately
NSPoint point = { 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];
}
}
@ -326,12 +325,11 @@ ClipLine (vec3_t p1, vec3_t p2, int planenum)
{
float d, d2, frac;
vec3_t new;
plane_t *pl;
plane_t *pl;
float scale;
NSPoint point;
if (planenum == 5) {
// draw it!
if (planenum == 5) { // draw it!
scale = mid_x / p1[2];
point.x = mid_x + p1[0] * scale;
point.y = mid_y + p1[1] * scale;
@ -348,11 +346,10 @@ ClipLine (vec3_t p1, vec3_t p2, int planenum)
d = DotProduct (p1, pl->normal) - pl->dist;
d2 = DotProduct (p2, pl->normal) - pl->dist;
if (d <= ON_EPSILON && d2 <= ON_EPSILON) { // off screen
if (d <= ON_EPSILON && d2 <= ON_EPSILON) // off screen
return;
}
if (d >= 0 && d2 >= 0) { // on front
if (d >= 0 && d2 >= 0) { // on front
ClipLine (p1, p2, planenum + 1);
return;
}
@ -368,12 +365,12 @@ ClipLine (vec3_t p1, vec3_t p2, int planenum)
ClipLine (new, p2, planenum + 1);
}
int c_off, c_on, c_clip;
int c_off, c_on, c_clip;
void
CameraLineto (vec3_t p)
{
campt_t *p1, *p2;
campt_t *p1, *p2;
int bits;
p2 = &campts[cam_cur];
@ -381,36 +378,36 @@ CameraLineto (vec3_t p)
p1 = &campts[cam_cur];
MakeCampt (p, p2);
if (p1->clipflags & p2->clipflags) {
if (p1->clipflags & p2->clipflags) { // entirely off screen
c_off++;
return; // entirely off screen
return;
}
bits = p1->clipflags | p2->clipflags;
if (!bits) { // entirely on screen
NSPoint point1 = {p1->screen[0], p1->screen[1]};
NSPoint point2 = {p2->screen[0], p2->screen[1]};
if (!bits) {
NSPoint point1 = { p1->screen[0], p1->screen[1] };
NSPoint point2 = { p2->screen[0], p2->screen[1] };
c_on++;
[path moveToPoint: point1];
[path lineToPoint: point2];
return; // entirely on screen
return;
}
// needs to be clipped
// needs to be clipped
c_clip++;
ClipLine (p1->trans, p2->trans, 0);
}
/*
=============
drawSolid
=============
*/
-drawSolid
- (id) drawSolid
{
unsigned char *planes[5];
unsigned char *planes[5];
//
// draw it
@ -432,7 +429,7 @@ drawSolid
//
// render the setbrushes
//
//
[map_i makeAllPerform: @selector (CameraRenderSelf)];
//
@ -442,25 +439,21 @@ drawSolid
planes[0] = (unsigned char *) imagebuffer;
NSDrawBitmap (_bounds, r_width, r_height, 8, 3, 32, r_width * 4, NO, NO,
NSCalibratedRGBColorSpace,
(const unsigned char **) planes);
NSCalibratedRGBColorSpace, (const unsigned char **) planes);
[[self window] setBackingType: NSBackingStoreBuffered];
return self;
}
/*
===================
drawWire
===================
*/
-drawWire:(NSRect)rect
- (id) drawWire: (NSRect)rect
{
// copy current info to globals for the C callbacks
// copy current info to globals for the C callbacks
mid_x = _bounds.size.width / 2;
mid_y = 2 * _bounds.size.height / 3;
@ -476,10 +469,10 @@ drawWire
REN_BeginCamera ();
// erase window
// erase window
NSEraseRect (rect);
// draw all entities
// draw all entities
linestart (0, 0, 0);
[map_i makeUnselectedPerform: @selector (CameraDrawSelf)];
lineflush ();
@ -492,9 +485,9 @@ drawWire
drawSelf
===================
*/
- (void) drawRect:(NSRect)rect
- (void) drawRect: (NSRect)rect
{
float drawtime = 0;
float drawtime = 0;
if (timedrawing)
drawtime = Sys_DoubleTime ();
@ -513,7 +506,6 @@ drawSelf
}
}
/*
=============
XYDrawSelf
@ -521,8 +513,8 @@ XYDrawSelf
*/
- (void) XYDrawSelf
{
NSBezierPath *path;
NSAffineTransform *trans;
NSBezierPath *path;
NSAffineTransform *trans;
[[NSColor blueColor] set];
@ -549,8 +541,8 @@ ZDrawSelf
*/
- (void) ZDrawSelf
{
NSBezierPath *path;
NSAffineTransform *trans;
NSBezierPath *path;
NSAffineTransform *trans;
[[NSColor blueColor] set];
@ -563,11 +555,10 @@ ZDrawSelf
[path release];
}
/*
===============================================================================
XYZ mouse view methods
XYZ mouse view methods
===============================================================================
*/
@ -577,10 +568,15 @@ ZDrawSelf
modalMoveLoop
================
*/
-modalMoveLoop:(NSPoint *)basept :(vec3_t)movemod :converter
- (id) modalMoveLoop: (NSPoint *)basept
: (vec3_t)movemod
: converter
{
vec3_t originbase;
NSEvent *event = 0;
NSEvent *event = 0;
unsigned eventMask = (NSLeftMouseUpMask | NSLeftMouseDraggedMask
| NSRightMouseUpMask | NSRightMouseDraggedMask
| NSApplicationDefinedMask);
NSPoint newpt;
vec3_t delta;
int i;
@ -592,74 +588,73 @@ modalMoveLoop
// modal event loop using instance drawing
goto drawentry;
while ([event type] != NSLeftMouseUp &&[event type] != NSRightMouseUp) {
while ([event type] != NSLeftMouseUp && [event type] != NSRightMouseUp) {
// calculate new point
newpt =[event locationInWindow];
newpt =[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;
delta[2] = delta[1]; // height change
delta[2] = delta[1]; // height change
for (i = 0; i < 3; i++)
origin[i] = originbase[i] + movemod[i] * delta[i];
#if 0 // FIXME
#if 0 // FIXME
// if command is down, look towards brush or entity
if (event->flags & NS_SHIFTMASK) {
NSPoint brushpt;
id ent;
vec3_t temp;
ent =[quakemap_i selectedEntity];
ent = [quakemap_i selectedEntity];
if (ent) {
[ent origin: temp];
brushpt.x = temp[0];
brushpt.y = temp[1];
} else
brushpt =[brush_i centerPoint];
ya = atan2 (brushpt.y - newpt.y, brushpt.x - newpt.x);
} else {
brushpt = [brush_i centerPoint];
} ya = atan2 (brushpt.y - newpt.y, brushpt.x - newpt.x);
[self matrixFromAngles];
}
#endif
drawentry:
drawentry:
// instance draw new frame
[quakeed_i newinstance];
[self display];
event = [NSApp nextEventMatchingMask: NSLeftMouseUpMask
| NSLeftMouseDraggedMask | NSRightMouseUpMask
| NSRightMouseDraggedMask | NSApplicationDefinedMask
untilDate: [NSDate distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue: YES];
event = [NSApp nextEventMatchingMask: eventMask
untilDate: [NSDate distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue:
YES];
if ([event type] == NSKeyDown) {
[self _keyDown: event];
[self display];
goto drawentry;
}
}
return self;
}
//============================================================================
// ============================================================================
/*
===============
XYmouseDown
===============
*/
-(BOOL) XYmouseDown:(NSPoint *)pt flags:(int)flags
- (BOOL) XYmouseDown: (NSPoint *)pt
flags: (int)flags
// return YES if brush handled
{
vec3_t movemod;
vec3_t movemod;
if (fabs (pt->x - origin[0]) > 16 || fabs (pt->y - origin[1]) > 16)
return NO;
#if 0
if (flags & NSAlternateKeyMask) { // up / down drag
if (flags & NSAlternateKeyMask) { // up / down drag
movemod[0] = 0;
movemod[1] = 0;
movemod[2] = 1;
@ -671,21 +666,21 @@ XYmouseDown
movemod[2] = 0;
}
[self modalMoveLoop: pt : movemod : xyview_i];
[self modalMoveLoop: pt: movemod: xyview_i];
return YES;
}
/*
===============
ZmouseDown
===============
*/
-(BOOL) ZmouseDown:(NSPoint *)pt flags:(int)flags
- (BOOL) ZmouseDown: (NSPoint *)pt
flags: (int)flags
// return YES if brush handled
{
vec3_t movemod;
vec3_t movemod;
if (fabs (pt->y - origin[2]) > 16 || pt->x < -8 || pt->x > 8)
return NO;
@ -694,23 +689,22 @@ ZmouseDown
movemod[1] = 0;
movemod[2] = 1;
[self modalMoveLoop: pt : movemod : zview_i];
[self modalMoveLoop: pt: movemod: zview_i];
return YES;
}
//=============================================================================
// =============================================================================
/*
===================
viewDrag:
===================
*/
-viewDrag:(NSPoint *)pt
- (id) viewDrag: (NSPoint *)pt
{
float dx, dy;
NSEvent *event = 0;
NSEvent *event = 0;
NSPoint newpt;
//
@ -719,11 +713,11 @@ viewDrag:
goto drawentry;
while ([event type] != NSRightMouseUp) {
//
//
// calculate new point
//
newpt =[event locationInWindow];
newpt =[self convertPoint: newpt fromView: NULL];
//
newpt = [event locationInWindow];
newpt = [self convertPoint: newpt fromView: NULL];
dx = newpt.x - pt->x;
dy = newpt.y - pt->y;
@ -734,33 +728,32 @@ viewDrag:
[self matrixFromAngles];
drawentry:
drawentry:
[quakeed_i newinstance];
[self display];
event = [NSApp nextEventMatchingMask: NSRightMouseUpMask
| NSRightMouseDraggedMask
untilDate: [NSDate distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue: YES];
| NSRightMouseDraggedMask
untilDate: [NSDate distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue:
YES];
if ([event type] == NSKeyDown) {
[self _keyDown:event];
[self _keyDown: event];
[self display];
goto drawentry;
}
}
return self;
}
//=============================================================================
// =============================================================================
/*
===================
mouseDown
===================
*/
-(void) mouseDown:(NSEvent *)theEvent
- (void) mouseDown: (NSEvent *)theEvent
{
NSPoint pt;
int i;
@ -768,23 +761,24 @@ mouseDown
float forward, right, up;
int flags;
pt =[theEvent locationInWindow];
pt = [theEvent locationInWindow];
pt =[self convertPoint: pt fromView: NULL];
pt = [self convertPoint: pt fromView: NULL];
VectorCopy (origin, p1);
forward = 160;
right = pt.x - 160;
up = pt.y - 240 * 2 / 3;
for (i = 0; i < 3; i++)
for (i = 0; i < 3; i++) {
p2[i] =
forward * matrix[2][i] + up * matrix[1][i] + right * matrix[0][i];
forward * matrix[2][i] + up * matrix[1][i] + right * matrix[0][i];
}
for (i = 0; i < 3; i++)
p2[i] = p1[i] + 100 * p2[i];
flags =
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
//
// bare click to select a texture
@ -835,7 +829,6 @@ mouseDown
return;
}
Sys_Printf ("bad flags for click %x\n", flags);
NopSound ();
@ -847,18 +840,18 @@ mouseDown
rightMouseDown
===================
*/
-(void) rightMouseDown:(NSEvent *)theEvent
- (void) rightMouseDown: (NSEvent *)theEvent
{
NSPoint pt;
int flags;
pt =[theEvent locationInWindow];
pt = [theEvent locationInWindow];
[self convertPoint: pt fromView: NULL];
flags =
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
flags = [theEvent modifierFlags]
& (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask
| NSCommandKeyMask);
//
// click = drag camera
@ -881,11 +874,10 @@ keyDown
===============
*/
-_keyDown:(NSEvent *)theEvent
- (id) _keyDown: (NSEvent *)theEvent
{
NSString *chars = [theEvent characters];
unichar c = [chars length] == 1 ? [chars characterAtIndex: 0] : '\0';
NSString *chars = [theEvent characters];
unichar c = ([chars length] == 1) ? [chars characterAtIndex: 0] : '\0';
switch (c) {
case 13:
@ -952,12 +944,9 @@ keyDown
origin[2] -= move;
[quakeed_i updateCamera];
break;
}
} /* switch */
return self;
}
@end

View file

@ -7,22 +7,22 @@
#include "SetBrush.h"
extern id clipper_i;
extern id clipper_i;
@interface Clipper:NSObject
@interface Clipper: NSObject
{
int num;
vec3_t pos[3];
plane_t plane;
}
-(BOOL) hide;
-XYClick:(NSPoint) pt;
-(BOOL) XYDrag:(NSPoint *) pt;
-ZClick:(NSPoint) pt;
-carve;
- (BOOL) hide;
- (id) XYClick: (NSPoint)pt;
- (BOOL) XYDrag: (NSPoint *)pt;
- (id) ZClick: (NSPoint)pt;
- (id) carve;
- (void) flipNormal;
-(BOOL) getFace:(face_t *) pl;
- (BOOL) getFace: (face_t *)pl;
- (void) cameraDrawSelf;
- (void) XYDrawSelf;

View file

@ -7,21 +7,21 @@
#include "CameraView.h"
#include "QuakeEd.h"
id clipper_i;
extern NSBezierPath *path;
id clipper_i;
extern NSBezierPath *path;
@implementation Clipper
-init
- (id) init
{
[super init];
clipper_i = self;
return self;
}
-(BOOL) hide
- (BOOL) hide
{
int oldnum;
int oldnum;
oldnum = num;
num = 0;
@ -30,7 +30,7 @@ extern NSBezierPath *path;
- (void) flipNormal
{
vec3_t temp;
vec3_t temp;
if (num == 2) {
VectorCopy (pos[0], temp);
@ -46,10 +46,10 @@ extern NSBezierPath *path;
}
}
-(BOOL) getFace:(face_t *) f
- (BOOL) getFace: (face_t *)f
{
vec3_t v1, v2, norm;
int i;
vec3_t v1, v2, norm;
int i;
VectorCopy (vec3_origin, plane.normal);
plane.dist = 0;
@ -72,7 +72,7 @@ extern NSBezierPath *path;
if (!norm[0] && !norm[1] && !norm[2])
return NO;
[texturepalette_i getTextureDef:&f->texture];
[texturepalette_i getTextureDef: &f->texture];
return YES;
}
@ -82,28 +82,27 @@ extern NSBezierPath *path;
XYClick
================
*/
-XYClick:(NSPoint) pt
- (id) XYClick: (NSPoint)pt
{
int i;
vec3_t new;
int i;
vec3_t new;
new[0] =[xyview_i snapToGrid:pt.x];
new[1] =[xyview_i snapToGrid:pt.y];
new[2] =[map_i currentMinZ];
new[0] = [xyview_i snapToGrid: pt.x];
new[1] = [xyview_i snapToGrid: pt.y];
new[2] = [map_i currentMinZ];
// see if a point is allready there
for (i = 0; i < num; i++) {
if (new[0] == pos[i][0] && new[1] == pos[i][1]) {
if (pos[i][2] ==[map_i currentMinZ])
pos[i][2] =[map_i currentMaxZ];
if (pos[i][2] == [map_i currentMinZ])
pos[i][2] = [map_i currentMaxZ];
else
pos[i][2] =[map_i currentMinZ];
pos[i][2] = [map_i currentMinZ];
[quakeed_i updateAll];
return self;
}
}
if (num == 3)
num = 0;
@ -120,39 +119,36 @@ XYClick
XYDrag
================
*/
-(BOOL) XYDrag:(NSPoint *) pt
- (BOOL) XYDrag: (NSPoint *)pt
{
int i;
int i;
for (i = 0; i < 3; i++) {
if (fabs (pt->x - pos[i][0] > 10) || fabs (pt->y - pos[i][1] > 10))
continue;
// drag this point
continue; // drag this point
}
return NO;
}
-ZClick:(NSPoint) pt
- (id) ZClick: (NSPoint)pt
{
return self;
}
//=============================================================================
// =============================================================================
- (id) carve
{
[map_i makeSelectedPerform:@selector (carveByClipper)];
[map_i makeSelectedPerform: @selector (carveByClipper)];
num = 0;
return self;
}
- (void) cameraDrawSelf
{
vec3_t mid;
int i;
vec3_t mid;
int i;
linecolor (1, 0.5, 0);
@ -177,8 +173,8 @@ XYDrag
- (void) XYDrawSelf
{
int i;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
int i;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
[[NSColor colorWithCalibratedRed: 1.0 green: 0.5 blue: 0.0 alpha: 1.0]
set];
@ -187,40 +183,38 @@ XYDrag
[path removeAllPoints];
for (i = 0; i < num; i++) {
NSString *s = [NSString stringWithFormat: @"%i", i];
[s drawAtPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)
withAttributes: attribs];
//[path moveToPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)];
[path appendBezierPathWithArcWithCenter: NSMakePoint (pos[i][0],
pos[i][1])
radius: 10
startAngle: 0
endAngle: 360];
NSString *s = [NSString stringWithFormat: @"%i", i];
[s drawAtPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)
withAttributes: attribs];
// [path moveToPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)];
[path
appendBezierPathWithArcWithCenter: NSMakePoint (pos[i][0], pos[i][1])
radius: 10
startAngle: 0
endAngle: 360];
}
[path stroke];
}
- (void) ZDrawSelf
{
int i;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
[[NSColor colorWithCalibratedRed: 1.0 green: 0.5 blue: 0.0 alpha: 1.0]
set];
int i;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
[[NSColor colorWithCalibratedRed: 1. green: 0.5 blue: 0. alpha: 1.] set];
[[NSFont systemFontOfSize: 10 / [xyview_i currentScale]] set];
[path removeAllPoints];
for (i = 0; i < num; i++) {
NSString *s = [NSString stringWithFormat: @"%i", i];
[s drawAtPoint: NSMakePoint (-28 + i * 8 - 4, pos[i][2] - 4)
withAttributes: attribs];
//[path moveToPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)];
[path appendBezierPathWithArcWithCenter: NSMakePoint (-28 + i * 8,
pos[i][2])
radius: 10
startAngle: 0
endAngle: 360];
NSString *s = [NSString stringWithFormat: @"%i", i];
[s drawAtPoint: NSMakePoint (-28 + i * 8 - 4, pos[i][2] - 4)
withAttributes: attribs];
// [path moveToPoint: NSMakePoint (pos[i][0] - 4, pos[i][1] - 4)];
[path
appendBezierPathWithArcWithCenter: NSMakePoint (-28 + i * 8, pos[i][2])
radius: 10
startAngle: 0
endAngle: 360];
}
[path stroke];
}

View file

@ -5,39 +5,39 @@
#include "Storage.h"
typedef struct {
char *key;
char *value;
typedef struct {
char *key;
char *value;
} dict_t;
@interface Dict:Storage
@interface Dict: Storage
{
}
-initFromFile:(FILE *) fp;
- (id) initFromFile: (FILE *)fp;
-(id) parseMultipleFrom:(const char *) value;
-(int) getValueUnits:(const char *) key;
-delString:(const char *)string fromValue:(const char *) key;
- (id) parseMultipleFrom: (const char *)value;
- (int) getValueUnits: (const char *)key;
- (id) delString: (const char *)string fromValue: (const char *)key;
-addString:(const char *)string toValue:(const char *) key;
- (id) addString: (const char *)string toValue: (const char *)key;
-(char *) convertListToString:(id) list;
- (const char *) getStringFor:(const char *) name;
-removeKeyword:(const char *) key;
-(unsigned int) getValueFor:(const char *) name;
-changeStringFor:(const char *)key to:(const char *) value;
- (char *) convertListToString: (id)list;
- (const char *) getStringFor: (const char *)name;
- (id) removeKeyword: (const char *)key;
- (unsigned int) getValueFor: (const char *)name;
- (id) changeStringFor: (const char *)key to: (const char *)value;
-(dict_t *) findKeyword:(const char *) key;
- (dict_t *) findKeyword: (const char *)key;
-writeBlockTo:(FILE *) fp;
-writeFile:(const char *) path;
- (id) writeBlockTo: (FILE *)fp;
- (id) writeFile: (const char *)path;
// INTERNAL
-init;
-(id) parseBraceBlock:(FILE *) fp;
-setupMultiple:(const char *) value;
-(char *) getNextParameter;
- (id) init;
- (id) parseBraceBlock: (FILE *)fp;
- (id) setupMultiple: (const char *)value;
- (char *) getNextParameter;
@end

View file

@ -5,20 +5,20 @@
@implementation Dict
-init
- (id) init
{
[super initCount: 0 elementSize:sizeof (dict_t)
description:NULL];
[super initCount: 0 elementSize: sizeof (dict_t)
description: NULL];
return self;
}
-print
- (id) print
{
NSUInteger i;
dict_t *d;
NSUInteger i;
dict_t *d;
for (i = 0; i < numElements; i++) {
d =[self elementAt:i];
d = [self elementAt: i];
printf ("%s : %s\n", d->key, d->value);
}
return self;
@ -31,16 +31,16 @@ copyFromZone
JDC
===========
*/
-copy
- (id) copy
{
id new;
NSUInteger i;
dict_t *d;
char *old;
dict_t *d;
char *old;
new =[super copy];
new = [super copy];
for (i = 0; i < numElements; i++) {
d =[self elementAt:i];
d = [self elementAt: i];
old = d->key;
d->key = malloc (strlen (old) + 1);
strcpy (d->key, old);
@ -53,31 +53,31 @@ JDC
return new;
}
-initFromFile:(FILE *) fp
- (id) initFromFile: (FILE *)fp
{
[self init];
return[self parseBraceBlock:fp];
return [self parseBraceBlock: fp];
}
//===============================================
// ===============================================
//
// Dictionary pair functions
//
//===============================================
// ===============================================
//
// Write a { } block out to a FILE*
//
-writeBlockTo:(FILE *) fp
- (id) writeBlockTo: (FILE *)fp
{
int max;
int i;
dict_t *d;
int max;
int i;
dict_t *d;
fprintf (fp, "{\n");
max =[super count];
max = [super count];
for (i = 0; i < max; i++) {
d =[super elementAt:i];
d = [super elementAt: i];
fprintf (fp, "\t{\"%s\"\t\"%s\"}\n", d->key, d->value);
}
fprintf (fp, "}\n");
@ -88,15 +88,15 @@ JDC
//
// Write a single { } block out
//
-writeFile:(const char *) path
- (id) writeFile: (const char *)path
{
FILE *fp;
FILE *fp;
fp = fopen (path, "w+t");
if (fp != NULL) {
printf ("Writing dictionary file %s.\n", path);
fprintf (fp, "// QE_Project file %s\n", path);
[self writeBlockTo:fp];
[self writeBlockTo: fp];
fclose (fp);
} else {
printf ("Error writing %s!\n", path);
@ -106,25 +106,25 @@ JDC
return self;
}
//===============================================
// ===============================================
//
// Utility methods
//
//===============================================
// ===============================================
//
// Find a keyword in storage
// Returns * to dict_t, otherwise NULL
//
-(dict_t *) findKeyword:(const char *) key
- (dict_t *) findKeyword: (const char *)key
{
int max;
int i;
dict_t *d;
int max;
int i;
dict_t *d;
max =[super count];
max = [super count];
for (i = 0; i < max; i++) {
d =[super elementAt:i];
d = [super elementAt: i];
if (!strcmp (d->key, key))
return d;
}
@ -135,12 +135,12 @@ JDC
//
// Change a keyword's string
//
-changeStringFor:(const char *) key to:(const char *) value
- (id) changeStringFor: (const char *)key to: (const char *)value
{
dict_t *d;
dict_t newd;
dict_t *d;
dict_t newd;
d =[self findKeyword:key];
d = [self findKeyword: key];
if (d != NULL) {
free (d->value);
d->value = malloc (strlen (value) + 1);
@ -150,7 +150,7 @@ JDC
strcpy (newd.key, key);
newd.value = malloc (strlen (value) + 1);
strcpy (newd.value, value);
[self addElement:&newd];
[self addElement: &newd];
}
return self;
}
@ -158,41 +158,39 @@ JDC
//
// Search for keyword, return the string *
//
-(const char *) getStringFor:(const char *) name
- (const char *) getStringFor: (const char *)name
{
dict_t *d;
dict_t *d;
d =[self findKeyword:name];
d = [self findKeyword: name];
if (d != NULL)
return d->value;
return (char *) "";
}
//
// Search for keyword, return the value
//
-(unsigned int) getValueFor:(const char *) name
- (unsigned int) getValueFor: (const char *)name
{
dict_t *d;
dict_t *d;
d =[self findKeyword:name];
d = [self findKeyword: name];
if (d != NULL)
return atol (d->value);
return 0;
}
//
// Return # of units in keyword's value
//
-(int) getValueUnits:(const char *) key
- (int) getValueUnits: (const char *)key
{
id temp;
int count;
id temp;
int count;
temp =[self parseMultipleFrom:key];
count =[temp count];
temp = [self parseMultipleFrom: key];
count = [temp count];
[temp release];
return count;
@ -201,17 +199,17 @@ JDC
//
// Convert List to string
//
-(char *) convertListToString:(id) list
- (char *) convertListToString: (id)list
{
int i;
int max;
dstring_t *tempstr;
char *s;
dstring_t *tempstr;
char *s;
max =[list count];
max = [list count];
tempstr = dstring_newstr ();
for (i = 0; i < max; i++) {
s =[list elementAt:i];
s = [list elementAt: i];
dstring_appendstr (tempstr, s);
dstring_appendstr (tempstr, " ");
}
@ -222,39 +220,39 @@ JDC
//
// JDC: I wrote this to simplify removing vectors
//
-removeKeyword:(const char *) key
- (id) removeKeyword: (const char *)key
{
dict_t *d;
dict_t *d;
d =[self findKeyword:key];
d = [self findKeyword: key];
if (d == NULL)
return self;
[self removeElementAt:d - (dict_t *) dataPtr];
[self removeElementAt: d - (dict_t *) dataPtr];
return self;
}
//
// Delete string from keyword's value
//
-delString:(const char *) string fromValue:(const char *) key
- (id) delString: (const char *)string fromValue: (const char *)key
{
id temp;
int count;
int i;
char *s;
dict_t *d;
id temp;
int count;
int i;
char *s;
dict_t *d;
d =[self findKeyword:key];
d = [self findKeyword: key];
if (d == NULL)
return NULL;
temp =[self parseMultipleFrom:key];
count =[temp count];
temp = [self parseMultipleFrom: key];
count = [temp count];
for (i = 0; i < count; i++) {
s =[temp elementAt:i];
s = [temp elementAt: i];
if (!strcmp (s, string)) {
[temp removeElementAt:i];
[temp removeElementAt: i];
free (d->value);
d->value =[self convertListToString:temp];
d->value = [self convertListToString: temp];
[temp release];
break;
@ -266,12 +264,12 @@ JDC
//
// Add string to keyword's value
//
-addString:(const char *) string toValue:(const char *) key
- (id) addString: (const char *)string toValue: (const char *)key
{
char *newstr;
dict_t *d;
char *newstr;
dict_t *d;
d =[self findKeyword:key];
d = [self findKeyword: key];
if (d == NULL)
return NULL;
newstr = nva ("%s\t%s", d->value, string);
@ -281,31 +279,31 @@ JDC
return self;
}
//===============================================
// ===============================================
//
// Use these for multiple parameters in a keyword value
//
//===============================================
const char *searchStr;
// ===============================================
const char *searchStr;
char item[4096];
-setupMultiple:(const char *) value
- (id) setupMultiple: (const char *)value
{
searchStr = value;
return self;
}
-(char *) getNextParameter
- (char *) getNextParameter
{
char *s;
char *s;
if (!searchStr)
return NULL;
strcpy (item, searchStr);
s = FindWhitespcInBuffer (item);
if (!*s)
if (!*s) {
searchStr = NULL;
else {
} else {
*s = 0;
searchStr = FindNonwhitespcInBuffer (s + 1);
}
@ -315,65 +313,66 @@ char item[4096];
//
// Parses a keyvalue string & returns a Storage full of those items
//
-(id) parseMultipleFrom:(const char *) key
- (id) parseMultipleFrom: (const char *)key
{
#define ITEMSIZE 128
#define ITEMSIZE 128
id stuff;
char string[ITEMSIZE];
const char *s;
const char *s;
s =[self getStringFor:key];
s = [self getStringFor: key];
if (s == NULL)
return NULL;
stuff = [[Storage alloc]
initCount: 0 elementSize: ITEMSIZE description: NULL];
stuff =[[Storage alloc]
initCount: 0 elementSize: ITEMSIZE description:NULL];
[self setupMultiple:s];
while ((s =[self getNextParameter])) {
[self setupMultiple: s];
while ((s = [self getNextParameter])) {
bzero (string, ITEMSIZE);
strcpy (string, s);
[stuff addElement:string];
[stuff addElement: string];
}
return stuff;
}
//===============================================
// ===============================================
//
// Dictionary pair parsing
//
//===============================================
// ===============================================
//
// parse all keyword/value pairs within { } 's
//
-(id) parseBraceBlock:(FILE *) fp
- (id) parseBraceBlock: (FILE *)fp
{
int c;
dict_t pair;
char string[1024];
int c;
dict_t pair;
char string[1024];
c = FindBrace (fp);
if (c == -1)
return NULL;
while ((c = FindBrace (fp)) != '}') {
if (c == -1)
return NULL;
// c = FindNonwhitespc(fp);
// if (c == -1)
// return NULL;
// CopyUntilWhitespc(fp,string);
#if 0
c = FindNonwhitespc (fp);
if (c == -1)
return NULL;
CopyUntilWhitespc (fp, string);
#endif
// JDC: fixed to allow quoted keys
c = FindNonwhitespc (fp);
if (c == -1)
return NULL;
c = fgetc (fp);
if (c == '\"')
if (c == '\"') {
CopyUntilQuote (fp, string);
else {
} else {
ungetc (c, fp);
CopyUntilWhitespc (fp, string);
}
@ -386,7 +385,7 @@ char item[4096];
pair.value = malloc (strlen (string) + 1);
strcpy (pair.value, string);
[super addElement:&pair];
[super addElement: &pair];
c = FindBrace (fp);
}
@ -394,28 +393,32 @@ char item[4096];
}
@end
//===============================================
// ===============================================
//
// C routines for string parsing
//
//===============================================
int
// ===============================================
int
GetNextChar (FILE * fp)
{
int c;
int c2;
int c;
int c2;
c = getc (fp);
if (c == EOF)
return -1;
if (c == '/') // parse comments
{
if (c == '/') { // parse comments
c2 = getc (fp);
if (c2 == '/') {
while ((c2 = getc (fp)) != '\n');
while ((c2 = getc (fp)) != '\n')
;
c = getc (fp);
} else
} else {
ungetc (c2, fp);
}
}
return c;
}
@ -423,13 +426,14 @@ GetNextChar (FILE * fp)
void
CopyUntilWhitespc (FILE * fp, char *buffer)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
if (c == EOF)
return;
if (c <= ' ') {
*buffer = 0;
return;
@ -441,17 +445,19 @@ CopyUntilWhitespc (FILE * fp, char *buffer)
void
CopyUntilQuote (FILE * fp, char *buffer)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
if (c == EOF)
return;
if (c == '\"') {
*buffer = 0;
return;
}
*buffer++ = c;
}
}
@ -459,13 +465,14 @@ CopyUntilQuote (FILE * fp, char *buffer)
int
FindBrace (FILE * fp)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
if (c == EOF)
return -1;
if (c == '{' || c == '}')
return c;
}
@ -475,13 +482,15 @@ FindBrace (FILE * fp)
int
FindQuote (FILE * fp)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
if (c == EOF)
return -1;
if (c == '\"')
return c;
}
@ -491,8 +500,8 @@ FindQuote (FILE * fp)
int
FindWhitespc (FILE * fp)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
@ -509,8 +518,8 @@ FindWhitespc (FILE * fp)
int
FindNonwhitespc (FILE * fp)
{
int count = 800;
int c;
int count = 800;
int c;
while (count--) {
c = GetNextChar (fp);
@ -527,27 +536,29 @@ FindNonwhitespc (FILE * fp)
char *
FindWhitespcInBuffer (char *buffer)
{
int count = 1000;
char *b = buffer;
int count = 1000;
char *b = buffer;
while (count--)
while (count--) {
if (*b <= ' ')
return b;
else
b++;
}
return NULL;
}
char *
FindNonwhitespcInBuffer (char *buffer)
{
int count = 1000;
char *b = buffer;
int count = 1000;
char *b = buffer;
while (count--)
while (count--) {
if (*b > ' ')
return b;
else
b++;
}
return NULL;
}

View file

@ -3,14 +3,14 @@
#include <AppKit/AppKit.h>
@interface DictList:NSMutableArray
@interface DictList: NSMutableArray
{
NSMutableArray *array;
NSMutableArray *array;
}
-initListFromFile:(FILE *) fp;
-writeListFile:(const char *) filename;
-(id) findDictKeyword:(const char *) key;
- (id) initListFromFile: (FILE *)fp;
- (id) writeListFile: (const char *)filename;
- (id) findDictKeyword: (const char *)key;
@end
#endif // DictList_h

View file

@ -1,4 +1,3 @@
#include "DictList.h"
#include "Dict.h"
@ -9,16 +8,16 @@
//
// Read in variable # of objects from FILE *
//
- initListFromFile:(FILE *) fp
- (id) initListFromFile: (FILE *)fp
{
id d;
id d;
self = [super init];
array = [[NSMutableArray alloc] init];
do {
d =[(Dict *)[Dict alloc] initFromFile:fp];
d = [(Dict *)[Dict alloc] initFromFile: fp];
if (d != NULL)
[self addObject:d];
[self addObject: d];
} while (d != NULL);
[d release];
@ -28,21 +27,20 @@
//
// Write out list file
//
-writeListFile:(const char *) filename
- (id) writeListFile: (const char *)filename
{
FILE *fp;
FILE *fp;
NSUInteger i;
id obj;
fp = fopen (filename, "w+t");
if (fp == NULL)
return NULL;
fprintf (fp, "// Object List written by QuakeEd\n");
for (i = 0; i <[self count]; i++) {
obj =[self objectAtIndex:i];
[obj writeBlockTo:fp];
for (i = 0; i < [self count]; i++) {
obj = [self objectAtIndex: i];
[obj writeBlockTo: fp];
}
fclose (fp);
@ -52,15 +50,15 @@
//
// Find the keyword in all the Dict objects
//
-(id) findDictKeyword:(const char *) key
- (id) findDictKeyword: (const char *)key
{
NSUInteger i;
dict_t *d;
dict_t *d;
id dict;
for (i = 0; i <[self count]; i++) {
dict =[self objectAtIndex:i];
d =[(Dict *) dict findKeyword:key];
for (i = 0; i < [self count]; i++) {
dict = [self objectAtIndex: i];
d = [(Dict *) dict findKeyword: key];
if (d != NULL)
return dict;
}

View file

@ -5,42 +5,42 @@
#include "QF/mathlib.h"
typedef struct epair_s {
struct epair_s *next;
char *key;
char *value;
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:NSMutableArray
@interface Entity: NSMutableArray
{
NSMutableArray *array;
epair_t *epairs;
BOOL modifiable;
NSMutableArray *array;
epair_t *epairs;
BOOL modifiable;
}
- (Entity *) initClass:(const char *) classname;
- (Entity *) initFromScript: (struct script_s *) script;
- (Entity *) initClass: (const char *)classname;
- (Entity *) initFromScript: (struct script_s *)script;
- (oneway void) dealloc;
-(BOOL) modifiable;
- (void) setModifiable:(BOOL) m;
- (BOOL) modifiable;
- (void) setModifiable: (BOOL)m;
-(const char *) targetname;
- (const char *) targetname;
- (void) writeToFILE:(FILE *)f region:(BOOL) reg;
- (void) writeToFILE: (FILE *)f region: (BOOL)reg;
-(const char *) valueForQKey:(const char *) k;
- (void) getVector:(vec3_t)v forKey:(const char *) k;
- (const char *) valueForQKey: (const char *)k;
- (void) getVector: (vec3_t)v forKey: (const char *)k;
- (void) setKey:(const char *)k
toValue:(const char *)v;
- (void) setKey: (const char *)k
toValue: (const char *)v;
-(int) numPairs;
-(epair_t *) epairs;
- (void) removeKeyPair:(const char *) key;
- (int) numPairs;
- (epair_t *) epairs;
- (void) removeKeyPair: (const char *)key;
@end
#endif // Entity_h

View file

@ -15,27 +15,27 @@
@implementation Entity
vec3_t bad_mins = { -8, -8, -8 };
vec3_t bad_maxs = { 8, 8, 8 };
vec3_t bad_mins = {-8, -8, -8};
vec3_t bad_maxs = {8, 8, 8};
-createFixedBrush:(vec3_t) org
- (id) createFixedBrush: (vec3_t)org
{
vec3_t emins, emaxs;
float *v, *v2, *color;
id new;
texturedef_t td;
vec3_t emins, emaxs;
float *v, *v2, *color;
id new;
texturedef_t td;
// get class
new =[entity_classes_i classForName: [self valueForQKey:"classname"]];
new = [entity_classes_i classForName: [self valueForQKey: "classname"]];
if (new) {
v =[new mins];
v2 =[new maxs];
v = [new mins];
v2 = [new maxs];
} else {
v = bad_mins;
v2 = bad_maxs;
}
color =[new drawColor];
color = [new drawColor];
modifiable = NO;
memset (&td, 0, sizeof (td));
@ -43,10 +43,10 @@ vec3_t bad_maxs = { 8, 8, 8 };
VectorAdd (org, v, emins);
VectorAdd (org, v2, emaxs);
new =[[SetBrush alloc] initOwner: self mins: emins maxs: emaxs texture:&td];
[new setEntityColor:color];
new = [[SetBrush alloc] initOwner: self mins: emins maxs: emaxs texture: &td];
[new setEntityColor: color];
[self addObject:new];
[self addObject: new];
return self;
}
@ -57,7 +57,7 @@ vec3_t bad_maxs = { 8, 8, 8 };
esize_t esize;
vec3_t min, max;
int org[3];
float *v;
float *v;
self = [super init];
array = [[NSMutableArray alloc] init];
@ -67,7 +67,7 @@ vec3_t bad_maxs = { 8, 8, 8 };
[self setKey: "classname" toValue: classname];
// get class
new = [entity_classes_i classForName: [self valueForQKey:"classname"]];
new = [entity_classes_i classForName: [self valueForQKey: "classname"]];
if (!new)
esize = esize_model;
else
@ -76,22 +76,23 @@ vec3_t bad_maxs = { 8, 8, 8 };
// create a brush if needed
if (esize == esize_fixed) {
v = [new mins];
[[map_i selectedBrush] getMins: min maxs:max];
[[map_i selectedBrush] getMins: min maxs: max];
VectorSubtract (min, v, min);
VectorCopy (min, org); // convert to integer
VectorCopy (min, org);
[self setKey:"origin" toValue:va ("%i %i %i", org[0], org[1], org[2])];
// convert to integer
[self setKey: "origin" toValue: va ("%i %i %i", org[0], org[1], org[2])];
[self createFixedBrush: min];
} else
} else {
modifiable = YES;
}
return self;
}
- (oneway void) dealloc
{
epair_t *e, *n;
epair_t *e, *n;
for (e = epairs; e; e = n) {
n = e->next;
@ -103,7 +104,7 @@ vec3_t bad_maxs = { 8, 8, 8 };
[super dealloc];
}
-(BOOL) modifiable
- (BOOL) modifiable
{
return modifiable;
}
@ -114,45 +115,45 @@ vec3_t bad_maxs = { 8, 8, 8 };
return;
}
-(void) removeObject: (id)o
- (void) removeObject: (id)o
{
[super removeObject:o];
[super removeObject: o];
if ([self count])
return;
// the entity is empty, so remove the entire thing
if (self ==[map_i objectAtIndex:0])
return; // never remove the world
[map_i removeObject:self];
// the entity is empty, so remove the entire thing
if (self == [map_i objectAtIndex: 0]) // unless it's the world...
return;
[map_i removeObject: self];
[self release];
}
-(const char *) valueForQKey:(const char *) k
- (const char *) valueForQKey: (const char *)k
{
epair_t *e;
epair_t *e;
for (e = epairs; e; e = e->next)
for (e = epairs; e; e = e->next) {
if (!strcmp (k, e->key))
return e->value;
}
return "";
}
- (void) getVector: (vec3_t)v
forKey: (const char *)k
forKey: (const char *)k
{
const char *c;
c =[self valueForQKey:k];
const char *c;
c = [self valueForQKey: k];
v[0] = v[1] = v[2] = 0;
sscanf (c, "%f %f %f", &v[0], &v[1], &v[2]);
}
-print
- (id) print
{
epair_t *e;
epair_t *e;
for (e = epairs; e; e = e->next)
printf ("%20s : %20s\n", e->key, e->value);
@ -160,15 +161,17 @@ vec3_t bad_maxs = { 8, 8, 8 };
return self;
}
- (void) setKey:(const char *)k
toValue:(const char *) v
- (void) setKey: (const char *)k
toValue: (const char *)v
{
epair_t *e;
epair_t *e;
while (*k && *k <= ' ')
k++;
// don't set NULL values
if (!*k)
return; // don't set NULL values
return;
for (e = epairs; e; e = e->next) {
if (!strcmp (k, e->key)) {
@ -185,25 +188,26 @@ vec3_t bad_maxs = { 8, 8, 8 };
epairs = e;
}
-(int) numPairs
- (int) numPairs
{
int i;
epair_t *e;
epair_t *e;
i = 0;
for (e = epairs; e; e = e->next)
i++;
return i;
}
-(epair_t *) epairs
- (epair_t *) epairs
{
return epairs;
}
- (void) removeKeyPair:(char *) key
- (void) removeKeyPair: (char *)key
{
epair_t *e, *e2;
epair_t *e, *e2;
if (!epairs)
return;
@ -215,7 +219,7 @@ vec3_t bad_maxs = { 8, 8, 8 };
return;
}
for (; e; e = e->next) {
for ( ; e; e = e->next) {
if (e->next && !strcmp (e->next->key, key)) {
e2 = e->next;
e->next = e2->next;
@ -228,7 +232,6 @@ vec3_t bad_maxs = { 8, 8, 8 };
return;
}
/*
=============
targetname
@ -236,23 +239,23 @@ targetname
If the entity does not have a "targetname" key, a unique one is generated
=============
*/
-(const char *) targetname
- (const char *) targetname
{
const char *t;
const char *t;
int i, count;
id ent;
int tval, maxt;
t =[self valueForQKey:"targetname"];
t = [self valueForQKey: "targetname"];
if (t && t[0])
return t;
// make a unique name of the form t<number>
count =[map_i count];
// make a unique name of the form t<number>
count = [map_i count];
maxt = 0;
for (i = 1; i < count; i++) {
ent =[map_i objectAtIndex:i];
t =[ent valueForQKey:"targetname"];
ent = [map_i objectAtIndex: i];
t = [ent valueForQKey: "targetname"];
if (!t || t[0] != 't')
continue;
tval = atoi (t + 1);
@ -260,9 +263,9 @@ If the entity does not have a "targetname" key, a unique one is generated
maxt = tval;
}
[self setKey: "targetname" toValue:va ("t%i", maxt + 1)];
[self setKey: "targetname" toValue: va ("t%i", maxt + 1)];
return [self valueForQKey:"targetname"];
return [self valueForQKey: "targetname"];
}
/*
@ -273,19 +276,19 @@ FILE METHODS
==============================================================================
*/
int nument;
int nument;
- (Entity *) initFromScript:(script_t *) script
- (Entity *) initFromScript: (script_t *)script
{
char *key;
id eclass, brush;
const char *spawn;
vec3_t emins, emaxs;
vec3_t org;
texturedef_t td;
esize_t esize;
int i, c;
float *color;
char *key;
id eclass, brush;
const char *spawn;
vec3_t emins, emaxs;
vec3_t org;
texturedef_t td;
esize_t esize;
int i, c;
float *color;
self = [super init];
array = [[NSMutableArray alloc] init];
@ -305,13 +308,13 @@ int nument;
break;
if (!strcmp (Script_Token (script), "{")) {
// read a brush
brush =[[SetBrush alloc] initFromScript: script owner:self];
[self addObject:brush];
brush = [[SetBrush alloc] initFromScript: script owner: self];
[self addObject: brush];
} else {
// read a key / value pair
key = strdup (Script_Token (script));
Script_GetToken (script, false);
[self setKey: key toValue:Script_Token (script)];
[self setKey: key toValue: Script_Token (script)];
free (key);
}
} while (1);
@ -319,12 +322,12 @@ int nument;
nument++;
// get class
spawn =[self valueForQKey:"classname"];
eclass =[entity_classes_i classForName:spawn];
spawn = [self valueForQKey: "classname"];
eclass = [entity_classes_i classForName: spawn];
esize =[eclass esize];
esize = [eclass esize];
[self getVector: org forKey:"origin"];
[self getVector: org forKey: "origin"];
if ([self count] && esize != esize_model) {
printf ("WARNING:Entity with brushes and wrong model type\n");
@ -332,94 +335,96 @@ int nument;
}
if (![self count] && esize == esize_model) {
printf ("WARNING:Entity with no brushes and esize_model: %s\n", [self valueForQKey:"classname"]);
[texturepalette_i getTextureDef:&td];
printf ("WARNING:Entity with no brushes and esize_model: %s\n",
[self valueForQKey: "classname"]);
[texturepalette_i getTextureDef: &td];
for (i = 0; i < 3; i++) {
emins[i] = org[i] - 8;
emaxs[i] = org[i] + 8;
}
brush =[[SetBrush alloc] initOwner: self mins: emins maxs: emaxs texture:&td];
[self addObject:brush];
brush =
[[SetBrush alloc] initOwner: self mins: emins maxs: emaxs texture: &td];
[self addObject: brush];
}
// create a brush if needed
// create a brush if needed
if (esize == esize_fixed)
[self createFixedBrush:org];
[self createFixedBrush: org];
else
modifiable = YES;
// set all the brush colors
color =[eclass drawColor];
// set all the brush colors
color = [eclass drawColor];
c =[self count];
c = [self count];
for (i = 0; i < c; i++) {
brush =[self objectAtIndex:i];
[brush setEntityColor:color];
brush = [self objectAtIndex: i];
[brush setEntityColor: color];
}
return self;
}
- (void) writeToFILE:(FILE *)f
region:(BOOL) reg;
- (void) writeToFILE: (FILE *)f
region: (BOOL)reg;
{
epair_t *e;
int ang;
unsigned int i;
id new;
vec3_t mins, maxs;
int org[3];
const vec_t *v;
char *oldang = 0;
epair_t *e;
int ang;
unsigned int i;
id new;
vec3_t mins, maxs;
int org[3];
const vec_t *v;
char *oldang = 0;
if (reg) {
if (!strcmp ([self valueForQKey:"classname"], "info_player_start")) {
if (!strcmp ([self valueForQKey: "classname"], "info_player_start")) {
// move the playerstart temporarily to the camera position
oldang = strdup ([self valueForQKey:"angle"]);
oldang = strdup ([self valueForQKey: "angle"]);
ang = (int) ([cameraview_i yawAngle] * 180 / M_PI);
[self setKey: "angle" toValue: va ("%i", ang)];
} else if (self != [map_i objectAtIndex:0]
&& [[self objectAtIndex:0] regioned]) {
return; // skip the entire entity definition
} else if (self != [map_i objectAtIndex: 0]
&& [[self objectAtIndex: 0] regioned]) {
return; // skip the entire entity definition
}
}
fprintf (f, "{\n");
// set an origin epair
// set an origin epair
if (!modifiable) {
[[self objectAtIndex: 0] getMins: mins maxs:maxs];
[[self objectAtIndex: 0] getMins: mins maxs: maxs];
if (oldang) {
[cameraview_i getOrigin:mins];
[cameraview_i getOrigin: mins];
mins[0] -= 16;
mins[1] -= 16;
mins[2] -= 48;
}
new =[entity_classes_i classForName:
[self valueForQKey:"classname"]];
new = [entity_classes_i classForName:
[self valueForQKey: "classname"]];
if (new)
v =[new mins];
v = [new mins];
else
v = vec3_origin;
VectorSubtract (mins, v, org);
[self setKey: "origin"
toValue: va ("%i %i %i", org[0], org[1], org[2])];
toValue: va ("%i %i %i", org[0], org[1], org[2])];
}
for (e = epairs; e; e = e->next)
fprintf (f, "\"%s\"\t\"%s\"\n", e->key, e->value);
// fixed size entities don't save out brushes
// fixed size entities don't save out brushes
if (modifiable) {
for (i = 0; i <[self count]; i++)
[[self objectAtIndex: i] writeToFILE: f region:reg];
for (i = 0; i < [self count]; i++)
[[self objectAtIndex: i] writeToFILE: f region: reg];
}
fprintf (f, "}\n");
if (oldang) {
[self setKey: "angle" toValue:oldang];
[self setKey: "angle" toValue: oldang];
free (oldang);
}

View file

@ -5,42 +5,42 @@
#include "QF/mathlib.h"
typedef enum { esize_model, esize_fixed } esize_t;
typedef enum {esize_model, esize_fixed} esize_t;
#define MAX_FLAGS 8
#define MAX_FLAGS 8
@interface EntityClass:NSObject
@interface EntityClass: NSObject
{
char *name;
char *name;
esize_t esize;
vec3_t mins, maxs;
vec3_t color;
char *comments;
char *flagnames[MAX_FLAGS];
char *comments;
char *flagnames[MAX_FLAGS];
}
-initFromText:(const char *)text source:(const char *) filename;
- (id) initFromText: (const char *)text source: (const char *)filename;
-(const char *) classname;
-(esize_t) esize;
-(float *) mins; // only for esize_fixed
-(float *) maxs; // only for esize_fixed
-(float *) drawColor;
-(const char *) comments;
-(const char *) flagName:(unsigned) flagnum;
- (const char *) classname;
- (esize_t) esize;
- (float *) mins; // only for esize_fixed
- (float *) maxs; // only for esize_fixed
- (float *) drawColor;
- (const char *) comments;
- (const char *) flagName: (unsigned)flagnum;
@end extern id entity_classes_i;
@interface EntityClassList:NSMutableArray
@interface EntityClassList: NSMutableArray
{
NSMutableArray *array;
id nullclass;
char *source_path;
NSMutableArray *array;
id nullclass;
char *source_path;
}
-initForSourceDirectory:(const char *) path;
-(id) classForName:(const char *) name;
-(void) scanDirectory;
- (id) initForSourceDirectory: (const char *)path;
- (id) classForName: (const char *)name;
- (void) scanDirectory;
@end
#endif // EntityClass_h

View file

@ -12,17 +12,15 @@
static int
parse_vector (script_t * script, vec3_t vec)
{
int r;
int r;
if (!Script_GetToken (script, 0))
return 0;
if (strcmp (Script_Token (script), "("))
return 0;
r = sscanf (script->p, "%f %f %f)", &vec[0], &vec[1], &vec[2]);
if (r != 3)
return 0;
while (strcmp (Script_Token (script), ")")) {
if (!Script_GetToken (script, 0))
return 0;
@ -38,14 +36,15 @@ parse_vector (script_t * script, vec3_t vec)
//
// Flag names can follow the size description:
//
// /*QUAKED func_door (0 .5 .8) ? START_OPEN STONE_SOUND DOOR_DONT_LINK GOLD_KEY SILVER_KEY
// /*QUAKED func_door (0 .5 .8) ? START_OPEN STONE_SOUND DOOR_DONT_LINK GOLD_KEY
// SILVER_KEY
-initFromText:(const char *) text source:(const char *) filename
- (id) initFromText: (const char *)text source: (const char *)filename
{
const char *t;
const char *t;
size_t len;
int i;
script_t *script;
script_t *script;
[super init];
@ -64,7 +63,7 @@ parse_vector (script_t * script, vec3_t vec)
// grab the color
if (!parse_vector (script, color))
return 0;
// get the size
// get the size
if (!Script_GetToken (script, 0))
return 0;
if (!strcmp (Script_Token (script), "(")) {
@ -80,7 +79,6 @@ parse_vector (script_t * script, vec3_t vec)
} else {
return 0;
}
// get the flags
// any remaining words on the line are parm flags
for (i = 0; i < MAX_FLAGS; i++) {
@ -105,38 +103,37 @@ parse_vector (script_t * script, vec3_t vec)
return self;
}
-(esize_t) esize
- (esize_t) esize
{
return esize;
}
-(const char *) classname
- (const char *) classname
{
return name;
}
-(float *) mins
- (float *) mins
{
return mins;
}
-(float *) maxs
- (float *) maxs
{
return maxs;
}
-(float *) drawColor
- (float *) drawColor
{
return color;
}
-(const char *) comments
- (const char *) comments
{
return comments;
}
-(const char *) flagName:(unsigned) flagnum
- (const char *) flagName: (unsigned)flagnum
{
if (flagnum >= MAX_FLAGS)
Sys_Error ("EntityClass flagName: bad number");
@ -144,7 +141,7 @@ parse_vector (script_t * script, vec3_t vec)
}
@end
//===========================================================================
// ===========================================================================
#define THING EntityClassList
#include "THING+NSArray.m"
@ -155,35 +152,34 @@ parse_vector (script_t * script, vec3_t vec)
insertEC:
=================
*/
- (void) insertEC:ec
- (void) insertEC: ec
{
const char *name;
unsigned int i;
const char *name;
unsigned int i;
name =[ec classname];
for (i = 0; i <[self count]; i++) {
if (strcasecmp (name,[[self objectAtIndex:i] classname]) < 0) {
[self insertObject: ec atIndex:i];
name = [ec classname];
for (i = 0; i < [self count]; i++) {
if (strcasecmp (name, [[self objectAtIndex: i] classname]) < 0) {
[self insertObject: ec atIndex: i];
return;
}
}
[self addObject:ec];
[self addObject: ec];
}
/*
=================
scanFile
=================
*/
-(void) scanFile:(const char *) filename
- (void) scanFile: (const char *)filename
{
int size, line;
char *data;
char *data;
id cl;
int i;
const char *path;
QFile *file;
const char *path;
QFile *file;
path = va ("%s/%s", source_path, filename);
@ -199,10 +195,11 @@ scanFile
line = 1;
for (i = 0; i < size; i++) {
if (!strncmp (data + i, "/*QUAKED", 8)) {
cl =[[EntityClass alloc] initFromText:(data + i)
source:va ("%s:%d", filename, line)];
cl = [[EntityClass alloc]
initFromText: (data + i)
source: va ("%s:%d", filename, line)];
if (cl)
[self insertEC:cl];
[self insertEC: cl];
} else if (data[i] == '\n') {
line++;
}
@ -211,68 +208,63 @@ scanFile
free (data);
}
/*
=================
scanDirectory
=================
*/
-(void) scanDirectory
- (void) scanDirectory
{
int count, i;
struct dirent **namelist, *ent;
int count, i;
struct dirent **namelist, *ent;
[self removeAllObjects];
count = scandir (source_path, &namelist, NULL, NULL);
for (i = 0; i < count; i++) {
int len;
int len;
ent = namelist[i];
len = strlen (ent->d_name);
if (len <= 3)
continue;
if (!strcmp (ent->d_name + len - 3, ".qc"))
[self scanFile:ent->d_name];
[self scanFile: ent->d_name];
}
}
id entity_classes_i;
id entity_classes_i;
-initForSourceDirectory:(const char *) path
- (id) initForSourceDirectory: (const char *)path
{
self = [super init];
array = [[NSMutableArray alloc] init];
source_path = strdup (path); //FIXME leak?
source_path = strdup (path); // FIXME leak?
[self scanDirectory];
entity_classes_i = self;
nullclass =[[EntityClass alloc]
initFromText: "/*QUAKED UNKNOWN_CLASS (0 0.5 0) ?*/" source:va ("%s:%d", __FILE__,
__LINE__ -
1)];
nullclass = [[EntityClass alloc]
initFromText: "/*QUAKED UNKNOWN_CLASS (0 0.5 0) ?*/"
source: va ("%s:%d", __FILE__, __LINE__ - 1)];
return self;
}
-(id) classForName:(const char *) name
- (id) classForName: (const char *)name
{
unsigned int i;
id o;
unsigned int i;
id o;
for (i = 0; i <[self count]; i++) {
o =[self objectAtIndex:i];
if (!strcmp (name,[o classname]))
for (i = 0; i < [self count]; i++) {
o = [self objectAtIndex: i];
if (!strcmp (name, [o classname]))
return o;
}
return nullclass;
}
@end

View file

@ -24,25 +24,25 @@ extern InspectorControl *inspcontrol_i;
{
IBOutlet NSView *inspectorView_i; // inspector view
IBOutlet NSView *inspectorSubview_i; // inspector view's current subview
// (gets replaced)
// (gets replaced)
id contentList; // List of contentviews (corresponds to
// insp_e enum order)
id contentList; // List of contentviews (corresponds to
// insp_e enum order)
id windowList; // List of Windows (corresponds to
// insp_e enum order)
id windowList; // List of Windows (corresponds to
// insp_e enum order)
id obj_textures_i; // TexturePalette object (for
// delegating)
id obj_genkeypair_i; // GenKeyPair object
id obj_textures_i; // TexturePalette object (for
// delegating)
id obj_genkeypair_i; // GenKeyPair object
NSPopUpButton *popUpButton_i; // PopUpList title button
NSMatrix *popUpMatrix_i; // PopUpList matrix
NSMutableArray *itemList; // List of popUp buttons
NSPopUpButton *popUpButton_i; // PopUpList title button
NSMatrix *popUpMatrix_i; // PopUpList matrix
NSMutableArray *itemList; // List of popUp buttons
IBOutlet NSTextView *helpView;
insp_e currentInspectorType; // keep track of current inspector
insp_e currentInspectorType; // keep track of current inspector
//
// Add id's here for new inspectors
@ -65,7 +65,7 @@ extern InspectorControl *inspcontrol_i;
IBOutlet id <NSMenuItem> itemPrefs_i; // preferences
IBOutlet id <NSMenuItem> itemSettings_i; // project settings
IBOutlet id <NSMenuItem> itemOutput_i; // bsp output
IBOutlet id <NSMenuItem> itemHelp_i; // docs
IBOutlet id <NSMenuItem> itemHelp_i; // docs
}
- (IBAction) changeInspector: (id)sender;

View file

@ -7,7 +7,7 @@
#include "TexturePalette.h"
#include "Preferences.h"
InspectorControl *inspcontrol_i;
InspectorControl *inspcontrol_i;
@interface CustomView: NSView
@end
@ -100,10 +100,8 @@ InspectorControl *inspcontrol_i;
NSRect r;
NSRect f;
if (which == currentInspectorType) {
if (which == currentInspectorType)
return;
}
currentInspectorType = which;
newView = [contentList objectAtIndex: which];

View file

@ -3,19 +3,19 @@
#include <AppKit/AppKit.h>
extern id keypairview_i;
extern id keypairview_i;
@interface KeypairView:NSView
@interface KeypairView: NSView
{
}
-calcViewSize;
- (id) calcViewSize;
#define SPACING 4
#define FONTSIZE 12
#define EXTRASPC 2
#define SPACING 4
#define FONTSIZE 12
#define EXTRASPC 2
#define LINEHEIGHT 16
#define LINEHEIGHT 16
@end

View file

@ -1,10 +1,9 @@
#include "KeypairView.h"
#include "Map.h"
#include "Entity.h"
#include "Things.h"
id keypairview_i;
id keypairview_i;
@implementation KeypairView
/*
@ -12,20 +11,19 @@ id keypairview_i;
initWithFrame:
==================
*/
- initWithFrame:(NSRect) frameRect
- (id) initWithFrame: (NSRect)frameRect
{
[super initWithFrame:frameRect];
[super initWithFrame: frameRect];
keypairview_i = self;
return self;
}
-(BOOL) isFlipped
- (BOOL) isFlipped
{
return YES;
}
-calcViewSize
- (id) calcViewSize
{
NSRect b;
NSPoint pt;
@ -37,17 +35,17 @@ initWithFrame:
b = [[self superview] bounds];
b.size.height = LINEHEIGHT * count + SPACING;
[self setFrameSize:b.size];
[self setFrameSize: b.size];
pt.x = pt.y = 0;
[self scrollPoint:pt];
[self scrollPoint: pt];
return self;
}
-drawRect: (NSRect) rects
- (id) drawRect: (NSRect)rects
{
epair_t *pair;
epair_t *pair;
int y;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
[[NSColor lightGrayColor] set];
NSRectFill (NSMakeRect (0, 0, _bounds.size.width, _bounds.size.height));
@ -55,11 +53,12 @@ initWithFrame:
[[NSFont systemFontOfSize: FONTSIZE] set];
[[NSColor blackColor] set];
pair =[[map_i currentEntity] epairs];
pair = [[map_i currentEntity] epairs];
y = _bounds.size.height - LINEHEIGHT;
for (; pair; pair = pair->next) {
NSString *key = [NSString stringWithCString: pair->key];
NSString *value = [NSString stringWithCString: pair->value];
for ( ; pair; pair = pair->next) {
NSString *key = [NSString stringWithCString: pair->key];
NSString *value = [NSString stringWithCString: pair->value];
[key drawAtPoint: NSMakePoint (SPACING, y) withAttributes: attribs];
[value drawAtPoint: NSMakePoint (100, y) withAttributes: attribs];
y -= LINEHEIGHT;
@ -68,18 +67,18 @@ initWithFrame:
return self;
}
-(void) mouseDown:(NSEvent *) theEvent
- (void) mouseDown: (NSEvent *)theEvent
{
NSPoint loc;
int i;
epair_t *p;
epair_t *p;
loc =[theEvent locationInWindow];
loc =[self convertPoint: loc fromView:NULL];
loc = [theEvent locationInWindow];
loc = [self convertPoint: loc fromView: NULL];
i = (_bounds.size.height - loc.y - 4) / LINEHEIGHT;
p =[[map_i currentEntity] epairs];
p = [[map_i currentEntity] epairs];
while (i) {
p = p->next;
if (!p)
@ -87,7 +86,7 @@ initWithFrame:
i--;
}
if (p)
[things_i setSelectedKey:p];
[things_i setSelectedKey: p];
return;
}

View file

@ -7,70 +7,70 @@
// Map is a list of Entity objects
extern id map_i;
extern id map_i;
@interface Map:NSMutableArray
@interface Map: NSMutableArray
{
NSMutableArray *array;
id currentEntity;
id oldselection; // temp when loading a new map
float minz, maxz;
NSMutableArray *array;
id currentEntity;
id oldselection; // temp when loading a new map
float minz, maxz;
}
-newMap;
- (id) newMap;
-writeStats;
- (id) writeStats;
-readMapFile:(const char *) fname;
-writeMapFile:(const char *)fname useRegion:(BOOL) reg;
- (id) readMapFile: (const char *)fname;
- (id) writeMapFile: (const char *)fname useRegion: (BOOL)reg;
-entityConnect: (vec3_t) p1:(vec3_t) p2;
- (id) entityConnect: (vec3_t)p1: (vec3_t)p2;
-selectRay: (vec3_t) p1: (vec3_t) p2:(BOOL) ef;
-grabRay: (vec3_t) p1:(vec3_t) p2;
-setTextureRay: (vec3_t) p1: (vec3_t) p2:(BOOL) allsides;
-getTextureRay: (vec3_t) p1:(vec3_t) p2;
- (id) selectRay: (vec3_t)p1: (vec3_t)p2: (BOOL)ef;
- (id) grabRay: (vec3_t)p1: (vec3_t)p2;
- (id) setTextureRay: (vec3_t)p1: (vec3_t)p2: (BOOL)allsides;
- (id) getTextureRay: (vec3_t)p1: (vec3_t)p2;
-currentEntity;
-setCurrentEntity:ent;
- (id) currentEntity;
- (id) setCurrentEntity: ent;
-(float) currentMinZ;
-setCurrentMinZ:(float) m;
-(float) currentMaxZ;
-setCurrentMaxZ:(float) m;
- (float) currentMinZ;
- (id) setCurrentMinZ: (float)m;
- (float) currentMaxZ;
- (id) setCurrentMaxZ: (float)m;
-(int) numSelected;
-selectedBrush; // returns the first selected brush
- (int) numSelected;
- (id) selectedBrush; // returns the first selected brush
//
// operations on current selection
//
-makeSelectedPerform:(SEL) sel;
-makeUnselectedPerform:(SEL) sel;
-makeAllPerform:(SEL) sel;
-makeGlobalPerform:(SEL) sel; // in and out of region
- (id) makeSelectedPerform: (SEL)sel;
- (id) makeUnselectedPerform: (SEL)sel;
- (id) makeAllPerform: (SEL)sel;
- (id) makeGlobalPerform: (SEL)sel; // in and out of region
-cloneSelection:sender;
- (id) cloneSelection: sender;
-makeEntity:sender;
- (id) makeEntity: sender;
-subtractSelection:sender;
- (id) subtractSelection: sender;
-selectCompletelyInside:sender;
-selectPartiallyInside:sender;
- (id) selectCompletelyInside: sender;
- (id) selectPartiallyInside: sender;
-tallBrush:sender;
-shortBrush:sender;
- (id) tallBrush: sender;
- (id) shortBrush: sender;
-rotate_x:sender;
-rotate_y:sender;
-rotate_z:sender;
- (id) rotate_x: sender;
- (id) rotate_y: sender;
- (id) rotate_z: sender;
-flip_x:sender;
-flip_y:sender;
-flip_z:sender;
- (id) flip_x: sender;
- (id) flip_y: sender;
- (id) flip_z: sender;
-selectCompleteEntity:sender;
- (id) selectCompleteEntity: sender;
@end

File diff suppressed because it is too large Load diff

View file

@ -3,15 +3,16 @@
#include <AppKit/AppKit.h>
@interface PopScrollView:NSScrollView
@interface PopScrollView: NSScrollView
{
id button1, button2;
id button1, button2;
}
-initWithFrame:(NSRect)
frameRect button1:b1 button2:b2;
- (id) initWithFrame: (NSRect)frameRect
button1: b1
button2: b2;
-tile;
- (id) tile;
@end
#endif // PopScrollView_h

View file

@ -1,4 +1,3 @@
#include "PopScrollView.h"
@implementation PopScrollView
@ -9,23 +8,26 @@ initWithFrame: button:
Initizes a scroll view with a button at it's lower right corner
====================
*/
- initWithFrame:(NSRect)
frameRect button1:b1 button2:b2 {
[super initWithFrame:frameRect];
- (id) initWithFrame: (NSRect)frameRect
button1: b1
button2: b2
{
[super initWithFrame: frameRect];
[self addSubview:b1];
[self addSubview:b2];
[self addSubview: b1];
[self addSubview: b2];
button1 = b1;
button2 = b2;
[self setHasHorizontalScroller:YES];
[self setHasVerticalScroller:YES];
[self setHasHorizontalScroller: YES];
[self setHasVerticalScroller: YES];
[self setBorderType:NSBezelBorder];
[self setBorderType: NSBezelBorder];
return self;
}
/*
================
tile
@ -33,49 +35,48 @@ tile
Adjust the size for the pop up scale menu
=================
*/
-tile
- (id) tile
{
NSRect scrollerframe;
NSRect buttonframe, buttonframe2;
NSRect newframe;
NSRect scrollerframe;
NSRect buttonframe, buttonframe2;
NSRect newframe;
[super tile];
buttonframe =[button1 frame];
buttonframe2 =[button2 frame];
scrollerframe =[_horizScroller frame];
buttonframe = [button1 frame];
buttonframe2 = [button2 frame];
scrollerframe = [_horizScroller frame];
newframe.origin.y = scrollerframe.origin.y;
newframe.origin.x = scrollerframe.origin.x + scrollerframe.size.width - buttonframe.size.width;
newframe.origin.x = scrollerframe.origin.x + scrollerframe.size.width -
buttonframe.size.width;
newframe.size.width = buttonframe.size.width;
newframe.size.height = scrollerframe.size.height;
scrollerframe.size.width -= newframe.size.width;
[button1 setFrame:newframe];
[button1 setFrame: newframe];
newframe.size.width = buttonframe2.size.width;
newframe.origin.x -= newframe.size.width;
[button2 setFrame:newframe];
[button2 setFrame: newframe];
scrollerframe.size.width -= newframe.size.width;
[_horizScroller setFrame:scrollerframe];
[_horizScroller setFrame: scrollerframe];
return self;
}
/*
- superviewSizeChanged:(const NSSize *)oldSize
- (id) superviewSizeChanged: (const NSSize *)oldSize
{
[super superviewSizeChanged: oldSize];
[[self docView] newSuperBounds];
return self;
[super superviewSizeChanged: oldSize];
[[self docView] newSuperBounds];
return self;
}
*/
-(BOOL) acceptsFirstResponder
- (BOOL) acceptsFirstResponder
{
return YES;
}
@end

View file

@ -3,84 +3,82 @@
#include <AppKit/AppKit.h>
extern id preferences_i;
extern id preferences_i;
extern float lightaxis[3];
extern float lightaxis[3];
// these are personal preferences saved in NeXT defaults, not project
// parameters saved in the quake.qe_project file
@interface Preferences:NSObject
@interface Preferences: NSObject
{
id bspSound_i; // actual sound object
id bspSound_i; // actual sound object
// internal state
char projectpath[1024];
char bspSound[1024];
char projectpath[1024];
char bspSound[1024];
BOOL brushOffset;
BOOL showBSP;
BOOL brushOffset;
BOOL showBSP;
float xlight;
float ylight;
float zlight; // 0.0 - 1.0
float xlight;
float ylight;
float zlight; // 0.0 - 1.0
int startwad; // 0 - 2
int startwad; // 0 - 2
// UI targets
id startproject_i; // TextField
id startproject_i; // TextField
id bspSoundField_i; // TextField of bspSound
id bspSoundField_i; // TextField of bspSound
id brushOffset_i; // Brush Offset checkbox
id showBSP_i; // Show BSP Output checkbox
id brushOffset_i; // Brush Offset checkbox
id showBSP_i; // Show BSP Output checkbox
id startwad_i; // which wad to load at startup
id startwad_i; // which wad to load at startup
id xlight_i; // X-side lighting
id ylight_i; // Y-side lighting
id zlight_i; // Z-side lighting
id xlight_i; // X-side lighting
id ylight_i; // Y-side lighting
id zlight_i; // Z-side lighting
NSUserDefaults *prefs;
NSUserDefaults *prefs;
}
-readDefaults;
- (id) readDefaults;
//
// validate and set methods called by UI or defaults
//
-setProjectPath:(const char *) path;
-setBspSoundPath:(const char *) path; // set the path of the soundfile
// externally
-setShowBSP:(int) state; // set the state of ShowBSP
-setBrushOffset:(int) state; // set the state of BrushOffset
-setStartWad:(int) value; // set start wad (0-2)
-setXlight:(float) value; // set Xlight value for CameraView
-setYlight:(float) value; // set Ylight value for CameraView
-setZlight:(float) value; // set Zlight value for CameraView
- (id) setProjectPath: (const char *)path;
- (id) setBspSoundPath: (const char *)path; // set the path of the soundfile
- (id) setShowBSP: (int)state; // set the state of ShowBSP
- (id) setBrushOffset: (int)state; // set the state of BrushOffset
- (id) setStartWad: (int)value; // set start wad (0-2)
- (id) setXlight: (float)value; // set Xlight value for CameraView
- (id) setYlight: (float)value; // set Ylight value for CameraView
- (id) setZlight: (float)value; // set Zlight value for CameraView
//
// UI targets
//
-setBspSound:sender; // use OpenPanel to select sound
-setCurrentProject:sender; // make current roject the default
-UIChanged:sender; // target for all checks and fields
- (id) setBspSound: sender; // use OpenPanel to select sound
- (id) setCurrentProject: sender; // make current project the default
- (id) UIChanged: sender; // target for all checks and fields
//
// methods used by other objects to retreive defaults
//
-playBspSound;
- (id) playBspSound;
-(const char *) getProjectPath;
-(int) getBrushOffset; // get the state
-(int) getShowBSP; // get the state
- (const char *) getProjectPath;
- (int) getBrushOffset; // get the state
- (int) getShowBSP; // get the state
-(float) getXlight; // get Xlight value
-(float) getYlight; // get Ylight value
-(float) getZlight; // get Zlight value
-(int) getStartWad;
- (float) getXlight; // get Xlight value
- (float) getYlight; // get Ylight value
- (float) getZlight; // get Zlight value
- (int) getStartWad;
@end
#endif // Preferences_h

View file

@ -8,20 +8,21 @@
#include "QuakeEd.h"
#include "Project.h"
id preferences_i;
id preferences_i;
#define DEFOWNER "QuakeEd2"
#define DEFOWNER "QuakeEd2"
float lightaxis[3] = { 1, 0.6, 0.75 };
float lightaxis[3] = {1, 0.6, 0.75};
@implementation Preferences
void
WriteStringDefault (id prefs, const char *name, const char *value)
{
NSString *key = [NSString stringWithCString: name];
NSString *val = [NSString stringWithCString: value];
[prefs setObject:val forKey:key];
NSString *key = [NSString stringWithCString: name];
NSString *val = [NSString stringWithCString: value];
[prefs setObject: val forKey: key];
}
void
@ -30,12 +31,12 @@ WriteNumericDefault (id prefs, const char *name, float value)
WriteStringDefault (prefs, name, va ("%f", value));
}
-init
- (id) init
{
[super init];
preferences_i = self;
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
WriteStringDefault (defaults, "ProjectPath", "");
WriteStringDefault (defaults, "BspSoundPath", "");
@ -47,7 +48,7 @@ WriteNumericDefault (id prefs, const char *name, float value)
WriteNumericDefault (defaults, "Zlight", 0);
prefs = [[NSUserDefaults standardUserDefaults] retain];
[prefs registerDefaults:defaults];
[prefs registerDefaults: defaults];
return self;
}
@ -56,6 +57,7 @@ _atoi (const char *c)
{
if (!c)
return 0;
return atoi (c);
}
@ -64,88 +66,89 @@ _atof (const char *c)
{
if (!c)
return 0;
return atof (c);
}
//
// Read in at start of program
//
-readDefaults
- (id) readDefaults
{
const char *string;
const char *string;
float value = 0;
string = [[prefs stringForKey: @"ProjectPath"] cString];
[self setProjectPath:string];
[self setProjectPath: string];
string = [[prefs stringForKey: @"BspSoundPath"] cString];
[self setBspSoundPath:string];
[self setBspSoundPath: string];
string = [[prefs stringForKey: @"ShowBSPOutput"] cString];
value = _atoi (string);
[self setShowBSP:value];
[self setShowBSP: value];
string = [[prefs stringForKey: @"OffsetBrushCopy"] cString];
value = _atoi (string);
[self setBrushOffset:value];
[self setBrushOffset: value];
string = [[prefs stringForKey: @"StartWad"] cString];
value = _atoi (string);
[self setStartWad:value];
[self setStartWad: value];
string = [[prefs stringForKey: @"Xlight"] cString];
value = _atof (string);
[self setXlight:value];
[self setXlight: value];
string = [[prefs stringForKey: @"Ylight"] cString];
value = _atof (string);
[self setYlight:value];
[self setYlight: value];
string = [[prefs stringForKey: @"Zlight"] cString];
value = _atof (string);
[self setZlight:value];
[self setZlight: value];
return self;
}
-setProjectPath:(const char *) path
- (id) setProjectPath: (const char *)path
{
if (!path)
path = "";
strcpy (projectpath, path);
[startproject_i setStringValue: [NSString stringWithCString:path]];
[startproject_i setStringValue: [NSString stringWithCString: path]];
WriteStringDefault (prefs, "ProjectPath", path);
return self;
}
-setCurrentProject:sender
- (id) setCurrentProject: sender
{
[startproject_i setStringValue: [NSString stringWithCString:[project_i
currentProjectFile]]];
[self UIChanged:self];
[startproject_i setStringValue: [NSString stringWithCString: [project_i
currentProjectFile
]]];
[self UIChanged: self];
return self;
}
-(const char *) getProjectPath
- (const char *) getProjectPath
{
return projectpath;
}
//
//===============================================
// ===============================================
// BSP sound stuff
//===============================================
// ===============================================
//
// Set the BSP sound using an OpenPanel
//
-setBspSound:sender
- (id) setBspSound: sender
{
id panel;
NSString *types[] = { @"snd" };
NSString *types[] = {@"snd"};
int rtn;
NSArray *filenames;
NSArray *filenames;
char path[1024], file[64];
panel = [NSOpenPanel new];
@ -153,37 +156,36 @@ _atof (const char *c)
// XXX ExtractFilePath (bspSound, path);
// XXX ExtractFileBase (bspSound, file);
rtn = [panel runModalForDirectory: [NSString stringWithCString:path]
file: [NSString stringWithCString:file]
types: [NSArray arrayWithObjects: types count:1]];
rtn = [panel runModalForDirectory: [NSString stringWithCString: path]
file: [NSString stringWithCString: file]
types: [NSArray arrayWithObjects: types count: 1]
];
if (rtn) {
filenames =[panel filenames];
strcpy (bspSound,[[panel directory] cString]);
filenames = [panel filenames];
strcpy (bspSound, [[panel directory] cString]);
strcat (bspSound, "/");
strcat (bspSound,[[filenames objectAtIndex:0] cString]);
[self setBspSoundPath:bspSound];
strcat (bspSound, [[filenames objectAtIndex: 0] cString]);
[self setBspSoundPath: bspSound];
[self playBspSound];
}
return self;
}
//
// Play the BSP sound
//
-playBspSound
- (id) playBspSound
{
[bspSound_i play];
return self;
}
//
// Set the bspSound path
//
-setBspSoundPath:(const char *) path
- (id) setBspSoundPath: (const char *)path
{
if (!path)
path = "";
@ -193,30 +195,32 @@ _atof (const char *c)
[bspSound_i release];
bspSound_i = nil;
}
if (path[0] && access (path, R_OK))
bspSound_i =[[NSSound alloc] initWithContentsOfFile: [NSString stringWithCString:bspSound] byReference: YES];
if (!bspSound_i) {
return self;
if (path[0] && access (path, R_OK)) {
bspSound_i =
[[NSSound alloc] initWithContentsOfFile: [NSString stringWithCString:
bspSound] byReference: YES];
}
if (!bspSound_i)
return self;
[bspSoundField_i setStringValue: [NSString stringWithCString:bspSound]];
[bspSoundField_i setStringValue: [NSString stringWithCString: bspSound]];
WriteStringDefault (prefs, "BspSoundPath", bspSound);
return self;
}
//===============================================
// ===============================================
// Show BSP Output management
//===============================================
// ===============================================
//
// Set the state
//
-setShowBSP:(int) state
- (id) setShowBSP: (int)state
{
showBSP = state;
[showBSP_i setIntValue:state];
[showBSP_i setIntValue: state];
WriteNumericDefault (prefs, "ShowBSPOutput", showBSP);
return self;
@ -225,23 +229,22 @@ _atof (const char *c)
//
// Get the state
//
-(int) getShowBSP
- (int) getShowBSP
{
return showBSP;
}
//===============================================
// ===============================================
// "Offset Brush ..." management
//===============================================
// ===============================================
//
// Set the state
//
-setBrushOffset:(int) state
- (id) setBrushOffset: (int)state
{
brushOffset = state;
[brushOffset_i setIntValue:state];
[brushOffset_i setIntValue: state];
WriteNumericDefault (prefs, "OffsetBrushCopy", state);
return self;
}
@ -249,68 +252,67 @@ _atof (const char *c)
//
// Get the state
//
-(int) getBrushOffset
- (int) getBrushOffset
{
return brushOffset;
}
//===============================================
// ===============================================
// StartWad
//===============================================
// ===============================================
-setStartWad:(int) value // set start wad (0-2)
- (id) setStartWad: (int)value // set start wad (0-2)
{
startwad = value;
if (startwad < 0 || startwad > 2)
startwad = 0;
[startwad_i selectCellAtRow: startwad column:0];
[startwad_i selectCellAtRow: startwad column: 0];
WriteNumericDefault (prefs, "StartWad", value);
return self;
}
-(int) getStartWad
- (int) getStartWad
{
return startwad;
}
//===============================================
// ===============================================
// X,Y,Z light values
//===============================================
// ===============================================
//
// Set the state
//
-setXlight:(float) value
- (id) setXlight: (float)value
{
xlight = value;
if (xlight < 0.25 || xlight > 1)
xlight = 0.6;
lightaxis[1] = xlight;
[xlight_i setFloatValue:xlight];
[xlight_i setFloatValue: xlight];
WriteNumericDefault (prefs, "Xlight", xlight);
return self;
}
-setYlight:(float) value
- (id) setYlight: (float)value
{
ylight = value;
if (ylight < 0.25 || ylight > 1)
ylight = 0.75;
lightaxis[2] = ylight;
[ylight_i setFloatValue:ylight];
[ylight_i setFloatValue: ylight];
WriteNumericDefault (prefs, "Ylight", ylight);
return self;
}
-setZlight:(float) value
- (id) setZlight: (float)value
{
zlight = value;
if (zlight < 0.25 || zlight > 1)
zlight = 1;
lightaxis[0] = zlight;
[zlight_i setFloatValue:zlight];
[zlight_i setFloatValue: zlight];
WriteNumericDefault (prefs, "Zlight", zlight);
return self;
}
@ -318,23 +320,21 @@ _atof (const char *c)
//
// Get the state
//
-(float) getXlight
- (float) getXlight
{
return[xlight_i floatValue];
return [xlight_i floatValue];
}
-(float) getYlight
- (float) getYlight
{
return[ylight_i floatValue];
return [ylight_i floatValue];
}
-(float) getZlight
- (float) getZlight
{
return[zlight_i floatValue];
return [zlight_i floatValue];
}
/*
============
UIChanged
@ -342,24 +342,23 @@ UIChanged
Grab all the current UI state
============
*/
-UIChanged:sender
- (id) UIChanged: sender
{
Sys_Printf ("defaults updated\n");
[self setProjectPath:[[startproject_i stringValue] cString]];
[self setBspSoundPath:[[bspSoundField_i stringValue] cString]];
[self setShowBSP:[showBSP_i intValue]];
[self setBrushOffset:[brushOffset_i intValue]];
[self setStartWad:[startwad_i selectedRow]];
[self setXlight:[xlight_i floatValue]];
[self setYlight:[ylight_i floatValue]];
[self setZlight:[zlight_i floatValue]];
[self setProjectPath: [[startproject_i stringValue] cString]];
[self setBspSoundPath: [[bspSoundField_i stringValue] cString]];
[self setShowBSP: [showBSP_i intValue]];
[self setBrushOffset: [brushOffset_i intValue]];
[self setStartWad: [startwad_i selectedRow]];
[self setXlight: [xlight_i floatValue]];
[self setYlight: [ylight_i floatValue]];
[self setZlight: [zlight_i floatValue]];
[map_i makeGlobalPerform:@selector (flushTextures)];
[map_i makeGlobalPerform: @selector (flushTextures)];
[quakeed_i updateAll];
return self;
}
@end

View file

@ -4,111 +4,114 @@
#include <AppKit/AppKit.h>
#include <sys/stat.h>
#define BASEPATHKEY "basepath"
#define MAPNAMESKEY "maps"
#define DESCKEY "desc"
#define WADSKEY "wads"
#define BSPFULLVIS "bspfullvis"
#define BSPFASTVIS "bspfastvis"
#define BSPNOVIS "bspnovis"
#define BSPRELIGHT "bsprelight"
#define BSPLEAKTEST "bspleaktest"
#define BSPENTITIES "bspentities"
#define BASEPATHKEY "basepath"
#define MAPNAMESKEY "maps"
#define DESCKEY "desc"
#define WADSKEY "wads"
#define BSPFULLVIS "bspfullvis"
#define BSPFASTVIS "bspfastvis"
#define BSPNOVIS "bspnovis"
#define BSPRELIGHT "bsprelight"
#define BSPLEAKTEST "bspleaktest"
#define BSPENTITIES "bspentities"
#define SUBDIR_ENT "progs" // subdir names in heirarchy
#define SUBDIR_MAPS "maps"
#define SUBDIR_GFX "gfx"
#define SUBDIR_ENT "progs" // subdir names in heirarchy
#define SUBDIR_MAPS "maps"
#define SUBDIR_GFX "gfx"
extern id project_i;
extern id project_i;
@interface Project:NSObject
@interface Project: NSObject
{
id projectInfo; // dictionary storage of project info
id projectInfo; // dictionary storage of project info
id basepathinfo_i; // outlet to base path info textfield
id mapbrowse_i; // outlet to QuakeEd Maps browser
id currentmap_i; // outlet to current map textfield
id mapList; // list of map names (Storage)
id descList; // list of map descriptions (Storage)
id wadList; // list of wad names (Storage)
id basepathinfo_i; // outlet to base path info textfield
id mapbrowse_i; // outlet to QuakeEd Maps browser
id currentmap_i; // outlet to current map textfield
id mapList; // list of map names (Storage)
id descList; // list of map descriptions (Storage)
id wadList; // list of wad names (Storage)
id pis_panel_i; // outlet to Project Info Settings
// (PIS) panel
id pis_panel_i; // outlet to Project Info Settings (PIS)
// panel
id pis_basepath_i; // outlet to PIS->base path
id pis_wads_i; // outlet to PIS->wad browser
id pis_fullvis_i; // outlet to PIS->full vis command
id pis_fastvis_i; // outlet to PIS->fast vis command
id pis_novis_i; // outlet to PIS->no vis command
id pis_relight_i; // outlet to PIS->relight command
id pis_leaktest_i; // outlet to PIS->leak test command
id pis_basepath_i; // outlet to PIS->base path
id pis_wads_i; // outlet to PIS->wad browser
id pis_fullvis_i; // outlet to PIS->full vis command
id pis_fastvis_i; // outlet to PIS->fast vis command
id pis_novis_i; // outlet to PIS->no vis command
id pis_relight_i; // outlet to PIS->relight command
id pis_leaktest_i; // outlet to PIS->leak test command
id BSPoutput_i; // outlet to Text
id BSPoutput_i; // outlet to Text
char path_projectinfo[128]; // path of QE_Project file
char path_projectinfo[128]; // path of QE_Project file
char path_basepath[128]; // base path of heirarchy
char path_basepath[128]; // base path of heirarchy
char path_progdir[128]; // derived from basepath
char path_mapdirectory[128]; // derived from basepath
char path_finalmapdir[128]; // derived from basepath
char path_progdir[128]; // derived from basepath
char path_mapdirectory[128]; // derived from basepath
char path_finalmapdir[128]; // derived from basepath
char path_wad8[128]; // path of texture WAD for cmd-8 key
char path_wad9[128]; // path of texture WAD for cmd-9 key
char path_wad0[128]; // path of texture WAD for cmd-0 key
char path_wad8[128]; // path of texture WAD for cmd-8 key
char path_wad9[128]; // path of texture WAD for cmd-9 key
char path_wad0[128]; // path of texture WAD for cmd-0 key
char string_fullvis[1024]; // cmd-line parm
char string_fastvis[1024]; // cmd-line parm
char string_novis[1024]; // cmd-line parm
char string_relight[1024]; // cmd-line parm
char string_leaktest[1024]; // cmd-line parm
char string_entities[1024]; // cmd-line parm
char string_fullvis[1024]; // cmd-line parm
char string_fastvis[1024]; // cmd-line parm
char string_novis[1024]; // cmd-line parm
char string_relight[1024]; // cmd-line parm
char string_leaktest[1024]; // cmd-line parm
char string_entities[1024]; // cmd-line parm
int showDescriptions; // 1 = show map descs in browser
int showDescriptions; // 1 = show map descs in browser
time_t lastModified; // last time project file was modified
time_t lastModified; // last time project file was modified
}
-initProject;
-initVars;
- (id) initProject;
- (id) initVars;
-(const char *) currentProjectFile;
- (const char *) currentProjectFile;
-setTextureWad:(const char *) wf;
- (id) setTextureWad: (const char *)wf;
-addToOutput:(const char *) string;
-clearBspOutput:sender;
-initProjSettings;
-changeChar:(char) f to:(char) t in:(id) obj;
- (id) addToOutput: (const char *)string;
- (id) clearBspOutput: (id)sender;
- (id) initProjSettings;
- (id) changeChar: (char)f
to: (char)t
in: (id)obj;
-(int) searchForString:(const char *) str in:(id) obj;
- (int) searchForString: (const char *)str
in: (id)obj;
-parseProjectFile; // read defaultsdatabase for project
// path
-openProjectFile:(const char *) path; // called by openProject and newProject
-openProject;
-clickedOnMap:sender; // called if clicked on map in browser
-clickedOnWad:sender; // called if clicked on wad in browser
- (id) parseProjectFile; // read defaultsdatabase for project path
- (id) openProjectFile: (const char *)path; // called by openProject, newProject
- (id) openProject;
- (id) clickedOnMap: sender; // called if clicked on map in browser
- (id) clickedOnWad: sender; // called if clicked on wad in browser
// methods to querie the project file
//
// methods to query the project file
//
- (const char *) getMapDirectory;
- (const char *) getFinalMapDirectory;
- (const char *) getProgDirectory;
-(const char *) getMapDirectory;
-(const char *) getFinalMapDirectory;
-(const char *) getProgDirectory;
- (const char *) getWAD8;
- (const char *) getWAD9;
- (const char *) getWAD0;
-(const char *) getWAD8;
-(const char *) getWAD9;
-(const char *) getWAD0;
- (const char *) getFullVisCmd;
- (const char *) getFastVisCmd;
- (const char *) getNoVisCmd;
- (const char *) getRelightCmd;
- (const char *) getLeaktestCmd;
- (const char *) getEntitiesCmd;
-(const char *) getFullVisCmd;
-(const char *) getFastVisCmd;
-(const char *) getNoVisCmd;
-(const char *) getRelightCmd;
-(const char *) getLeaktestCmd;
-(const char *) getEntitiesCmd;
@end void
changeString (char cf, char ct, char *string);
@end
void changeString (char cf, char ct, char *string);
#endif // Project_h

View file

@ -1,8 +1,8 @@
//======================================
// ======================================
//
// QuakeEd Project Management
//
//======================================
// ======================================
#include <unistd.h>
@ -18,28 +18,27 @@
#include "Things.h"
#include "TexturePalette.h"
id project_i;
id project_i;
@implementation Project
-init
- (id) init
{
project_i = self;
return self;
}
//===========================================================
// ===========================================================
//
// Project code
//
//===========================================================
-initVars
// ===========================================================
- (id) initVars
{
const char *s;
const char *pe;
char *ts;
const char *s;
const char *pe;
char *ts;
ts = strdup ([preferences_i getProjectPath]);
pe = QFS_SkipPath (ts);
@ -50,68 +49,67 @@ id project_i;
strcat (path_progdir, SUBDIR_ENT);
strcpy (path_mapdirectory, ts);
strcat (path_mapdirectory, SUBDIR_MAPS); // source dir
strcat (path_mapdirectory, SUBDIR_MAPS); // source dir
strcpy (path_finalmapdir, ts);
strcat (path_finalmapdir, SUBDIR_MAPS); // dest dir
strcat (path_finalmapdir, SUBDIR_MAPS); // dest dir
[basepathinfo_i setStringValue: [NSString stringWithCString:ts]];
// in Project Inspector
// in Project Inspector
[basepathinfo_i setStringValue: [NSString stringWithCString: ts]];
#if 0 // FIXME: for "out-of-tree" projects
if ((s =[projectInfo getStringFor:BASEPATHKEY])) {
#if 0 // FIXME: for "out-of-tree" projects ?
if ((s = [projectInfo getStringFor: BASEPATHKEY])) {
strcpy (path_basepath, s);
strcpy (path_progdir, s);
strcat (path_progdir, "/" SUBDIR_ENT);
strcpy (path_mapdirectory, s);
strcat (path_mapdirectory, "/" SUBDIR_MAPS); // source dir
strcat (path_mapdirectory, "/" SUBDIR_MAPS); // source dir
strcpy (path_finalmapdir, s);
strcat (path_finalmapdir, "/" SUBDIR_MAPS); // dest dir
strcat (path_finalmapdir, "/" SUBDIR_MAPS); // dest dir
[basepathinfo_i setStringValue:s];
// in Project Inspector
[basepathinfo_i setStringValue: s]; // in Project Inspector
}
#endif
if ((s =[projectInfo getStringFor:BSPFULLVIS])) {
if ((s = [projectInfo getStringFor: BSPFULLVIS])) {
strcpy (string_fullvis, s);
changeString ('@', '\"', string_fullvis);
}
if ((s =[projectInfo getStringFor:BSPFASTVIS])) {
if ((s = [projectInfo getStringFor: BSPFASTVIS])) {
strcpy (string_fastvis, s);
changeString ('@', '\"', string_fastvis);
}
if ((s =[projectInfo getStringFor:BSPNOVIS])) {
if ((s = [projectInfo getStringFor: BSPNOVIS])) {
strcpy (string_novis, s);
changeString ('@', '\"', string_novis);
}
if ((s =[projectInfo getStringFor:BSPRELIGHT])) {
if ((s = [projectInfo getStringFor: BSPRELIGHT])) {
strcpy (string_relight, s);
changeString ('@', '\"', string_relight);
}
if ((s =[projectInfo getStringFor:BSPLEAKTEST])) {
if ((s = [projectInfo getStringFor: BSPLEAKTEST])) {
strcpy (string_leaktest, s);
changeString ('@', '\"', string_leaktest);
}
if ((s =[projectInfo getStringFor:BSPENTITIES])) {
if ((s = [projectInfo getStringFor: BSPENTITIES])) {
strcpy (string_entities, s);
changeString ('@', '\"', string_entities);
}
// Build list of wads
wadList =[projectInfo parseMultipleFrom:WADSKEY];
// Build list of wads
wadList = [projectInfo parseMultipleFrom: WADSKEY];
// Build list of maps & descriptions
mapList =[projectInfo parseMultipleFrom:MAPNAMESKEY];
descList =[projectInfo parseMultipleFrom:DESCKEY];
[self changeChar: '_' to: ' ' in:descList];
mapList = [projectInfo parseMultipleFrom: MAPNAMESKEY];
descList = [projectInfo parseMultipleFrom: DESCKEY];
[self changeChar: '_' to: ' ' in: descList];
[self initProjSettings];
@ -121,14 +119,14 @@ id project_i;
//
// Init Project Settings fields
//
-initProjSettings
- (id) initProjSettings
{
[pis_basepath_i setStringValue: [NSString stringWithCString:path_basepath]];
[pis_fullvis_i setStringValue: [NSString stringWithCString:string_fullvis]];
[pis_fastvis_i setStringValue: [NSString stringWithCString:string_fastvis]];
[pis_novis_i setStringValue: [NSString stringWithCString:string_novis]];
[pis_relight_i setStringValue: [NSString stringWithCString:string_relight]];
[pis_leaktest_i setStringValue: [NSString stringWithCString:string_leaktest]];
[pis_basepath_i setStringValue: [NSString stringWithCString: path_basepath]];
[pis_fullvis_i setStringValue: [NSString stringWithCString: string_fullvis]];
[pis_fastvis_i setStringValue: [NSString stringWithCString: string_fastvis]];
[pis_novis_i setStringValue: [NSString stringWithCString: string_novis]];
[pis_relight_i setStringValue: [NSString stringWithCString: string_relight]];
[pis_leaktest_i setStringValue: [NSString stringWithCString: string_leaktest]];
return self;
}
@ -136,46 +134,46 @@ id project_i;
//
// Add text to the BSP Output window
//
-addToOutput:(const char *) string
- (id) addToOutput: (const char *)string
{
int end;
int end;
end =[BSPoutput_i textLength];
[BSPoutput_i replaceCharactersInRange: NSMakeRange (end, 0) withString: [NSString stringWithCString:string]];
end = [BSPoutput_i textLength];
[BSPoutput_i replaceCharactersInRange: NSMakeRange (end, 0)
withString: [NSString stringWithCString: string]];
end =[BSPoutput_i textLength];
[BSPoutput_i setSelectedRange:NSMakeRange (end, 0)];
end = [BSPoutput_i textLength];
[BSPoutput_i setSelectedRange: NSMakeRange (end, 0)];
// XXX [BSPoutput_i scrollSelToVisible];
return self;
}
-clearBspOutput:sender
- (id) clearBspOutput: sender
{
int end;
int end;
end =[BSPoutput_i textLength];
[BSPoutput_i replaceCharactersInRange: NSMakeRange (0, end) withString:@""];
end = [BSPoutput_i textLength];
[BSPoutput_i replaceCharactersInRange: NSMakeRange (0, end) withString: @""];
return self;
}
-print
- (id) print
{
// XXX [BSPoutput_i printPSCode:self];
return self;
}
-initProject
- (id) initProject
{
[self parseProjectFile];
if (projectInfo == NULL)
return self;
[self initVars];
[mapbrowse_i setReusesColumns:YES];
[mapbrowse_i setReusesColumns: YES];
[mapbrowse_i loadColumnZero];
[pis_wads_i setReusesColumns:YES];
[pis_wads_i setReusesColumns: YES];
[pis_wads_i loadColumnZero];
[things_i initEntities];
@ -186,15 +184,15 @@ id project_i;
//
// Change a character to another in a Storage list of strings
//
-changeChar:(char) f to:(char) t in:(id) obj
- (id) changeChar: (char)f to: (char)t in: (id)obj
{
int i;
int max;
char *string;
int i;
int max;
char *string;
max =[obj count];
max = [obj count];
for (i = 0; i < max; i++) {
string =[obj elementAt:i];
string = [obj elementAt: i];
changeString (f, t, string);
}
return self;
@ -204,56 +202,56 @@ id project_i;
// Fill the QuakeEd Maps or wads browser
// (Delegate method - delegated in Interface Builder)
//
-(void) browser: sender createRowsForColumn:(int) column inMatrix: matrix
- (void) browser: sender createRowsForColumn: (int)column inMatrix: matrix
{
id cell, list;
int max;
char *name;
int i;
id cell, list;
int max;
char *name;
int i;
if (sender == mapbrowse_i)
if (sender == mapbrowse_i) {
list = mapList;
else if (sender == pis_wads_i)
} else if (sender == pis_wads_i) {
list = wadList;
else {
} else {
list = nil;
Sys_Error ("Project: unknown browser to fill");
}
max =[list count];
max = [list count];
for (i = 0; i < max; i++) {
name =[list elementAt:i];
name = [list elementAt: i];
[matrix addRow];
cell =[matrix cellAtRow: i column:0];
[cell setStringValue: [NSString stringWithCString:name]];
[cell setLeaf:YES];
[cell setLoaded:YES];
cell = [matrix cellAtRow: i column: 0];
[cell setStringValue: [NSString stringWithCString: name]];
[cell setLeaf: YES];
[cell setLoaded: YES];
}
}
//
// Clicked on a map name or description!
//
-clickedOnMap:sender
- (id) clickedOnMap: sender
{
id matrix;
int row;
const char *fname;
id panel;
NSModalSession session;
id matrix;
int row;
const char *fname;
id panel;
NSModalSession session;
matrix =[sender matrixInColumn:0];
row =[matrix selectedRow];
matrix = [sender matrixInColumn: 0];
row = [matrix selectedRow];
fname = va ("%s/%s.map", path_mapdirectory,
(const char *) [mapList elementAt:row]); //XXX Storage
(const char *) [mapList elementAt: row]); // XXX Storage
panel = NSGetAlertPanel (@"Loading...",
@"Loading map. Please wait.", NULL, NULL, NULL);
@"Loading map. Please wait.", NULL, NULL, NULL);
session = [NSApp beginModalSessionForWindow: panel];
[NSApp runModalSession: session];
[quakeed_i doOpen:fname];
[quakeed_i doOpen: fname];
[NSApp endModalSession: session];
[panel close];
@ -261,27 +259,26 @@ id project_i;
return self;
}
-setTextureWad:(const char *) wf
- (id) setTextureWad: (const char *)wf
{
int i, c;
const char *name;
const char *name;
Sys_Printf ("loading %s\n", wf);
// set the row in the settings inspector wad browser
c =[wadList count];
c = [wadList count];
for (i = 0; i < c; i++) {
name = (const char *)[wadList elementAt:i]; // XXX Storage
name = (const char *) [wadList elementAt: i]; // XXX Storage
if (!strcmp (name, wf)) {
[[pis_wads_i matrixInColumn: 0] selectCellAtRow: i column:0];
[[pis_wads_i matrixInColumn: 0] selectCellAtRow: i column: 0];
break;
}
}
// update the texture inspector
[texturepalette_i initPaletteFromWadfile:wf];
[[map_i objectAtIndex: 0] setKey: "wad" toValue:wf];
[texturepalette_i initPaletteFromWadfile: wf];
[[map_i objectAtIndex: 0] setKey: "wad" toValue: wf];
// [inspcontrol_i changeInspectorTo:i_textures];
[quakeed_i updateAll];
@ -292,53 +289,54 @@ id project_i;
//
// Clicked on a wad name
//
-clickedOnWad:sender
- (id) clickedOnWad: sender
{
id matrix;
int row;
char *name;
id matrix;
int row;
char *name;
matrix =[sender matrixInColumn:0];
row =[matrix selectedRow];
matrix = [sender matrixInColumn: 0];
row = [matrix selectedRow];
name = (char *)[wadList elementAt:row]; // XXX Storage
[self setTextureWad:name];
name = (char *) [wadList elementAt: row]; // XXX Storage
[self setTextureWad: name];
return self;
}
//
// Read in the <name>.QE_Project file
//
-parseProjectFile
- (id) parseProjectFile
{
const char *path;
const char *path;
int rtn;
path =[preferences_i getProjectPath];
path = [preferences_i getProjectPath];
if (!path || !path[0] || access (path, 0)) {
rtn = NSRunAlertPanel (@"Project Error!",
@"A default project has not been found.\n",
@"Open Project", NULL, NULL);
if ([self openProject] == nil)
while (1) // can't run without a project
[NSApp terminate:self];
@"A default project has not been found.\n",
@"Open Project", NULL, NULL);
if ([self openProject] == nil) {
while (1)
[NSApp terminate: self]; // can't run without a project
}
return self;
}
[self openProjectFile:path];
[self openProjectFile: path];
return self;
}
//
// Loads and parses a project file
//
-openProjectFile:(const char *) path
- (id) openProjectFile: (const char *)path
{
FILE *fp;
struct stat s;
Sys_Printf ("openProjectFile: %s\n", path);
FILE *fp;
struct stat s;
Sys_Printf ("openProjectFile: %s\n", path);
strcpy (path_projectinfo, path);
projectInfo = NULL;
@ -349,13 +347,13 @@ Sys_Printf ("openProjectFile: %s\n", path);
stat (path, &s);
lastModified = s.st_mtime;
projectInfo =[(Dict *)[Dict alloc] initFromFile:fp];
projectInfo = [(Dict *)[Dict alloc] initFromFile: fp];
fclose (fp);
return self;
}
-(const char *) currentProjectFile
- (const char *) currentProjectFile
{
return path_projectinfo;
}
@ -363,167 +361,177 @@ Sys_Printf ("openProjectFile: %s\n", path);
//
// Open a project file
//
-openProject
- (id) openProject
{
const char *path;
const char *path;
id openpanel;
int rtn;
NSString *projtypes[] = { @"qpr" };
NSArray *filenames;
const char *dir;
NSString *projtypes[] = {@"qpr"};
NSArray *filenames;
const char *dir;
openpanel =[NSOpenPanel new];
// [openpanel allowMultipleFiles:NO];
// [openpanel chooseDirectories:NO];
rtn =[openpanel runModalForTypes: [NSArray arrayWithObjects: projtypes count:1]];
openpanel = [NSOpenPanel new];
// [openpanel allowMultipleFiles:NO];
// [openpanel chooseDirectories:NO];
rtn = [openpanel runModalForTypes: [NSArray arrayWithObjects: projtypes
count: 1]];
if (rtn == NSOKButton) {
filenames =[openpanel filenames];
dir =[[openpanel directory] cString];
filenames = [openpanel filenames];
dir = [[openpanel directory] cString];
dir = "";
path = va ("%s/%s", dir,[[filenames objectAtIndex:0] cString]);
path = va ("%s/%s", dir, [[filenames objectAtIndex: 0] cString]);
strcpy (path_projectinfo, path);
[self openProjectFile:path];
[self openProjectFile: path];
return self;
}
return nil;
}
//
// Search for a string in a List of strings
//
-(int) searchForString:(const char *) str in:(id) obj
- (int) searchForString: (const char *)str in: (id)obj
{
int i;
int max;
const char *s;
const char *s;
max =[obj count];
max = [obj count];
for (i = 0; i < max; i++) {
s = (const char *)[obj elementAt:i]; // XXX Storage?
s = (const char *) [obj elementAt: i]; // XXX Storage?
if (!strcmp (s, str))
return 1;
}
return 0;
}
-(const char *) getMapDirectory
- (const char *) getMapDirectory
{
return path_mapdirectory;
}
-(const char *) getFinalMapDirectory
- (const char *) getFinalMapDirectory
{
return path_finalmapdir;
}
-(const char *) getProgDirectory
- (const char *) getProgDirectory
{
return path_progdir;
}
//
// Return the WAD name for cmd-8
//
-(const char *) getWAD8
- (const char *) getWAD8
{
if (!path_wad8[0])
return NULL;
return path_wad8;
}
//
// Return the WAD name for cmd-9
//
-(const char *) getWAD9
- (const char *) getWAD9
{
if (!path_wad9[0])
return NULL;
return path_wad9;
}
//
// Return the WAD name for cmd-0
//
-(const char *) getWAD0
- (const char *) getWAD0
{
if (!path_wad0[0])
return NULL;
return path_wad0;
}
//
// Return the FULLVIS cmd string
//
-(const char *) getFullVisCmd
- (const char *) getFullVisCmd
{
if (!string_fullvis[0])
return NULL;
return string_fullvis;
}
//
// Return the FASTVIS cmd string
//
-(const char *) getFastVisCmd
- (const char *) getFastVisCmd
{
if (!string_fastvis[0])
return NULL;
return string_fastvis;
}
//
// Return the NOVIS cmd string
//
-(const char *) getNoVisCmd
- (const char *) getNoVisCmd
{
if (!string_novis[0])
return NULL;
return string_novis;
}
//
// Return the RELIGHT cmd string
//
-(const char *) getRelightCmd
- (const char *) getRelightCmd
{
if (!string_relight[0])
return NULL;
return string_relight;
}
//
// Return the LEAKTEST cmd string
//
-(const char *) getLeaktestCmd
- (const char *) getLeaktestCmd
{
if (!string_leaktest[0])
return NULL;
return string_leaktest;
}
-(const char *) getEntitiesCmd
- (const char *) getEntitiesCmd
{
if (!string_entities[0])
return NULL;
return string_entities;
}
@end
//====================================================
// ====================================================
// C Functions
//====================================================
// ====================================================
//
// Change a character to a different char in a string
//
void
void
changeString (char cf, char ct, char *string)
{
unsigned int j;
for (j = 0; j < strlen (string); j++)
for (j = 0; j < strlen (string); j++) {
if (string[j] == cf)
string[j] = ct;
}
}

View file

@ -3,106 +3,108 @@
#include <AppKit/AppKit.h>
extern id quakeed_i;
extern id quakeed_i;
extern BOOL filter_light, filter_path, filter_entities;
extern BOOL filter_clip_brushes, filter_water_brushes, filter_world;
extern BOOL filter_light, filter_path, filter_entities;
extern BOOL filter_clip_brushes, filter_water_brushes, filter_world;
extern id g_cmd_out_i;
extern id g_cmd_out_i;
double I_FloatTime (void);
void NopSound (void);
@interface QuakeEd:NSWindow
@interface QuakeEd: NSWindow
{
BOOL dirty;
char filename[1024]; // full path with .map extension
BOOL dirty;
char filename[1024]; // full path with .map extension
NSBitmapImageRep *cache[3];
NSRect cache_rect[3];
BOOL no_restore[3];
NSBitmapImageRep *cache[3];
NSRect cache_rect[3];
BOOL no_restore[3];
//
// UI objects
id brushcount_i;
id entitycount_i;
id regionbutton_i;
//
id brushcount_i;
id entitycount_i;
id regionbutton_i;
id show_coordinates_i;
id show_names_i;
id show_coordinates_i;
id show_names_i;
id filter_light_i;
id filter_path_i;
id filter_entities_i;
id filter_clip_i;
id filter_water_i;
id filter_world_i;
id filter_light_i;
id filter_path_i;
id filter_entities_i;
id filter_clip_i;
id filter_water_i;
id filter_world_i;
id cmd_in_i; // text fields
id cmd_out_i;
id cmd_in_i; // text fields
id cmd_out_i;
id xy_drawmode_i; // passed over to xyview after init
id xy_drawmode_i; // passed over to xyview after init
}
-setDefaultFilename;
-(const char *) currentFilename;
- (id) setDefaultFilename;
- (const char *) currentFilename;
-updateAll; // when a model has been changed
-updateCamera; // when the camera has moved
-updateXY;
-updateZ;
- (id) updateAll; // when a model has been changed
- (id) updateCamera; // when the camera has moved
- (id) updateXY;
- (id) updateZ;
-updateAll:sender;
- (id) updateAll: sender;
-(void)cameraNoRestore: (NSRect) rect;
-(void)xyNoRestore: (NSRect) rect;
-(void)zNoRestore: (NSRect) rect;
- (void) cameraNoRestore: (NSRect)rect;
- (void) xyNoRestore: (NSRect)rect;
- (void) zNoRestore: (NSRect)rect;
-newinstance; // force next flushwindow to clear all
// instance drawing
-redrawInstance; // erase and redraw all instance now
- (id) newinstance; // force next flushwindow to clear all
// instance drawing
- (id) redrawInstance; // erase and redraw all instance now
-appWillTerminate:sender;
- (id) appWillTerminate: sender;
-openProject:sender;
- (id) openProject: sender;
-textCommand:sender;
- (id) textCommand: sender;
-applyRegion:sender;
- (id) applyRegion: sender;
-(BOOL) dirty;
- (BOOL) dirty;
-clear:sender;
-centerCamera:sender;
-centerZChecker:sender;
- (id) clear: sender;
- (id) centerCamera: sender;
- (id) centerZChecker: sender;
-changeXYLookUp:sender;
- (id) changeXYLookUp: sender;
-setBrushRegion:sender;
-setXYRegion:sender;
- (id) setBrushRegion: sender;
- (id) setXYRegion: sender;
-open:sender;
-save:sender;
-saveAs:sender;
- (id) open: sender;
- (id) save: sender;
- (id) saveAs: sender;
-doOpen:(const char *) fname;
- (id) doOpen: (const char *)fname;
-saveBSP:(const char *)cmdline dialog:(BOOL)wt;
- (id) saveBSP: (const char *)cmdline dialog: (BOOL)wt;
-BSP_Full:sender;
-BSP_FastVis:sender;
-BSP_NoVis:sender;
-BSP_relight:sender;
-BSP_stop:sender;
-BSP_entities:sender;
- (id) BSP_Full: sender;
- (id) BSP_FastVis: sender;
- (id) BSP_NoVis: sender;
- (id) BSP_relight: sender;
- (id) BSP_stop: sender;
- (id) BSP_entities: sender;
-applicationDefined:(NSEvent *) theEvent;
- (id) applicationDefined: (NSEvent *)theEvent;
//
// UI querie for other objects
// UI query for other objects
//
-(BOOL) showCoordinates;
-(BOOL) showNames;
- (BOOL) showCoordinates;
- (BOOL) showNames;
@end
#endif // QuakeEd_h

File diff suppressed because it is too large Load diff

View file

@ -4,19 +4,18 @@
#include "QuakeEd.h"
@interface QuakeEdApp:NSApplication
-(void)sendEvent:(NSEvent *) evt;
@interface QuakeEdApp: NSApplication
- (void) sendEvent: (NSEvent *)evt;
@end
@implementation QuakeEdApp
-(void)sendEvent:(NSEvent *) evt;
- (void) sendEvent: (NSEvent *)evt;
{
if ([evt type] == NSApplicationDefined) {
if ([evt type] == NSApplicationDefined)
[quakeed_i applicationDefined: evt];
} else {
[super sendEvent:evt];
}
else
[super sendEvent: evt];
}
@end

View file

@ -7,96 +7,96 @@
#include "TexturePalette.h"
#define MAX_FACES 16
#define MAX_FACES 16
typedef struct {
int numpoints;
vec5_t points[8]; // variable sized
typedef struct {
int numpoints;
vec5_t points[8]; // variable sized
} winding_t;
#define MAX_POINTS_ON_WINDING 64
#define MAX_POINTS_ON_WINDING 64
typedef struct {
vec3_t normal;
float dist;
typedef struct {
vec3_t normal;
float dist;
} plane_t;
typedef struct {
typedef struct {
// implicit rep
vec3_t planepts[3];
texturedef_t texture;
vec3_t planepts[3];
texturedef_t texture;
// cached rep
plane_t plane;
qtexture_t *qtexture;
float light; // 0 - 1.0
winding_t *w;
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
#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
@interface SetBrush: NSObject
{
BOOL regioned; // not active
BOOL selected;
BOOL regioned; // not active
BOOL selected;
BOOL invalid; // not a proper polyhedron
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];
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;
- (SetBrush *) initOwner: (id)own
mins: (float *)mins
maxs: (float *)maxs
texture: (texturedef_t *)tex;
-initFromScript:(struct script_s *)script owner:own;
- (id) initFromScript: (struct script_s *)script
owner: (id)own;
-setMins:(float *)mins maxs:(float *)maxs;
- (id) setMins: (float *)mins maxs: (float *)maxs;
-parent;
-setParent:(id) p;
- (id) parent;
- (id) setParent: (id)p;
-setEntityColor:(vec3_t) color;
- (id) setEntityColor: (vec3_t)color;
-calcWindings;
- (id) calcWindings;
- (void) writeToFILE:(FILE *)f region:(BOOL)reg;
- (void) writeToFILE: (FILE *)f region: (BOOL)reg;
-(BOOL) selected;
-(BOOL) regioned;
- (BOOL) selected;
- (BOOL) regioned;
- (void) setSelected: (BOOL)s;
- (void) setRegioned: (BOOL)s;
- (void) getMins: (vec3_t)mins maxs: (vec3_t)maxs;
-(BOOL) containsPoint:(vec3_t) pt;
- (BOOL) containsPoint: (vec3_t)pt;
- (void) freeWindings;
-removeIfInvalid;
- (id) removeIfInvalid;
extern vec3_t region_min, region_max;
extern vec3_t region_min, region_max;
-newRegion;
- (id) newRegion;
-(texturedef_t *) texturedef;
-(texturedef_t *) texturedefForFace:(int) f;
- (void) setTexturedef:(texturedef_t *) tex;
- (void) setTexturedef:(texturedef_t *) tex forFace:(int) f;
- (texturedef_t *) texturedef;
- (texturedef_t *) texturedefForFace: (int)f;
- (void) setTexturedef: (texturedef_t *)tex;
- (void) setTexturedef: (texturedef_t *)tex forFace: (int)f;
- (void) XYDrawSelf;
- (void) ZDrawSelf;
@ -109,59 +109,59 @@ extern vec3_t region_min, region_max;
//
// single brush actions
//
extern int numcontrolpoints;
extern float *controlpoints[MAX_FACES * 3];
extern int numcontrolpoints;
extern float *controlpoints[MAX_FACES * 3];
- (void) getZdragface: (vec3_t)dragpoint;
- (void) getXYdragface: (vec3_t)dragpoint;
- (void) getXYShearPoints: (vec3_t)dragpoint;
-addFace:(face_t *) f;
- (id) addFace: (face_t *)f;
//
// multiple brush actions
//
- (void) carveByClipper;
extern vec3_t sb_translate;
extern vec3_t sb_translate;
- (void) translate;
extern id carve_in, carve_out;
extern id carve_in, carve_out;
- (void) select;
- (void) deselect;
- (void) remove;
- (void) flushTextures;
extern vec3_t sb_mins, sb_maxs;
extern vec3_t sb_mins, sb_maxs;
- (void) addToBBox;
extern vec3_t sel_x, sel_y, sel_z;
extern vec3_t sel_org;
extern vec3_t sel_x, sel_y, sel_z;
extern vec3_t sel_org;
- (void) transform;
- (void) flipNormals;
-carve;
- (id) carve;
- (void) setCarveVars;
extern id sb_newowner;
extern id sb_newowner;
- (void) moveToEntity;
- (void) takeCurrentTexture;
extern vec3_t select_min, select_max;
extern vec3_t select_min, select_max;
- (void) selectPartial;
- (void) selectComplete;
- (void) regionPartial;
- (void) regionComplete;
extern float sb_floor_dir, sb_floor_dist;
extern float sb_floor_dir, sb_floor_dist;
- (void) feetToFloor;

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,7 @@
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
@ -31,47 +31,50 @@
#include <AppKit/AppKit.h>
@interface Storage:NSObject
@interface Storage: NSObject
{
@public void *dataPtr; /* data of the Storage object */
const char *description; /* Element description */
NSUInteger numElements; /* Actual number of elements */
NSUInteger maxElements; /* Total allocated elements */
NSUInteger elementSize; /* Element size */
@public
void *dataPtr; /* data of the Storage object */
const char *description; /* Element description */
NSUInteger numElements; /* Actual number of elements */
NSUInteger maxElements; /* Total allocated elements */
NSUInteger elementSize; /* Element size */
}
/* Creating, freeing, initializing, and emptying */
-init;
-initCount:(NSUInteger) numSlots elementSize:(NSUInteger) sizeInBytes
description:(const char *) elemDesc;
-(void) dealloc;
-empty;
-copy;
- (id) init;
- (id) initCount: (NSUInteger)numSlots
elementSize: (NSUInteger)sizeInBytes
description: (const char *)elemDesc;
- (void) dealloc;
- (id) empty;
- (id) copy;
/* Manipulating the elements */
-(BOOL) isEqual:anObject;
-(const char *) description;
-(NSUInteger) count;
-(void *) elementAt:(NSUInteger) index;
-replaceElementAt:(NSUInteger) index with:(void *) anElement;
-setNumSlots:(NSUInteger) numSlots;
-setAvailableCapacity:(NSUInteger) numSlots;
-addElement:(void *) anElement;
-removeLastElement;
-insertElement:(void *) anElement at:(NSUInteger) index;
-removeElementAt:(NSUInteger) index;
- (BOOL) isEqual: anObject;
- (const char *) description;
- (NSUInteger) count;
- (void *) elementAt: (NSUInteger)index;
- (id) replaceElementAt: (NSUInteger)index
with: (void *)anElement;
- (id) setNumSlots: (NSUInteger)numSlots;
- (id) setAvailableCapacity: (NSUInteger)numSlots;
- (id) addElement: (void *)anElement;
- (id) removeLastElement;
- (id) insertElement: (void *)anElement
at: (NSUInteger)index;
- (id) removeElementAt: (NSUInteger)index;
/* old-style creation */
+new;
+newCount:(NSUInteger) count elementSize:(NSUInteger) sizeInBytes
description:(const char *) descriptor;
+ (id) new;
+ (id) newCount: (NSUInteger)count
elementSize: (NSUInteger)sizeInBytes
description: (const char *)descriptor;
@end
@ -79,5 +82,4 @@ typedef struct {
@defs (Storage)
} NXStorageId;
#endif /* __Storage_h_INCLUDE_GNU */

View file

@ -1,24 +1,24 @@
/* Implementation of Objective C NeXT-compatible Storage object
Copyright (C) 1993,1994, 1996 Free Software Foundation, Inc.
Copyright (C) 1993,1994, 1996 Free Software Foundation, Inc.
Written by: Kresten Krab Thorup <krab@iesd.auc.dk>
Dept. of Mathematics and Computer Science, Aalborg U., Denmark
Written by: Kresten Krab Thorup <krab@iesd.auc.dk>
Dept. of Mathematics and Computer Science, Aalborg U., Denmark
This file is part of the GNUstep Base Library.
This file is part of the GNUstep Base Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* #include <config.h> */
@ -26,29 +26,29 @@
#include <string.h>
#include <strings.h>
#define GNU_STORAGE_NTH(x,N) \
({ GNUStorageId* __s=(GNUStorageId*)(x); \
(void*)(((char*)__s->dataPtr)+(__s->elementSize*(N))); })
#define GNU_STORAGE_NTH(x, N) \
({GNUStorageId* __s = (GNUStorageId*) (x); \
(void*) (((char*) __s->dataPtr) + (__s->elementSize * (N))); })
#define STORAGE_NTH(N) GNU_STORAGE_NTH (self, N)
typedef struct {
typedef struct {
@defs (Storage)
} GNUStorageId;
@implementation Storage
+initialize
+ (id) initialize
{
if (self ==[Storage class])
[self setVersion:0]; /* beta release */
if (self == [Storage class])
[self setVersion: 0]; /* beta release */
return self;
}
// INITIALIZING, FREEING;
-initCount: (NSUInteger) numSlots elementSize: (NSUInteger) sizeInBytes description:(const char *)
elemDesc;
- (id) initCount: (NSUInteger)numSlots elementSize: (NSUInteger)sizeInBytes
description: (const char *)
elemDesc;
{
[super init];
numElements = numSlots;
@ -60,31 +60,29 @@ typedef struct {
return self;
}
-init
- (id) init
{
return[self initCount: 1 elementSize:sizeof (id)
description:@encode (id)];
return [self initCount: 1 elementSize: sizeof (id)
description: @encode (id)];
}
-(void) dealloc
- (void) dealloc
{
if (dataPtr)
free (dataPtr);
[super dealloc];
}
-(const char *) description
- (const char *) description
{
return description;
}
// COPYING;
-copy
- (id) copy
{
Storage *c =[super copy];
Storage *c = [super copy];
c->dataPtr = (void *) objc_malloc (maxElements * elementSize);
memcpy (c->dataPtr, dataPtr, numElements * elementSize);
@ -93,12 +91,12 @@ typedef struct {
// COMPARING TWO STORAGES;
-(BOOL) isEqual:anObject
- (BOOL) isEqual: anObject
{
if ([anObject isKindOfClass:[Storage class]]
&&[anObject count] ==[self count]
&& !memcmp (((GNUStorageId *) anObject)->dataPtr,
dataPtr, numElements * elementSize))
if ([anObject isKindOfClass: [Storage class]]
&& [anObject count] == [self count]
&& !memcmp (((GNUStorageId *) anObject)->dataPtr,
dataPtr, numElements * elementSize))
return YES;
else
return NO;
@ -112,7 +110,8 @@ _makeRoomForAnotherIfNecessary (Storage * self)
if (self->numElements == self->maxElements) {
self->maxElements *= 2;
self->dataPtr = (void *)
objc_realloc (self->dataPtr, self->maxElements * self->elementSize);
objc_realloc (self->dataPtr,
self->maxElements * self->elementSize);
}
}
@ -122,11 +121,12 @@ _shrinkIfDesired (Storage * self)
if (self->numElements < (self->maxElements / 2)) {
self->maxElements /= 2;
self->dataPtr = (void *)
objc_realloc (self->dataPtr, self->maxElements * self->elementSize);
objc_realloc (self->dataPtr,
self->maxElements * self->elementSize);
}
}
-setAvailableCapacity:(NSUInteger) numSlots
- (id) setAvailableCapacity: (NSUInteger)numSlots
{
if (numSlots > numElements) {
maxElements = numSlots;
@ -135,13 +135,13 @@ _shrinkIfDesired (Storage * self)
return self;
}
-setNumSlots:(NSUInteger) numSlots
- (id) setNumSlots: (NSUInteger)numSlots
{
if (numSlots > numElements) {
maxElements = numSlots;
dataPtr = (void *) objc_realloc (dataPtr, maxElements * elementSize);
bzero (STORAGE_NTH (numElements),
(maxElements - numElements) * elementSize);
(maxElements - numElements) * elementSize);
} else if (numSlots < numElements) {
numElements = numSlots;
_shrinkIfDesired (self);
@ -151,20 +151,20 @@ _shrinkIfDesired (Storage * self)
/* Manipulating objects by index */
#define CHECK_INDEX(IND) if (IND >= numElements) return 0
#define CHECK_INDEX(IND) if (IND >= numElements) return 0
-(NSUInteger) count
- (NSUInteger) count
{
return numElements;
}
-(void *) elementAt:(NSUInteger) index
- (void *) elementAt: (NSUInteger)index
{
CHECK_INDEX (index);
return STORAGE_NTH (index);
}
-addElement:(void *) anElement
- (id) addElement: (void *)anElement
{
_makeRoomForAnotherIfNecessary (self);
memcpy (STORAGE_NTH (numElements), anElement, elementSize);
@ -172,43 +172,45 @@ _shrinkIfDesired (Storage * self)
return self;
}
-insertElement:(void *)
anElement at:(NSUInteger) index
- (id) insertElement: (void *)
anElement at: (NSUInteger)index
{
NSUInteger i;
NSUInteger i;
CHECK_INDEX (index);
_makeRoomForAnotherIfNecessary (self);
#ifndef STABLE_MEMCPY
for (i = numElements; i >= index; i--)
memcpy (STORAGE_NTH (i + 1), STORAGE_NTH (i), elementSize);
#else
memcpy (STORAGE_NTH (index + 1),
STORAGE_NTH (index), elementSize * (numElements - index));
STORAGE_NTH (index), elementSize * (numElements - index));
#endif
memcpy (STORAGE_NTH (i), anElement, elementSize);
numElements++;
return self;
}
-removeElementAt:(NSUInteger) index
- (id) removeElementAt: (NSUInteger)index
{
NSUInteger i;
NSUInteger i;
CHECK_INDEX (index);
numElements--;
#ifndef STABLE_MEMCPY
for (i = index; i < numElements; i++)
memcpy (STORAGE_NTH (i), STORAGE_NTH (i + 1), elementSize);
#else
memcpy (STORAGE_NTH (index),
STORAGE_NTH (index + 1), elementSize * (numElements - index - 1));
STORAGE_NTH (index + 1), elementSize * (numElements - index - 1));
#endif
_shrinkIfDesired (self);
return self;
}
-removeLastElement
- (id) removeLastElement
{
if (numElements) {
numElements--;
@ -217,8 +219,8 @@ anElement at:(NSUInteger) index
return self;
}
-replaceElementAt:(NSUInteger)
index with:(void *) newElement
- (id) replaceElementAt: (NSUInteger)
index with: (void *)newElement
{
CHECK_INDEX (index);
memcpy (STORAGE_NTH (index), newElement, elementSize);
@ -227,7 +229,7 @@ index with:(void *) newElement
/* Emptying the Storage */
-empty
- (id) empty
{
numElements = 0;
maxElements = 1;
@ -235,16 +237,17 @@ index with:(void *) newElement
return self;
}
+new
+ (id) new
{
return[[self alloc] init];
return [[self alloc] init];
}
+newCount:(NSUInteger)
count elementSize:(NSUInteger) sizeInBytes
description:(const char *) descriptor
+ (id) newCount: (NSUInteger)
count elementSize: (NSUInteger)sizeInBytes
description: (const char *)descriptor
{
return[[self alloc] initCount: count elementSize: sizeInBytes description:descriptor];
return [[self alloc] initCount: count elementSize: sizeInBytes description:
descriptor];
}
@end

View file

@ -5,110 +5,109 @@
#include "QF/qtypes.h"
typedef union {
typedef union {
byte chan[4];
unsigned p;
} pixel32_t;
typedef struct {
char texture[16];
float rotate;
float shift[2];
float scale[2];
typedef struct {
char texture[16];
float rotate;
float shift[2];
float scale[2];
} texturedef_t;
typedef struct {
char name[16];
typedef struct {
char name[16];
int width;
int height;
NSBitmapImageRep *rep;
void *data;
pixel32_t flatcolor;
int width;
int height;
NSBitmapImageRep *rep;
void *data;
pixel32_t flatcolor;
} qtexture_t;
#define MAX_TEXTURES 1024
#define MAX_TEXTURES 1024
extern int tex_count;
extern qtexture_t qtextures[MAX_TEXTURES];
extern int tex_count;
extern qtexture_t qtextures[MAX_TEXTURES];
qtexture_t *TEX_ForName (const char *name);
typedef struct {
NSImageRep *image;
typedef struct {
NSImageRep *image;
NSRect r;
char *name;
char *name;
int index;
int display; // flag (on/off)
int display; // flag (on/off)
} texpal_t;
#define TEX_INDENT 10
#define TEX_SPACING 16
#define TEX_INDENT 10
#define TEX_SPACING 16
extern id texturepalette_i;
extern id texturepalette_i;
@interface TexturePalette:NSObject
@interface TexturePalette: NSObject
{
char currentwad[1024];
id textureList_i;
id textureView_i;
id searchField_i;
id sizeField_i;
char currentwad[1024];
id textureList_i;
id textureView_i;
id searchField_i;
id sizeField_i;
id field_Xshift_i;
id field_Yshift_i;
id field_Xscale_i;
id field_Yscale_i;
id field_Rotate_i;
id field_Xshift_i;
id field_Yshift_i;
id field_Xscale_i;
id field_Yscale_i;
id field_Rotate_i;
int viewWidth;
int viewHeight;
int selectedTexture;
int viewWidth;
int viewHeight;
int selectedTexture;
}
-(const char *) currentWad;
-initPaletteFromWadfile:(const char *) wf;
-computeTextureViewSize;
-alphabetize;
-getList;
-(int) getSelectedTexture;
-setSelectedTexture:(int) which;
-(int) getSelectedTexIndex;
- (const char *) currentWad;
- (id) initPaletteFromWadfile: (const char *)wf;
- (id) computeTextureViewSize;
- (id) alphabetize;
- (id) getList;
- (int) getSelectedTexture;
- (id) setSelectedTexture: (int)which;
- (int) getSelectedTexIndex;
// Called externally
-(const char *) getSelTextureName;
-setTextureByName:(const char *) name;
- (const char *) getSelTextureName;
- (id) setTextureByName: (const char *)name;
// New methods to replace the 2 above ones
-setTextureDef:(texturedef_t *) td;
-getTextureDef:(texturedef_t *) td;
- (id) setTextureDef: (texturedef_t *)td;
- (id) getTextureDef: (texturedef_t *)td;
// Action methods
-searchForTexture:sender;
- (id) searchForTexture: sender;
-clearTexinfo:sender;
- (id) clearTexinfo: sender;
-incXShift:sender;
-decXShift:sender;
- (id) incXShift: sender;
- (id) decXShift: sender;
-incYShift:sender;
-decYShift:sender;
- (id) incYShift: sender;
- (id) decYShift: sender;
-incRotate:sender;
-decRotate:sender;
- (id) incRotate: sender;
- (id) decRotate: sender;
-incXScale:sender;
-decXScale:sender;
- (id) incXScale: sender;
- (id) decXScale: sender;
-incYScale:sender;
-decYScale:sender;
- (id) incYScale: sender;
- (id) decYScale: sender;
-texturedefChanged:sender;
-onlyShowMapTextures:sender;
-(int) searchForTextureInPalette:(const char *) texture;
-setDisplayFlag:(int) index to:(int) value;
- (id) texturedefChanged: sender;
- (id) onlyShowMapTextures: sender;
- (int) searchForTextureInPalette: (const char *)texture;
- (id) setDisplayFlag: (int)index
to: (int)value;
@end
#endif // TexturePalette_h

View file

@ -15,63 +15,61 @@
#include "Storage.h"
id texturepalette_i;
id texturepalette_i;
int tex_count;
qtexture_t qtextures[MAX_TEXTURES];
typedef struct {
typedef struct {
char name[16];
unsigned width, height;
unsigned offsets[4]; // four mip maps stored
unsigned offsets[4]; // four mip maps stored
} miptex_t;
unsigned tex_palette[256];
unsigned tex_palette[256];
unsigned badtex_d[] = {
unsigned badtex_d[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
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}}};
void
CleanupName (const char *in, char *out)
{
int i;
int i;
for (i = 0; i < 16; i++) {
if (!in[i])
@ -90,9 +88,9 @@ TEX_InitPalette
void
TEX_InitPalette (wad_t *wad, lumpinfo_t *pallump)
{
byte *pal, *opal;
int r, g, b, v;
int i;
byte *pal, *opal;
int r, g, b, v;
int i;
opal = pal = malloc (pallump->size);
Qseek (wad->handle, pallump->filepos, SEEK_SET);
@ -112,7 +110,6 @@ TEX_InitPalette (wad_t *wad, lumpinfo_t *pallump)
free (opal);
}
/*
=================
TEX_ImageFromMiptex
@ -121,13 +118,13 @@ TEX_ImageFromMiptex
void
TEX_ImageFromMiptex (wad_t *wad, lumpinfo_t *qtexlump)
{
miptex_t *qtex;
NSBitmapImageRep *bm;
byte *source;
unsigned *dest;
int width, height, i, count;
qtexture_t *q;
int tr, tg, tb;
miptex_t *qtex;
NSBitmapImageRep *bm;
byte *source;
unsigned *dest;
int width, height, i, count;
qtexture_t *q;
int tr, tg, tb;
qtex = malloc (qtexlump->size);
Qseek (wad->handle, qtexlump->filepos, SEEK_SET);
@ -136,10 +133,19 @@ TEX_ImageFromMiptex (wad_t *wad, lumpinfo_t *qtexlump)
width = LittleLong (qtex->width);
height = LittleLong (qtex->height);
bm =[[NSBitmapImageRep alloc]
initWithBitmapDataPlanes: NULL pixelsWide: width pixelsHigh: height bitsPerSample: 8 samplesPerPixel: 3 hasAlpha: NO isPlanar: NO colorSpaceName: NSCalibratedRGBColorSpace bytesPerRow: width * 4 bitsPerPixel:32];
bm = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes: NULL
pixelsWide: width
pixelsHigh: height
bitsPerSample: 8
samplesPerPixel: 3
hasAlpha: NO
isPlanar: NO
colorSpaceName: NSCalibratedRGBColorSpace
bytesPerRow: width * 4
bitsPerPixel: 32];
dest = (unsigned *)[bm bitmapData];
dest = (unsigned *) [bm bitmapData];
count = width * height;
source = (byte *) qtex + LittleLong (qtex->offsets[0]);
@ -155,9 +161,9 @@ TEX_ImageFromMiptex (wad_t *wad, lumpinfo_t *qtexlump)
for (i = 0; i < count; i++) {
dest[i] = tex_palette[source[i]];
tr += ((pixel32_t *) & dest[i])->chan[0];
tg += ((pixel32_t *) & dest[i])->chan[1];
tb += ((pixel32_t *) & dest[i])->chan[2];
tr += ((pixel32_t *) &dest[i])->chan[0];
tg += ((pixel32_t *) &dest[i])->chan[1];
tb += ((pixel32_t *) &dest[i])->chan[2];
}
q->flatcolor.chan[0] = tr / count;
@ -167,7 +173,7 @@ TEX_ImageFromMiptex (wad_t *wad, lumpinfo_t *qtexlump)
free (qtex);
}
//=============================================================================
// =============================================================================
/*
=================
@ -178,10 +184,10 @@ int
TEX_InitFromWad (const char *path)
{
int i;
const char *newpath;
const char *newpath;
float start, stop;
wad_t *wad;
lumpinfo_t *lumpinfo;
wad_t *wad;
lumpinfo_t *lumpinfo;
start = Sys_DoubleTime ();
@ -191,25 +197,26 @@ TEX_InitFromWad (const char *path)
// free any textures
for (i = 0; i < tex_count; i++)
[qtextures[i].rep release];
tex_count = 0;
// try to use the cached wadfile
// try to use the cached wadfile
Sys_Printf ("TEX_InitFromWad %s\n", newpath);
wad = wad_open (newpath);
if (!wad) {
NSRunAlertPanel (@"Wad Error!",
[NSString stringWithFormat:@"Failed to open '%s'",
newpath],
@"OK", nil, nil);
[NSString stringWithFormat: @"Failed to open '%s'",
newpath],
@"OK", nil,
nil);
return 0;
}
lumpinfo = wad->lumps;
if (strcmp (lumpinfo->name, "PALETTE")) {
if (strcmp (lumpinfo->name, "PALETTE"))
Sys_Error ("TEX_InitFromWad: %s doesn't have palette as 0", path);
}
TEX_InitPalette (wad, lumpinfo);
@ -217,7 +224,7 @@ TEX_InitFromWad (const char *path)
for (i = 1; i < wad->numlumps; i++, lumpinfo++) {
if (lumpinfo->type != TYP_MIPTEX)
Sys_Error ("TEX_InitFromWad: %s is not a miptex!", lumpinfo->name);
CleanupName (lumpinfo->name,qtextures[tex_count].name);
CleanupName (lumpinfo->name, qtextures[tex_count].name);
TEX_ImageFromMiptex (wad, lumpinfo);
}
@ -239,7 +246,7 @@ TEX_ForName (const char *name)
{
char newname[16];
int i;
qtexture_t *q;
qtexture_t *q;
CleanupName (name, newname);
@ -251,12 +258,10 @@ TEX_ForName (const char *name)
return &badtex;
}
//===========================================================================
// ===========================================================================
@implementation TexturePalette
-init
- (id) init
{
[super init];
texturepalette_i = self;
@ -264,25 +269,24 @@ TEX_ForName (const char *name)
return self;
}
-(void) display
- (void) display
{
[[textureView_i superview] display];
}
-(const char *) currentWad
- (const char *) currentWad
{
return currentwad;
}
-initPaletteFromWadfile:(const char *) wf
- (id) initPaletteFromWadfile: (const char *)wf
{
int i;
texpal_t t;
qtexture_t *q;
qtexture_t *q;
strcpy (currentwad, wf);
[map_i makeGlobalPerform:@selector (flushTextures)];
[map_i makeGlobalPerform: @selector (flushTextures)];
selectedTexture = -1;
// Init textures WAD
@ -290,67 +294,65 @@ TEX_ForName (const char *name)
return self;
// Create STORAGE
if (textureList_i)
if (textureList_i) {
[textureList_i empty];
else
textureList_i = [[Storage alloc] initCount: 0
elementSize: sizeof (texpal_t)
description: NULL];
} else {
textureList_i = [[Storage alloc] initCount: 0
elementSize: sizeof (texpal_t)
description: NULL];
}
// Init STORAGE
for (i = 0, q = qtextures; i < tex_count; i++, q++) {
t.image = q->rep;
t.r.size.width =[t.image pixelsWide];
t.r.size.width = [t.image pixelsWide];
if (t.r.size.width < 64)
t.r.size.width = 64;
t.r.size.height =[t.image pixelsHigh] + TEX_SPACING;
t.r.size.height = [t.image pixelsHigh] + TEX_SPACING;
t.name = q->name;
t.index = i;
t.display = 1;
[textureList_i addElement:&t];
[textureList_i addElement: &t];
}
// Calculate size of TextureView
[self alphabetize];
[self computeTextureViewSize];
[textureView_i setParent:self];
[self setSelectedTexture:0];
[textureView_i setParent: self];
[self setSelectedTexture: 0];
return self;
}
// Return texture STORAGE list
-getList
- (id) getList
{
return textureList_i;
}
// Alphabetize texture list - reverse order!
-alphabetize
- (id) alphabetize
{
int i;
int max;
texpal_t *t1p;
texpal_t *t2p;
texpal_t *t1p;
texpal_t *t2p;
texpal_t t1;
texpal_t t2;
int found;
max =[textureList_i count];
max = [textureList_i count];
found = 1;
while (found) {
found = 0;
for (i = 0; i < max - 1; i++) {
t1p =[textureList_i elementAt:i];
t2p =[textureList_i elementAt:i + 1];
t1p = [textureList_i elementAt: i];
t2p = [textureList_i elementAt: i + 1];
if (strcmp (t1p->name, t2p->name) < 0) {
t1 = *t1p;
t2 = *t2p;
[textureList_i replaceElementAt: i with:&t2];
[textureList_i replaceElementAt: i + 1 with:&t1];
[textureList_i replaceElementAt: i with: &t2];
[textureList_i replaceElementAt: i + 1 with: &t1];
found = 1;
}
}
@ -358,12 +360,12 @@ TEX_ForName (const char *name)
return self;
}
-computeTextureViewSize
- (id) computeTextureViewSize
{
int i;
int max;
int x;
texpal_t *t;
texpal_t *t;
int y;
id view;
NSRect b;
@ -371,17 +373,17 @@ TEX_ForName (const char *name)
int maxheight;
NSPoint pt;
max =[textureList_i count];
max = [textureList_i count];
y = 0;
maxheight = 0;
x = TEX_INDENT;
view =[textureView_i superview];
b =[view bounds];
view = [textureView_i superview];
b = [view bounds];
maxwidth = b.size.width;
for (i = 0; i < max; i++) {
t =[textureList_i elementAt:i];
t = [textureList_i elementAt: i];
if (x + t->r.size.width + TEX_INDENT > maxwidth) {
x = TEX_INDENT;
y += maxheight;
@ -398,42 +400,43 @@ TEX_ForName (const char *name)
viewWidth = maxwidth;
viewHeight = y + TEX_SPACING;
[textureView_i setFrameSize:NSMakeSize (viewWidth, viewHeight)];
[textureView_i setFrameSize: NSMakeSize (viewWidth, viewHeight)];
pt.x = pt.y = 0;
[textureView_i scrollPoint:pt];
[textureView_i scrollPoint: pt];
return self;
}
-windowResized
- (id) windowResized
{
[self computeTextureViewSize];
return self;
}
-texturedefChanged:sender
- (id) texturedefChanged: sender
{
if ([map_i numSelected]) {
if ([[map_i currentEntity] modifiable]) {
[map_i makeSelectedPerform:@selector
[map_i makeSelectedPerform: @selector
(takeCurrentTexture)];
[quakeed_i updateAll];
} else
} else {
Sys_Printf ("can't modify spawned entities\n");
}
}
[quakeed_i makeFirstResponder:quakeed_i];
[quakeed_i makeFirstResponder: quakeed_i];
return self;
}
-clearTexinfo:sender
- (id) clearTexinfo: sender
{
[field_Xshift_i setFloatValue:0];
[field_Yshift_i setFloatValue:0];
[field_Xscale_i setFloatValue:1];
[field_Yscale_i setFloatValue:1];
[field_Rotate_i setFloatValue:0];
[field_Xshift_i setFloatValue: 0];
[field_Yshift_i setFloatValue: 0];
[field_Xscale_i setFloatValue: 1];
[field_Yscale_i setFloatValue: 1];
[field_Rotate_i setFloatValue: 0];
[self texturedefChanged:self];
[self texturedefChanged: self];
return self;
}
@ -441,32 +444,32 @@ TEX_ForName (const char *name)
//
// Set the selected texture
//
-setSelectedTexture:(int) which
- (id) setSelectedTexture: (int)which
{
texpal_t *t;
texpal_t *t;
NSRect r;
// wipe the fields
[self clearTexinfo:self];
[self clearTexinfo: self];
if (which != selectedTexture) {
[textureView_i deselect];
selectedTexture = which;
t =[textureList_i elementAt:which];
t = [textureList_i elementAt: which];
r = t->r;
r.size.width += TEX_INDENT * 2;
r.size.height += TEX_INDENT * 2;
r.origin.x -= TEX_INDENT;
r.origin.y -= TEX_INDENT;
[textureView_i scrollRectToVisible:r];
[textureView_i scrollRectToVisible: r];
[textureView_i display];
[sizeField_i setStringValue:
[NSString stringWithFormat:@"%d x %d",
(int) t->r.size.width,
(int) t->r.size.height - TEX_SPACING]];
[NSString stringWithFormat: @"%d x %d",
(int) t->r.size.width,
(int) t->r.size.height - TEX_SPACING]];
}
[self texturedefChanged:self];
[self texturedefChanged: self];
return self;
}
@ -474,7 +477,7 @@ TEX_ForName (const char *name)
//
// Return the selected texture index
//
-(int) getSelectedTexture
- (int) getSelectedTexture
{
return selectedTexture;
}
@ -483,46 +486,46 @@ TEX_ForName (const char *name)
// Return the original tex_ index of the selected texture
// so the texture info can be indexed from tex_images, etc.
//
-(int) getSelectedTexIndex
- (int) getSelectedTexIndex
{
texpal_t *t;
texpal_t *t;
if (selectedTexture == -1)
return -1;
t =[textureList_i elementAt:selectedTexture];
t = [textureList_i elementAt: selectedTexture];
return t->index;
}
//
// Return the name of the selected texture
//
-(const char *) getSelTextureName
- (const char *) getSelTextureName
{
texpal_t *t;
texpal_t *t;
if (selectedTexture == -1)
return NULL;
t =[textureList_i elementAt:selectedTexture];
t = [textureList_i elementAt: selectedTexture];
return t->name;
}
//
// Set selected texture by texture name
//
-setTextureByName:(const char *) name
- (id) setTextureByName: (const char *)name
{
texpal_t *t;
texpal_t *t;
int i;
int max;
char *nm = strdup (name);
char *nm = strdup (name);
max =[textureList_i count];
CleanupName(nm,nm);
max = [textureList_i count];
CleanupName (nm, nm);
for (i = 0; i < max; i++) {
t =[textureList_i elementAt:i];
t = [textureList_i elementAt: i];
if (!strcmp (t->name, nm)) {
free (nm);
[self setSelectedTexture:i];
[self setSelectedTexture: i];
return self;
}
}
@ -530,24 +533,23 @@ TEX_ForName (const char *name)
return self;
}
//===================================================
// ===================================================
//
// Action methods
//
//===================================================
// ===================================================
//
// Search for texture named in searchField
//
-searchForTexture:sender
- (id) searchForTexture: sender
{
int i;
int max;
int len;
NSMutableString *strname;
const char *name;
texpal_t *t;
int i;
int max;
int len;
NSMutableString *strname;
const char *name;
texpal_t *t;
if (selectedTexture == -1)
return self;
@ -560,43 +562,43 @@ TEX_ForName (const char *name)
len = strlen (name);
for (i = selectedTexture - 1; i >= 0; i--) {
t =[textureList_i elementAt:i];
t = [textureList_i elementAt: i];
if (!strncmp (t->name, name, len)) {
[self setTextureByName:t->name];
[sender selectText:sender];
[self texturedefChanged:self];
[self setTextureByName: t->name];
[sender selectText: sender];
[self texturedefChanged: self];
return self;
}
}
for (i = max - 1; i >= selectedTexture; i--) {
t =[textureList_i elementAt:i];
t = [textureList_i elementAt: i];
if (!strncmp (t->name, name, len)) {
[self setTextureByName:t->name];
[sender selectText:sender];
[self texturedefChanged:self];
[self setTextureByName: t->name];
[sender selectText: sender];
[self texturedefChanged: self];
return self;
}
}
[self texturedefChanged:self];
[self texturedefChanged: self];
return self;
}
//
// Set texture def from outside TexturePalette
//
-setTextureDef:(texturedef_t *) td
- (id) setTextureDef: (texturedef_t *)td
{
[self setTextureByName:td->texture];
[self setTextureByName: td->texture];
[field_Xshift_i setFloatValue:td->shift[0]];
[field_Yshift_i setFloatValue:td->shift[1]];
[field_Xscale_i setFloatValue:td->scale[0]];
[field_Yscale_i setFloatValue:td->scale[1]];
[field_Rotate_i setFloatValue:td->rotate];
[field_Xshift_i setFloatValue: td->shift[0]];
[field_Yshift_i setFloatValue: td->shift[1]];
[field_Xscale_i setFloatValue: td->scale[0]];
[field_Yscale_i setFloatValue: td->scale[1]];
[field_Rotate_i setFloatValue: td->rotate];
[self texturedefChanged:self];
[self texturedefChanged: self];
return self;
}
@ -604,7 +606,7 @@ TEX_ForName (const char *name)
//
// Return the current texture def to passed *
//
-getTextureDef:(texturedef_t *) td
- (id) getTextureDef: (texturedef_t *)td
{
if (selectedTexture == -1) {
memset (td, 0, sizeof (*td));
@ -612,32 +614,32 @@ TEX_ForName (const char *name)
return self;
}
strncpy (td->texture,[self getSelTextureName], 16);
strncpy (td->texture, [self getSelTextureName], 16);
td->shift[0] =[field_Xshift_i floatValue];
td->shift[1] =[field_Yshift_i floatValue];
td->scale[0] =[field_Xscale_i floatValue];
td->scale[1] =[field_Yscale_i floatValue];
td->rotate =[field_Rotate_i floatValue];
td->shift[0] = [field_Xshift_i floatValue];
td->shift[1] = [field_Yshift_i floatValue];
td->scale[0] = [field_Xscale_i floatValue];
td->scale[1] = [field_Yscale_i floatValue];
td->rotate = [field_Rotate_i floatValue];
return self;
}
//============================================================================
// ============================================================================
//
// Change value in a field
//
-changeField:(id)
field by:(int) amount
- (id) changeField: (id)
field by: (int)amount
{
int val;
int val;
val =[field intValue];
val = [field intValue];
val += amount;
[field setIntValue:val];
[field setIntValue: val];
[self texturedefChanged:self];
[self texturedefChanged: self];
return self;
}
@ -645,103 +647,101 @@ field by:(int) amount
//
// Inc/Dec the XShift field
//
-incXShift:sender
- (id) incXShift: sender
{
[self changeField: field_Xshift_i by:8];
[self changeField: field_Xshift_i by: 8];
return self;
}
-decXShift:sender
- (id) decXShift: sender
{
[self changeField: field_Xshift_i by:-8];
[self changeField: field_Xshift_i by: -8];
return self;
}
//
// Inc/Dec the YShift field
//
-incYShift:sender
- (id) incYShift: sender
{
[self changeField: field_Yshift_i by:8];
[self changeField: field_Yshift_i by: 8];
return self;
}
-decYShift:sender
- (id) decYShift: sender
{
[self changeField: field_Yshift_i by:-8];
[self changeField: field_Yshift_i by: -8];
return self;
}
//
// Inc/Dec the Rotate field
//
-incRotate:sender
- (id) incRotate: sender
{
[self changeField: field_Rotate_i by:90];
[self changeField: field_Rotate_i by: 90];
return self;
}
-decRotate:sender
- (id) decRotate: sender
{
[self changeField: field_Rotate_i by:-90];
[self changeField: field_Rotate_i by: -90];
return self;
}
//
// Inc/Dec the Xscale field
//
-incXScale:sender
- (id) incXScale: sender
{
[field_Xscale_i setIntValue:1];
[self texturedefChanged:self];
[field_Xscale_i setIntValue: 1];
[self texturedefChanged: self];
return self;
}
-decXScale:sender
- (id) decXScale: sender
{
[field_Xscale_i setIntValue:-1];
[self texturedefChanged:self];
[field_Xscale_i setIntValue: -1];
[self texturedefChanged: self];
return self;
}
//
// Inc/Dec the Yscale field
//
-incYScale:sender
- (id) incYScale: sender
{
[field_Yscale_i setIntValue:1];
[self texturedefChanged:self];
[field_Yscale_i setIntValue: 1];
[self texturedefChanged: self];
return self;
}
-decYScale:sender
- (id) decYScale: sender
{
[field_Yscale_i setIntValue:-1];
[self texturedefChanged:self];
[field_Yscale_i setIntValue: -1];
[self texturedefChanged: self];
return self;
}
//============================================================================
// ============================================================================
//
// Search for texture in entire palette
// Return index of texturedef, or -1 if unsuccessful
//
-(int) searchForTextureInPalette:(const char *) texture
- (int) searchForTextureInPalette: (const char *)texture
{
int i;
int max;
texpal_t *t;
texpal_t *t;
if (selectedTexture == -1)
return -1;
max =[textureList_i count];
max = [textureList_i count];
for (i = 0; i < max; i++) {
t =[textureList_i elementAt:i];
t = [textureList_i elementAt: i];
if (!strcmp (t->name, texture))
return i;
}
@ -751,42 +751,42 @@ field by:(int) amount
//
// Scan thru map & display only textures that are in map
//
-onlyShowMapTextures:sender
- (id) onlyShowMapTextures: sender
{
int max;
int i;
int j;
id brushes;
SetBrush *b;
SetBrush *b;
int numfaces;
face_t *f;
face_t *f;
int index;
// Turn 'em off
if ([sender intValue]) {
max =[textureList_i count];
max = [textureList_i count];
for (i = 0; i < max; i++)
[self setDisplayFlag: i to:0];
[self setDisplayFlag: i to: 0];
brushes =[map_i objectAtIndex:0];
max =[brushes count];
brushes = [map_i objectAtIndex: 0];
max = [brushes count];
for (i = 0; i < max; i++) {
b = (SetBrush *)[brushes objectAtIndex:i];
numfaces =[b getNumBrushFaces];
b = (SetBrush *) [brushes objectAtIndex: i];
numfaces = [b getNumBrushFaces];
for (j = 0; j < numfaces; j++) {
f =[b getBrushFace:j];
index =[self searchForTextureInPalette:f->texture.
texture];
f = [b getBrushFace: j];
index = [self searchForTextureInPalette: f->texture.
texture];
if (index >= 0)
[self setDisplayFlag: index to:1];
[self setDisplayFlag: index to: 1];
}
}
}
// Turn 'em on
else {
max =[textureList_i count];
max = [textureList_i count];
for (i = 0; i < max; i++)
[self setDisplayFlag: i to:1];
[self setDisplayFlag: i to: 1];
}
[textureView_i display];
@ -794,12 +794,12 @@ field by:(int) amount
return self;
}
-setDisplayFlag:(int)
index to:(int) value
- (id) setDisplayFlag: (int)
index to: (int)value
{
texpal_t *tp;
texpal_t *tp;
tp =[textureList_i elementAt:index];
tp = [textureList_i elementAt: index];
tp->display = value;
return self;
};

View file

@ -3,14 +3,14 @@
#include <AppKit/AppKit.h>
@interface TextureView:NSView
@interface TextureView: NSView
{
id parent_i;
int deselectIndex;
id parent_i;
int deselectIndex;
}
-setParent:(id) from;
-deselect;
- (id) setParent: (id)from;
- (id) deselect;
@end
#endif // TextureView_h

View file

@ -14,48 +14,47 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
@implementation TextureView
-init
- (id) init
{
deselectIndex = -1;
return self;
}
-setParent:(id) from
- (id) setParent: (id)from
{
parent_i = from;
return self;
}
-(BOOL) acceptsFirstMouse
- (BOOL) acceptsFirstMouse
{
return YES;
}
-drawRect: (NSRect) rects
- (id) drawRect: (NSRect)rects
{
int i;
int max;
id list_i;
texpal_t *t;
texpal_t *t;
int x;
int y;
NSPoint p;
NSRect r;
int selected;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
selected =[parent_i getSelectedTexture];
list_i =[parent_i getList];
selected = [parent_i getSelectedTexture];
list_i = [parent_i getList];
[[NSFont systemFontOfSize: FONTSIZE] set];
[[NSColor lightGrayColor] set];
NSRectFill (rects);
if (!list_i) // WADfile didn't init
if (!list_i) // WADfile didn't init
return self;
if (deselectIndex != -1) {
t =[list_i elementAt:deselectIndex];
t = [list_i elementAt: deselectIndex];
r = t->r;
r.origin.x -= TEX_INDENT;
r.origin.y -= TEX_INDENT;
@ -71,15 +70,15 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
x = t->r.origin.x;
y = t->r.origin.y + 7;
[[NSString stringWithCString: t->name]
drawAtPoint: NSMakePoint (x, y) withAttributes: attribs];
drawAtPoint: NSMakePoint (x, y) withAttributes: attribs];
deselectIndex = -1;
}
max =[list_i count];
max = [list_i count];
[[NSColor blackColor] set];
for (i = 0; i < max; i++) {
t =[list_i elementAt:i];
t = [list_i elementAt: i];
r = t->r;
r.origin.x -= TEX_INDENT / 2;
r.size.width += TEX_INDENT;
@ -89,7 +88,7 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
[[NSColor whiteColor] set];
NSRectFill (r);
[[NSColor redColor] set];
NSFrameRect(r);
NSFrameRect (r);
[[NSColor blackColor] set];
}
@ -99,41 +98,41 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
x = t->r.origin.x;
y = t->r.origin.y + 7;
[[NSString stringWithCString: t->name]
drawAtPoint: NSMakePoint (x, y) withAttributes: attribs];
drawAtPoint: NSMakePoint (x, y) withAttributes: attribs];
}
}
return self;
}
-deselect
- (id) deselect
{
deselectIndex =[parent_i getSelectedTexture];
deselectIndex = [parent_i getSelectedTexture];
return self;
}
-mouseDown:(NSEvent *) theEvent
- (id) mouseDown: (NSEvent *)theEvent
{
NSPoint loc;
int i;
int max;
// int oldwindowmask;
texpal_t *t;
texpal_t *t;
id list;
NSRect r;
// oldwindowmask = [window addToEventMask:NSLeftMouseDraggedMask];
loc =[theEvent locationInWindow];
[self convertPoint: loc fromView:NULL];
loc = [theEvent locationInWindow];
[self convertPoint: loc fromView: NULL];
list =[parent_i getList];
max =[list count];
list = [parent_i getList];
max = [list count];
for (i = 0; i < max; i++) {
t =[list elementAt:i];
t = [list elementAt: i];
r = t->r;
if (NSPointInRect (loc, r) == YES) {
[self deselect];
[parent_i setSelectedTexture:i];
[parent_i setSelectedTexture: i];
break;
}
}

View file

@ -5,43 +5,42 @@
#include "Entity.h"
extern id things_i;
extern id things_i;
#define ENTITYNAMEKEY "spawn"
#define ENTITYNAMEKEY "spawn"
@interface Things:NSObject
@interface Things: NSObject
{
id entity_browser_i; // browser
id entity_comment_i; // scrolling text window
id entity_browser_i; // browser
id entity_comment_i; // scrolling text window
id prog_path_i;
id prog_path_i;
int lastSelected; // last row selected in browser
int lastSelected; // last row selected in browser
id keyInput_i;
id valueInput_i;
id flags_i;
id keyInput_i;
id valueInput_i;
id flags_i;
}
-initEntities;
- (id) initEntities;
-newCurrentEntity;
-setSelectedKey:(epair_t *) ep;
- (id) newCurrentEntity;
- (id) setSelectedKey: (epair_t *)ep;
-clearInputs;
-(const char *) spawnName;
- (id) clearInputs;
- (const char *) spawnName;
// UI targets
-reloadEntityClasses:sender;
-selectEntity:sender;
-doubleClickEntity:sender;
- (id) reloadEntityClasses: sender;
- (id) selectEntity: sender;
- (id) doubleClickEntity: sender;
// Action methods
-addPair:sender;
-delPair:sender;
-setAngle:sender;
-setFlags:sender;
- (id) addPair: sender;
- (id) delPair: sender;
- (id) setAngle: sender;
- (id) setFlags: sender;
@end
#endif // Things_h

View file

@ -8,11 +8,11 @@
#include "KeypairView.h"
#include "Project.h"
id things_i;
id things_i;
@implementation Things
-init
- (id) init
{
[super init];
@ -22,9 +22,9 @@ id things_i;
return self;
}
-(void)awakeFromNib
- (void) awakeFromNib
{
//FIXME this should not be needed (bug in gnustep?)
// FIXME this should not be needed (bug in gnustep?)
[flags_i selectAll: self];
[flags_i deselectAllCells];
}
@ -32,143 +32,141 @@ id things_i;
//
// Load the TEXT object with the entity comment
//
-loadEntityComment:(id) obj
- (id) loadEntityComment: (id)obj
{
[entity_comment_i selectAll:self];
[entity_comment_i replaceCharactersInRange: [entity_comment_i selectedRange] withString: [NSString stringWithCString:[obj
comments]]];
[entity_comment_i selectAll: self];
[entity_comment_i
replaceCharactersInRange: [entity_comment_i selectedRange]
withString: [NSString stringWithCString: [obj comments]]];
return self;
}
-initEntities
- (id) initEntities
{
const char *path;
const char *path;
path =[project_i getProgDirectory];
path = [project_i getProgDirectory];
[prog_path_i setStringValue: [NSString stringWithCString:path]];
[prog_path_i setStringValue: [NSString stringWithCString: path]];
[[EntityClassList alloc] initForSourceDirectory:path];
[[EntityClassList alloc] initForSourceDirectory: path];
[self loadEntityComment: [entity_classes_i objectAtIndex:lastSelected]];
[self loadEntityComment: [entity_classes_i objectAtIndex: lastSelected]];
[entity_browser_i loadColumnZero];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column:0];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column: 0];
[entity_browser_i setDoubleAction: @selector (doubleClickEntity:)];
return self;
}
-selectEntity:sender
- (id) selectEntity: sender
{
id matr;
id matr;
matr =[sender matrixInColumn:0];
lastSelected =[matr selectedRow];
[self loadEntityComment: [entity_classes_i objectAtIndex:lastSelected]];
[quakeed_i makeFirstResponder:quakeed_i];
matr = [sender matrixInColumn: 0];
lastSelected = [matr selectedRow];
[self loadEntityComment: [entity_classes_i objectAtIndex: lastSelected]];
[quakeed_i makeFirstResponder: quakeed_i];
return self;
}
-doubleClickEntity:sender
- (id) doubleClickEntity: sender
{
[map_i makeEntity:sender];
[quakeed_i makeFirstResponder:quakeed_i];
[map_i makeEntity: sender];
[quakeed_i makeFirstResponder: quakeed_i];
return self;
}
-(const char *) spawnName
- (const char *) spawnName
{
return[[entity_classes_i objectAtIndex:lastSelected] classname];
return [[entity_classes_i objectAtIndex: lastSelected] classname];
}
//
// Flush entity classes & reload them!
//
-reloadEntityClasses:sender
- (id) reloadEntityClasses: sender
{
EntityClass *ent;
const char *path;
EntityClass *ent;
const char *path;
path = [[prog_path_i stringValue] cString];
if (!path || !path[0]) {
path =[project_i getProgDirectory];
[prog_path_i setStringValue: [NSString stringWithCString:path]];
path = [project_i getProgDirectory];
[prog_path_i setStringValue: [NSString stringWithCString: path]];
}
// Free all entity info in memory...
[entity_classes_i removeAllObjects];
[entity_classes_i release];
// Now, RELOAD!
[[EntityClassList alloc] initForSourceDirectory:path];
[[EntityClassList alloc] initForSourceDirectory: path];
lastSelected = 0;
ent =[entity_classes_i objectAtIndex:lastSelected];
[self loadEntityComment: [entity_classes_i objectAtIndex:lastSelected]];
ent = [entity_classes_i objectAtIndex: lastSelected];
[self loadEntityComment: [entity_classes_i objectAtIndex: lastSelected]];
[entity_browser_i loadColumnZero];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column:0];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column: 0];
[self newCurrentEntity]; // in case flags changed
[self newCurrentEntity]; // in case flags changed
return self;
}
-selectClass:(const char *) class
- (id) selectClass: (const char *)class
{
id classent;
id classent;
classent =[entity_classes_i classForName:class];
classent = [entity_classes_i classForName: class];
if (!classent)
return self;
lastSelected =[entity_classes_i indexOfObject:classent];
lastSelected = [entity_classes_i indexOfObject: classent];
if (lastSelected < 0)
lastSelected = 0;
[self loadEntityComment:classent];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column:0];
[[entity_browser_i matrixInColumn: 0] scrollCellToVisibleAtRow: lastSelected column:0];
[self loadEntityComment: classent];
[[entity_browser_i matrixInColumn: 0] selectCellAtRow: lastSelected column: 0];
[[entity_browser_i matrixInColumn: 0] scrollCellToVisibleAtRow: lastSelected
column: 0];
return self;
}
-newCurrentEntity
- (id) newCurrentEntity
{
id ent, classent, cell;
const char *classname;
const char *classname;
int r, c;
const char *flagname;
const char *flagname;
int flags;
ent =[map_i currentEntity];
classname =[ent valueForQKey:"classname"];
if (ent !=[map_i objectAtIndex:0])
[self selectClass:classname]; // don't reset for world
classent =[entity_classes_i classForName:classname];
flagname =[ent valueForQKey:"spawnflags"];
ent = [map_i currentEntity];
classname = [ent valueForQKey: "classname"];
if (ent != [map_i objectAtIndex: 0])
[self selectClass: classname]; // don't reset for world
classent = [entity_classes_i classForName: classname];
flagname = [ent valueForQKey: "spawnflags"];
if (!flagname)
flags = 0;
else
flags = atoi (flagname);
//[flags_i setAutodisplay:NO];
for (r = 0; r < 4; r++)
// [flags_i setAutodisplay:NO];
for (r = 0; r < 4; r++) {
for (c = 0; c < 3; c++) {
cell =[flags_i cellAtRow: r column:c];
cell = [flags_i cellAtRow: r column: c];
if (c < 2) {
flagname =[classent flagName:c * 4 + r];
[cell setTitle: [NSString stringWithCString:flagname]];
flagname = [classent flagName: c * 4 + r];
[cell setTitle: [NSString stringWithCString: flagname]];
}
[cell setIntValue:(flags & (1 << ((c * 4) + r))) > 0];
[cell setIntValue: (flags & (1 << ((c * 4) + r))) > 0];
}
//[flags_i setAutodisplay:YES];
}
// [flags_i setAutodisplay:YES];
[flags_i display];
// [keyInput_i setStringValue: ""];
@ -177,27 +175,27 @@ id things_i;
[keypairview_i calcViewSize];
[keypairview_i display];
[quakeed_i makeFirstResponder:quakeed_i];
[quakeed_i makeFirstResponder: quakeed_i];
return self;
}
//
// Clicked in the Keypair view - set as selected
//
-setSelectedKey:(epair_t *) ep;
- (id) setSelectedKey: (epair_t *)ep;
{
[keyInput_i setStringValue: [NSString stringWithCString:ep->key]];
[valueInput_i setStringValue: [NSString stringWithCString:ep->value]];
[valueInput_i selectText:self];
[keyInput_i setStringValue: [NSString stringWithCString: ep->key]];
[valueInput_i setStringValue: [NSString stringWithCString: ep->value]];
[valueInput_i selectText: self];
return self;
}
-clearInputs
- (id) clearInputs
{
// [keyInput_i setStringValue: ""];
// [valueInput_i setStringValue: ""];
[quakeed_i makeFirstResponder:quakeed_i];
[quakeed_i makeFirstResponder: quakeed_i];
return self;
}
@ -205,14 +203,14 @@ id things_i;
// Action methods
//
-addPair:sender
- (id) addPair: sender
{
const char *key, *value;
const char *key, *value;
key = [[keyInput_i stringValue] cString];
value = [[valueInput_i stringValue] cString];
[[map_i currentEntity] setKey: key toValue:value];
[[map_i currentEntity] setKey: key toValue: value];
[keypairview_i calcViewSize];
[keypairview_i display];
@ -223,11 +221,11 @@ id things_i;
return self;
}
-delPair:sender
- (id) delPair: sender
{
[quakeed_i makeFirstResponder:quakeed_i];
[quakeed_i makeFirstResponder: quakeed_i];
[[map_i currentEntity] removeKeyPair:[[keyInput_i stringValue] cString]];
[[map_i currentEntity] removeKeyPair: [[keyInput_i stringValue] cString]];
[keypairview_i calcViewSize];
[keypairview_i display];
@ -239,23 +237,22 @@ id things_i;
return self;
}
//
// Set the key/value fields to "angle <button value>"
//
-setAngle:sender
- (id) setAngle: sender
{
NSString *value;
NSString *value;
value = [[sender selectedCell] title];
if (![value compare:@"Up"])
if (![value compare: @"Up"])
value = @"-1";
else if (![value compare:@"Dn"])
else if (![value compare: @"Dn"])
value = @"-2";
[keyInput_i setStringValue:@"angle"];
[keyInput_i setStringValue: @"angle"];
[valueInput_i setStringValue: value];
[self addPair:NULL];
[self addPair: NULL];
[self clearInputs];
@ -264,26 +261,27 @@ id things_i;
return self;
}
-setFlags:sender
- (id) setFlags: sender
{
int flags;
int r, c, i;
id cell;
int flags;
int r, c, i;
id cell;
[self clearInputs];
flags = 0;
for (r = 0; r < 4; r++)
for (r = 0; r < 4; r++) {
for (c = 0; c < 3; c++) {
cell =[flags_i cellAtRow: r column:c];
cell = [flags_i cellAtRow: r column: c];
i = ([cell intValue] > 0);
flags |= (i << ((c * 4) + r));
}
}
if (!flags)
[[map_i currentEntity] removeKeyPair:"spawnflags"];
[[map_i currentEntity] removeKeyPair: "spawnflags"];
else
[[map_i currentEntity] setKey: "spawnflags" toValue:va ("%i", flags)];
[[map_i currentEntity] setKey: "spawnflags" toValue: va ("%i", flags)];
[keypairview_i calcViewSize];
[keypairview_i display];
@ -291,28 +289,29 @@ id things_i;
return self;
}
//
// Fill the Entity browser
// (Delegate method - delegated in Interface Builder)
//
-(void) browser: sender createRowsForColumn:(int) column inMatrix: matrix
- (void) browser: sender
createRowsForColumn: (int)column
inMatrix: matrix
{
id cell;
int max;
int i;
id object;
id cell;
int max;
int i;
id object;
max =[entity_classes_i count];
max = [entity_classes_i count];
i = 0;
while (max--) {
object =[entity_classes_i objectAtIndex:i];
object = [entity_classes_i objectAtIndex: i];
[matrix addRow];
cell =[matrix cellAtRow: i++ column:0];
[cell setStringValue: [NSString stringWithCString:[object
classname]]];
[cell setLeaf:YES];
[cell setLoaded:YES];
cell = [matrix cellAtRow: i++ column: 0];
[cell setStringValue: [NSString
stringWithCString: [object classname]]];
[cell setLeaf: YES];
[cell setLoaded: YES];
}
}

View file

@ -9,16 +9,15 @@
#include "render.h"
extern id xyview_i;
extern id xyview_i;
#define MINSCALE 0.125
#define MAXSCALE 2.0
#define MINSCALE 0.125
#define MAXSCALE 2.0
extern vec3_t xy_viewnormal; // v_forward for xy view
extern float xy_viewdist; // clip behind this plane
extern vec3_t xy_viewnormal; // v_forward for xy view
extern float xy_viewdist; // clip behind this plane
extern NSRect xy_draw_rect;
extern NSRect xy_draw_rect;
void linestart (float r, float g, float b);
void lineflush (void);
@ -27,51 +26,57 @@ void linecolor (float r, float g, float b);
void XYmoveto (vec3_t pt);
void XYlineto (vec3_t pt);
@interface XYView:NSView
@interface XYView: NSView
{
NSRect realbounds, newrect, combinedrect;
NSPoint midpoint;
int gridsize;
float scale;
//
// for textured view
//
int xywidth, xyheight;
float *xyzbuffer;
unsigned *xypicbuffer;
float *xyzbuffer;
unsigned *xypicbuffer;
drawmode_t drawmode;
//
// UI links
id mode_radio_i;
//
id mode_radio_i;
}
-(float) currentScale;
- (float) currentScale;
-setModeRadio:m;
- (id) setModeRadio: m;
-drawMode:sender;
-setDrawMode:(drawmode_t) mode;
- (id) drawMode: sender;
- (id) setDrawMode: (drawmode_t)mode;
-newSuperBounds;
-newRealBounds:(NSRect) nb;
- (id) newSuperBounds;
- (id) newRealBounds: (NSRect)nb;
-addToScrollRange: (float) x:(float) y;
-setOrigin:(NSPoint) pt scale:(float) sc;
- (id) addToScrollRange: (float)x
: (float)y;
-centerOn:(vec3_t) org;
- (id) setOrigin: (NSPoint)pt scale: (float)sc;
-drawMode:sender;
- (id) centerOn: (vec3_t)org;
-superviewChanged;
- (id) drawMode: sender;
-(int) gridsize;
-(float) snapToGrid:(float) f;
- (id) superviewChanged;
- (int) gridsize;
- (float) snapToGrid: (float)f;
@end
@interface NSView(XYView)
-(void) setFrame:(NSRect) frame bounds:(NSRect) bounds scale:(NSSize) scale;
@interface NSView (XYView)
- (void) setFrame: (NSRect)frame
bounds: (NSRect)bounds
scale: (NSSize)scale;
@end
#endif // XYView_h

File diff suppressed because it is too large Load diff

View file

@ -3,14 +3,15 @@
#include <AppKit/AppKit.h>
@interface ZScrollView:NSScrollView
@interface ZScrollView: NSScrollView
{
id button1;
id button1;
}
-initWithFrame:(NSRect) frameRect button1:b1;
- (id) initWithFrame: (NSRect)frameRect
button1: b1;
-tile;
- (id) tile;
@end
#endif // ZScrollView_h

View file

@ -8,21 +8,23 @@ initWithFrame: button:
Initizes a scroll view with a button at it's lower right corner
====================
*/
- initWithFrame:(NSRect) frameRect button1:b1
- (id) initWithFrame: (NSRect)frameRect
button1: b1
{
[super initWithFrame:frameRect];
[super initWithFrame: frameRect];
[self addSubview:b1];
[self addSubview: b1];
button1 = b1;
[self setHasHorizontalScroller:YES];
[self setHasVerticalScroller:YES];
[self setHasHorizontalScroller: YES];
[self setHasVerticalScroller: YES];
[self setBorderType:NSBezelBorder];
[self setBorderType: NSBezelBorder];
return self;
}
/*
================
tile
@ -30,38 +32,36 @@ tile
Adjust the size for the pop up scale menu
=================
*/
-tile
- (id) tile
{
NSRect scrollerframe;
NSRect scrollerframe;
[super tile];
scrollerframe =[_horizScroller frame];
[button1 setFrame:scrollerframe];
scrollerframe = [_horizScroller frame];
[button1 setFrame: scrollerframe];
scrollerframe.size.width = 0;
[_horizScroller setFrame:scrollerframe];
[_horizScroller setHidden:YES];
[_horizScroller setFrame: scrollerframe];
[_horizScroller setHidden: YES];
return self;
}
-(BOOL) acceptsFirstResponder
- (BOOL) acceptsFirstResponder
{
return YES;
}
/*
- superviewSizeChanged:(const NSSize *)oldSize
#if 0
- (id) superviewSizeChanged: (const NSSize *)oldSize
{
[super superviewSizeChanged: oldSize];
[[self documentView] newSuperBounds];
return self;
}
*/
#endif
@end

View file

@ -7,43 +7,44 @@
#include "render.h"
extern id zview_i;
extern id zview_i;
// zplane controls the objects displayed in the xyview
extern float zplane;
extern float zplanedir;
extern float zplane;
extern float zplanedir;
@interface ZView:NSView
@interface ZView: NSView
{
float minheight, maxheight;
float oldminheight, oldmaxheight;
float topbound, bottombound; // for floor clipping
float minheight, maxheight;
float oldminheight, oldmaxheight;
float topbound, bottombound; // for floor clipping
float scale;
float scale;
vec3_t origin;
vec3_t origin;
NSBezierPath *checker;
NSBezierPath *checker;
}
-clearBounds;
-getBounds: (float *) top:(float *) bottom;
- (id) clearBounds;
- (id) getBounds: (float *)top
: (float *)bottom;
-getPoint:(NSPoint *) pt;
-setPoint:(NSPoint *) pt;
- (id) getPoint: (NSPoint *)pt;
- (id) setPoint: (NSPoint *)pt;
-addToHeightRange:(float) height;
- (id) addToHeightRange: (float)height;
-newRealBounds;
-newSuperBounds;
- (id) newRealBounds;
- (id) newSuperBounds;
-XYDrawSelf;
- (void) XYDrawSelf;
-(BOOL) XYmouseDown:(NSPoint *) pt;
- (BOOL) XYmouseDown: (NSPoint *)pt;
-setXYOrigin:(NSPoint *) pt;
- (id) setXYOrigin: (NSPoint *)pt;
-setOrigin:(NSPoint) pt scale:(float) sc;
- (id) setOrigin: (NSPoint)pt scale: (float)sc;
@end
#endif // ZView_h

View file

@ -7,14 +7,14 @@
#include "XYView.h"
#include "CameraView.h"
id zview_i;
id zview_i;
id zscrollview_i, zscalemenu_i, zscalebutton_i;
id zscrollview_i, zscalemenu_i, zscalebutton_i;
float zplane;
float zplanedir;
float zplane;
float zplanedir;
extern NSBezierPath *path;
extern NSBezierPath *path;
@implementation ZView
/*
@ -22,10 +22,10 @@ extern NSBezierPath *path;
initWithFrame:
==================
*/
- (id) initWithFrame:(NSRect) frameRect
- (id) initWithFrame: (NSRect)frameRect
{
NSPoint pt;
NSBezierPath *path;
NSPoint pt;
NSBezierPath *path;
path = checker = [NSBezierPath new];
[path setLineWidth: 0.3];
@ -37,36 +37,37 @@ initWithFrame:
origin[0] = 0.333;
origin[1] = 0.333;
[super initWithFrame:frameRect];
[super initWithFrame: frameRect];
[self allocateGState];
[self clearBounds];
zview_i = self;
scale = 1;
//
//
// initialize the pop up menus
//
zscalebutton_i =[[NSPopUpButton alloc] init];
[zscalebutton_i setTarget:self];
zscalebutton_i = [[NSPopUpButton alloc] init];
[zscalebutton_i setTarget: self];
[zscalebutton_i setAction: @selector (scaleMenuTarget:)];
[zscalebutton_i addItemWithTitle:@"12.5%"];
[zscalebutton_i addItemWithTitle:@"25%"];
[zscalebutton_i addItemWithTitle:@"50%"];
[zscalebutton_i addItemWithTitle:@"75%"];
[zscalebutton_i addItemWithTitle:@"100%"];
[zscalebutton_i addItemWithTitle:@"200%"];
[zscalebutton_i addItemWithTitle:@"300%"];
[zscalebutton_i selectItemAtIndex:4];
[zscalebutton_i addItemWithTitle: @"12.5%"];
[zscalebutton_i addItemWithTitle: @"25%"];
[zscalebutton_i addItemWithTitle: @"50%"];
[zscalebutton_i addItemWithTitle: @"75%"];
[zscalebutton_i addItemWithTitle: @"100%"];
[zscalebutton_i addItemWithTitle: @"200%"];
[zscalebutton_i addItemWithTitle: @"300%"];
[zscalebutton_i selectItemAtIndex: 4];
// initialize the scroll view
zscrollview_i =[[ZScrollView alloc] initWithFrame: frameRect
button1: zscalebutton_i];
[zscrollview_i setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
zscrollview_i = [[ZScrollView alloc]
initWithFrame: frameRect
button1: zscalebutton_i];
[zscrollview_i setAutoresizingMask: NSViewWidthSizable |
NSViewHeightSizable];
[zscrollview_i setDocumentView:self];
[zscrollview_i setDocumentView: self];
[_super_view setBoundsOrigin: NSMakePoint (0, 0)];
@ -78,19 +79,19 @@ initWithFrame:
[self newRealBounds];
[self setOrigin: pt scale:1];
[self setOrigin: pt scale: 1];
return zscrollview_i;
}
-setXYOrigin:(NSPoint *) pt
- (id) setXYOrigin: (NSPoint *)pt
{
origin[0] = pt->x + 0.333;
origin[1] = pt->y + 0.333;
return self;
}
-(float) currentScale
- (float) currentScale
{
return scale;
}
@ -100,16 +101,16 @@ initWithFrame:
setOrigin:scale:
===================
*/
-setOrigin:(NSPoint) pt scale:(float) sc
- (id) setOrigin: (NSPoint)pt scale: (float)sc
{
NSRect sframe;
NSRect bounds;
NSRect size;
NSRect sframe;
NSRect bounds;
NSRect size;
// calculate the area visible in the cliprect
scale = sc;
bounds =[_super_view bounds];
bounds = [_super_view bounds];
bounds.origin = pt;
bounds.size.width /= 1;
bounds.size.height /= scale;
@ -118,7 +119,7 @@ setOrigin:scale:
// union with the realbounds
bounds = NSUnionRect (size, bounds);
// redisplay everything
bounds.origin = NSMakePoint (-bounds.size.width/2, bounds.origin.y);
bounds.origin = NSMakePoint (-bounds.size.width / 2, bounds.origin.y);
sframe = bounds;
sframe.origin.x *= 1;
sframe.origin.y *= scale;
@ -127,7 +128,7 @@ setOrigin:scale:
// size this view
[quakeed_i disableFlushWindow];
[self setFrame:sframe bounds:bounds scale:NSMakeSize (1, scale)];
[self setFrame: sframe bounds: bounds scale: NSMakeSize (1, scale)];
// scroll and scale the clip view
pt.x *= 1;
@ -140,7 +141,6 @@ setOrigin:scale:
return self;
}
/*
====================
scaleMenuTarget:
@ -148,22 +148,21 @@ scaleMenuTarget:
Called when the scaler popup on the window is used
====================
*/
-scaleMenuTarget:sender
- (id) scaleMenuTarget: sender
{
char const *item;
char const *item;
NSRect rect;
NSPoint mid, org, orig;
float nscale;
item =[[sender titleOfSelectedItem] cString];
item = [[sender titleOfSelectedItem] cString];
sscanf (item, "%f", &nscale);
nscale /= 100;
if (nscale == scale)
return NULL;
// keep the center of the view constant
rect =[_super_view bounds];
// keep the center of the view constant
rect = [_super_view bounds];
mid.x = rect.size.width / 2;
mid.y = rect.size.height / 2;
@ -173,13 +172,12 @@ Called when the scaler popup on the window is used
orig.x = org.x - mid.x / 1;
orig.y = org.y - mid.y / nscale;
[self setOrigin: orig scale:nscale];
[self setOrigin: orig scale: nscale];
return self;
}
-clearBounds
- (id) clearBounds
{
topbound = 999999;
bottombound = -999999;
@ -187,20 +185,19 @@ Called when the scaler popup on the window is used
return self;
}
-getBounds: (float *) top:(float *) bottom;
- (id) getBounds: (float *)top: (float *)bottom;
{
*top = topbound;
*bottom = bottombound;
return self;
}
/*
==================
addToHeightRange:
==================
*/
-addToHeightRange:(float) height
- (id) addToHeightRange: (float)height
{
if (height < minheight)
minheight = height;
@ -209,7 +206,6 @@ addToHeightRange:
return self;
}
/*
==================
newSuperBounds
@ -217,7 +213,7 @@ newSuperBounds
When _super_view is resized
==================
*/
-newSuperBounds
- (id) newSuperBounds
{
oldminheight++;
[self newRealBounds];
@ -225,7 +221,6 @@ When _super_view is resized
return self;
}
/*
===================
newRealBounds
@ -234,17 +229,16 @@ Should only change the scroll bars, not cause any redraws.
If realbounds has shrunk, nothing will change.
===================
*/
-newRealBounds
- (id) newRealBounds
{
NSRect bounds;
NSRect sframe;
NSRect size;
NSRect bounds;
NSRect sframe;
NSRect size;
NSClipView *cv = (NSClipView *) _super_view;
NSClipView *cv = (NSClipView *) _super_view;
if (minheight == oldminheight && maxheight == oldmaxheight)
return self;
oldminheight = minheight;
oldmaxheight = maxheight;
@ -252,7 +246,7 @@ If realbounds has shrunk, nothing will change.
maxheight += 16;
// calculate the area visible in the cliprect
bounds =[cv bounds];
bounds = [cv bounds];
bounds.size.width /= 1;
bounds.size.height /= scale;
@ -266,7 +260,7 @@ If realbounds has shrunk, nothing will change.
// size this view
[quakeed_i disableFlushWindow];
[self setFrame:sframe bounds:bounds scale:NSMakeSize (1, scale)];
[self setFrame: sframe bounds: bounds scale: NSMakeSize (1, scale)];
[[_super_view superview] reflectScrolledClipView: cv];
@ -276,8 +270,6 @@ If realbounds has shrunk, nothing will change.
return self;
}
/*
============
drawGrid
@ -289,29 +281,30 @@ Rect is in global world (unscaled) coordinates
============
*/
-drawGrid:(NSRect) rect
- (id) drawGrid: (NSRect)rect
{
int y, stopy;
float top, bottom;
int left, right;
int gridsize;
BOOL showcoords;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
int y, stopy;
float top, bottom;
int left, right;
int gridsize;
BOOL showcoords;
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
showcoords =[quakeed_i showCoordinates];
showcoords = [quakeed_i showCoordinates];
gridsize =[xyview_i gridsize];
gridsize = [xyview_i gridsize];
left = _bounds.origin.x;
right = 24;
bottom = rect.origin.y - 1;
top = rect.origin.y + rect.size.height + 2;
//
// grid
//
// can't just divide by grid size because of negetive coordinate
// truncating direction
//
// can't just divide by grid size because of negetive coordinate
// truncating direction
if (gridsize >= 4 / scale) {
y = floor (bottom / gridsize);
stopy = floor (top / gridsize);
@ -320,19 +313,23 @@ Rect is in global world (unscaled) coordinates
stopy *= gridsize;
if (y < bottom)
y += gridsize;
[path removeAllPoints];
for (; y <= stopy; y += gridsize)
for ( ; y <= stopy; y += gridsize) {
if (y & 31) {
[path moveToPoint:NSMakePoint (left, y)];
[path lineToPoint:NSMakePoint (right, y)];
[path moveToPoint: NSMakePoint (left, y)];
[path lineToPoint: NSMakePoint (right, y)];
}
// endUserPath (upath, dps_ustroke);
[[NSColor colorWithCalibratedRed: 0.8 green: 0.8 blue: 1.0 alpha: 1.0]
set]; // thin grid color
}
// endUserPath (upath, dps_ustroke);
[[NSColor colorWithCalibratedRed: 0.8
green: 0.8
blue: 1.0
alpha: 1.0] set]; // thin grid color
[path stroke];
}
//
// half tiles
//
@ -345,12 +342,11 @@ Rect is in global world (unscaled) coordinates
stopy *= 32;
if (stopy >= top)
stopy -= 32;
[path removeAllPoints];
for (; y <= stopy; y += 64) {
[path moveToPoint:NSMakePoint (left, y)];
[path lineToPoint:NSMakePoint (right, y)];
for ( ; y <= stopy; y += 64) {
[path moveToPoint: NSMakePoint (left, y)];
[path lineToPoint: NSMakePoint (right, y)];
}
// endUserPath (upath, dps_ustroke);
@ -370,36 +366,32 @@ Rect is in global world (unscaled) coordinates
y += 64;
if (stopy >= top)
stopy -= 64;
[path removeAllPoints];
[[NSColor colorWithCalibratedWhite: 0.0 / 16.0 alpha: 1.0]
set]; // for text
[[NSColor colorWithCalibratedWhite: 0.0 / 16.0 alpha: 1.0] set]; // for text
[[NSFont systemFontOfSize: 10] set];
for (; y <= stopy; y += 64) {
for ( ; y <= stopy; y += 64) {
if (showcoords) {
NSString *s = [NSString stringWithFormat: @"%i", y];
NSString *s = [NSString stringWithFormat: @"%i", y];
[s drawAtPoint: NSMakePoint (left, y) withAttributes: attribs];
}
[path moveToPoint:NSMakePoint (left + 24, y)];
[path lineToPoint:NSMakePoint (right, y)];
[path moveToPoint: NSMakePoint (left + 24, y)];
[path lineToPoint: NSMakePoint (right, y)];
}
// divider
[path moveToPoint:NSMakePoint (0, _bounds.origin.y)];
[path lineToPoint:NSMakePoint (0,
_bounds.origin.y + _bounds.size.height)];
// divider
[path moveToPoint: NSMakePoint (0, _bounds.origin.y)];
[path lineToPoint: NSMakePoint (0, _bounds.origin.y + _bounds.size.height)];
// endUserPath (upath, dps_ustroke);
[[NSColor colorWithCalibratedWhite: 10.0 / 16.0 alpha: 1.0]
set];
// endUserPath (upath, dps_ustroke);
[[NSColor colorWithCalibratedWhite: 10.0 / 16.0 alpha: 1.0] set];
[path stroke];
//
// origin
//
[[NSColor colorWithCalibratedWhite: 4.0 / 16.0 alpha: 1.0]
set];
[[NSColor colorWithCalibratedWhite: 4.0 / 16.0 alpha: 1.0] set];
[path removeAllPoints];
[path setLineWidth: 5];
[path moveToPoint: NSMakePoint (right, 0)];
@ -410,15 +402,13 @@ Rect is in global world (unscaled) coordinates
return self;
}
-drawZplane
- (id) drawZplane
{
[[NSColor colorWithCalibratedRed: 0.2 green: 0.2 blue: 0.0 alpha: 1.0]
set];
[path appendBezierPathWithArcWithCenter: NSMakePoint (0, zplane)
radius: 4
startAngle: 0
endAngle: 180];
[[NSColor colorWithCalibratedRed: 0.2 green: 0.2 blue: 0.0 alpha: 1.0] set];
[path appendBezierPathWithArcWithCenter: NSMakePoint (0, zplane)
radius: 4
startAngle: 0
endAngle: 180];
[path fill];
return self;
}
@ -429,15 +419,15 @@ drawSelf
===============================================================================
*/
- (void) drawRect: (NSRect) rect
- (void) drawRect: (NSRect)rect
{
//NSRect visRect;
//Sys_Printf("ZView:drawRect\n");
// NSRect visRect;
// Sys_Printf("ZView:drawRect\n");
minheight = 999999;
maxheight = -999999;
// allways draw the entire bar
//visRect =[self visibleRect];
// allways draw the entire bar
// visRect =[self visibleRect];
rect = [self visibleRect];
[quakeed_i zNoRestore: rect];
@ -446,13 +436,13 @@ drawSelf
NSEraseRect (rect);
// draw grid
[self drawGrid:rect];
[self drawGrid: rect];
// draw zplane
// [self drawZplane]; FIXME zplane doesn't do anything yet
// draw all entities
[map_i makeUnselectedPerform:@selector (ZDrawSelf)];
[map_i makeUnselectedPerform: @selector (ZDrawSelf)];
// possibly resize the view
[self newRealBounds];
@ -465,8 +455,8 @@ XYDrawSelf
*/
- (void) XYDrawSelf
{
NSBezierPath *path;
NSAffineTransform *trans;
NSBezierPath *path;
NSAffineTransform *trans;
[[NSColor colorWithCalibratedRed: 0 green: 0.5 blue: 1.0 alpha: 1.0] set];
@ -479,27 +469,25 @@ XYDrawSelf
[path release];
}
/*
==============
getPoint: (NSPoint *)pt
==============
*/
-getPoint:(NSPoint *) pt
- (id) getPoint: (NSPoint *)pt
{
pt->x = origin[0] + 0.333; // offset a bit to avoid edge cases
pt->x = origin[0] + 0.333; // offset a bit to avoid edge cases
pt->y = origin[1] + 0.333;
return self;
}
-setPoint:(NSPoint *) pt
- (id) setPoint: (NSPoint *)pt
{
origin[0] = pt->x;
origin[1] = pt->y;
return self;
}
/*
==============================================================================
@ -508,53 +496,51 @@ MOUSE CLICKING
==============================================================================
*/
/*
================
dragLoop:
================
*/
static NSPoint oldreletive;
static NSPoint oldreletive;
-dragFrom: (NSEvent *) startevent useGrid: (BOOL) ug callback:(void (*)(float dy)) callback
- (id) dragFrom: (NSEvent *)startevent
useGrid: (BOOL)ug
callback: (void (*)(float dy))callback
{
NSEvent *event;
NSEvent *event;
NSPoint startpt, newpt;
NSPoint reletive, delta;
int gridsize;
gridsize =[xyview_i gridsize];
gridsize = [xyview_i gridsize];
startpt =[startevent locationInWindow];
startpt =[self convertPoint: startpt fromView:NULL];
startpt = [startevent locationInWindow];
startpt = [self convertPoint: startpt fromView: NULL];
oldreletive.x = oldreletive.y = 0;
reletive.x = 0;
while (1) {
unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask
| NSRightMouseUpMask | NSRightMouseDraggedMask
| NSApplicationDefinedMask;
event =[NSApp nextEventMatchingMask: eventMask untilDate:[NSDate
distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue:YES];
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)
if ([event type] == NSLeftMouseUp || [event type] == NSRightMouseUp)
break;
newpt =[event locationInWindow];
newpt =[self convertPoint: newpt fromView:NULL];
newpt = [event locationInWindow];
newpt = [self convertPoint: newpt fromView: NULL];
reletive.y = newpt.y - startpt.y;
if (ug) { // we want truncate towards 0 behavior
// here
if (ug) // we want truncate-towards-0 behavior here
reletive.y = gridsize * (int) (reletive.y / gridsize);
}
if (reletive.y == oldreletive.y)
continue;
delta.y = reletive.y - oldreletive.y;
oldreletive = reletive;
callback (delta.y);
@ -563,8 +549,7 @@ static NSPoint oldreletive;
return self;
}
//============================================================================
// ============================================================================
void
ZDragCallback (float dy)
@ -573,21 +558,20 @@ ZDragCallback (float dy)
sb_translate[1] = 0;
sb_translate[2] = dy;
[map_i makeSelectedPerform:@selector (translate)];
[map_i makeSelectedPerform: @selector (translate)];
[quakeed_i redrawInstance];
}
-selectionDragFrom:(NSEvent *) theEvent
- (id) selectionDragFrom: (NSEvent *)theEvent
{
Sys_Printf ("dragging selection\n");
[self dragFrom: theEvent useGrid: YES callback:ZDragCallback];
[self dragFrom: theEvent useGrid: YES callback: ZDragCallback];
[quakeed_i updateCamera];
return self;
}
//============================================================================
// ============================================================================
void
ZScrollCallback (float dy)
@ -596,31 +580,31 @@ ZScrollCallback (float dy)
NSPoint neworg;
float scale;
basebounds =[[zview_i superview] bounds];
basebounds =[zview_i convertRect: basebounds fromView:[zview_i
superview]];
basebounds = [[zview_i superview] bounds];
basebounds = [zview_i convertRect: basebounds fromView: [zview_i
superview]];
neworg.y = basebounds.origin.y - dy;
scale =[zview_i currentScale];
scale = [zview_i currentScale];
oldreletive.y -= dy;
[zview_i setOrigin: neworg scale:scale];
[zview_i setOrigin: neworg scale: scale];
}
-scrollDragFrom:(NSEvent *) theEvent
- (id) scrollDragFrom: (NSEvent *)theEvent
{
Sys_Printf ("scrolling view\n");
[self dragFrom: theEvent useGrid: YES callback:ZScrollCallback];
[self dragFrom: theEvent useGrid: YES callback: ZScrollCallback];
return self;
}
//============================================================================
// ============================================================================
void
ZControlCallback (float dy)
{
int i;
int i;
for (i = 0; i < numcontrolpoints; i++)
controlpoints[i][2] += dy;
@ -629,31 +613,29 @@ ZControlCallback (float dy)
[quakeed_i redrawInstance];
}
-(BOOL) planeDragFrom:(NSEvent *) theEvent
- (BOOL) planeDragFrom: (NSEvent *)theEvent
{
NSPoint pt;
vec3_t dragpoint;
if ([map_i numSelected] != 1)
return NO;
pt =[theEvent locationInWindow];
pt =[self convertPoint: pt fromView:NULL];
pt = [theEvent locationInWindow];
pt = [self convertPoint: pt fromView: NULL];
dragpoint[0] = origin[0];
dragpoint[1] = origin[1];
dragpoint[2] = pt.y;
[[map_i selectedBrush] getZdragface:dragpoint];
[[map_i selectedBrush] getZdragface: dragpoint];
if (!numcontrolpoints)
return NO;
Sys_Printf ("dragging brush plane\n");
pt =[theEvent locationInWindow];
pt =[self convertPoint: pt fromView:NULL];
pt = [theEvent locationInWindow];
pt = [self convertPoint: pt fromView: NULL];
[self dragFrom: theEvent useGrid: YES callback:ZControlCallback];
[self dragFrom: theEvent useGrid: YES callback: ZControlCallback];
[[map_i selectedBrush] removeIfInvalid];
@ -661,52 +643,51 @@ ZControlCallback (float dy)
return YES;
}
//============================================================================
// ============================================================================
/*
===================
mouseDown
===================
*/
-(void) mouseDown:(NSEvent *) theEvent
- (void) mouseDown: (NSEvent *)theEvent
{
NSPoint pt;
int flags;
vec3_t p1;
pt =[theEvent locationInWindow];
pt =[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 modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
//
// shift click to select / deselect a brush from the world
//
if (flags == NSShiftKeyMask) {
[map_i selectRay: p1: p1:NO];
[map_i selectRay: p1: p1: NO];
return;
}
//
// alt click = set entire brush texture
//
if (flags == NSAlternateKeyMask) {
[map_i setTextureRay: p1: p1:YES];
[map_i setTextureRay: p1: p1: YES];
return;
}
//
// control click = position view
//
if (flags == NSControlKeyMask) {
[cameraview_i setZOrigin:pt.y];
[cameraview_i setZOrigin: pt.y];
[quakeed_i updateAll];
[cameraview_i ZmouseDown: &pt flags:[theEvent modifierFlags]];
[cameraview_i ZmouseDown: &pt flags: [theEvent modifierFlags]];
return;
}
//
@ -714,18 +695,16 @@ mouseDown
//
if (flags == 0) {
// check eye
if ([cameraview_i ZmouseDown: &pt flags:[theEvent modifierFlags]])
if ([cameraview_i ZmouseDown: &pt flags: [theEvent modifierFlags]])
return;
if ([map_i numSelected]) {
if (pt.x > 0) {
if ([self planeDragFrom:theEvent])
if ([self planeDragFrom: theEvent])
return;
}
[self selectionDragFrom:theEvent];
[self selectionDragFrom: theEvent];
return;
}
}
Sys_Printf ("bad flags for click %x %g %g\n", flags, pt.x, pt.y);
@ -738,35 +717,31 @@ mouseDown
rightMouseDown
===================
*/
-(void) rightMouseDown:(NSEvent *) theEvent
- (void) rightMouseDown: (NSEvent *)theEvent
{
NSPoint pt;
int flags;
pt =[theEvent locationInWindow];
pt =[self convertPoint: pt fromView:NULL];
pt = [theEvent locationInWindow];
pt = [self convertPoint: pt fromView: NULL];
flags =
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
[theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask |
NSAlternateKeyMask | NSCommandKeyMask);
//
// click = scroll view
//
if (flags == 0) {
[self scrollDragFrom:theEvent];
}
if (flags == 0)
[self scrollDragFrom: theEvent];
Sys_Printf ("bad flags for click\n");
NopSound ();
}
/*
===============================================================================
XY mouse view methods
XY mouse view methods
===============================================================================
*/
@ -776,14 +751,16 @@ rightMouseDown
modalMoveLoop
================
*/
-modalMoveLoop: (NSPoint *) basept: (vec3_t) movemod:converter
- (id) modalMoveLoop: (NSPoint *)basept
: (vec3_t)movemod
: converter
{
vec3_t originbase;
NSEvent *event;
NSEvent *event;
NSPoint newpt;
vec3_t delta;
int i;
int i;
VectorCopy (origin, originbase);
@ -792,27 +769,27 @@ modalMoveLoop
while ([event type] != NSLeftMouseUp) {
// calculate new point
newpt =[event locationInWindow];
newpt =[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;
delta[2] = delta[1]; // height change
delta[2] = delta[1]; // height change
for (i = 0; i < 3; i++)
origin[i] = originbase[i] + movemod[i] * delta[i];
drawentry:
// instance draw new frame
[quakeed_i newinstance];
[self display];
unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask;
unsigned eventMask = NSLeftMouseUpMask | NSLeftMouseDraggedMask;
event =[NSApp nextEventMatchingMask: eventMask untilDate:[NSDate
distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue:YES];
event = [NSApp nextEventMatchingMask: eventMask untilDate: [NSDate
distantFuture]
inMode: NSEventTrackingRunLoopMode dequeue:
YES];
}
// draw the brush back into the window buffer
@ -826,18 +803,17 @@ modalMoveLoop
XYmouseDown
===============
*/
-(BOOL) XYmouseDown:(NSPoint *) pt
- (BOOL) XYmouseDown: (NSPoint *)pt
{
vec3_t movemod;
vec3_t movemod;
if (fabs (pt->x - origin[0]) > 16 || fabs (pt->y - origin[1]) > 16)
return NO;
movemod[0] = 1;
movemod[1] = 1;
movemod[2] = 0;
[self modalMoveLoop: pt: movemod:xyview_i];
[self modalMoveLoop: pt: movemod: xyview_i];
return YES;
}

View file

@ -1,9 +1,6 @@
char token[MAXTOKEN];
boolean unget;
char *script_p;
char *script_p;
int scriptline;
void
@ -17,38 +14,42 @@ StartTokenParsing (char *data)
boolean
GetToken (boolean crossline)
{
char *token_p;
char *token_p;
if (unget) // is a token allready waiting?
if (unget) // is a token allready waiting?
return true;
//
// skip space
//
skipspace:
skipspace:
while (*script_p <= 32) {
if (!*script_p) {
if (!crossline)
Error ("Line %i is incomplete", scriptline);
return false;
}
if (*script_p++ == '\n') {
if (!crossline)
Error ("Line %i is incomplete", scriptline);
scriptline++;
}
}
if (script_p[0] == '/' && script_p[1] == '/') // comment field
{
if (script_p[0] == '/' && script_p[1] == '/') { // comment field
if (!crossline)
Error ("Line %i is incomplete\n", scriptline);
while (*script_p++ != '\n')
while (*script_p++ != '\n') {
if (!*script_p) {
if (!crossline)
Error ("Line %i is incomplete", scriptline);
return false;
}
}
goto skipspace;
}
//
@ -61,17 +62,19 @@ GetToken (boolean crossline)
while (*script_p != '"') {
if (!*script_p)
Error ("EOF inside quoted token");
*token_p++ = *script_p++;
if (token_p == &token[MAXTOKEN])
Error ("Token too large on line %i", scriptline);
}
script_p++;
} else
} else {
while (*script_p > 32) {
*token_p++ = *script_p++;
if (token_p == &token[MAXTOKEN])
Error ("Token too large on line %i", scriptline);
}
}
*token_p = 0;
@ -84,27 +87,22 @@ UngetToken ()
unget = true;
}
void
qprintf (char *fmt, ...) // prints text to cmd_out_i
qprintf (char *fmt, ...) // prints text to cmd_out_i
{
va_list argptr;
static char string[1024];
va_list argptr;
static char string[1024];
va_start (argptr, fmt);
vsprintf (string, fmt, argptr);
va_end (argptr);
[g_cmd_out_i setStringValue: [NSString stringWithCString:string]];
[g_cmd_out_i setStringValue: [NSString stringWithCString: string]];
// NSPing ();
return;
}
/*
=================
Error
@ -112,15 +110,16 @@ Error
For abnormal program terminations
=================
*/
BOOL in_error;
BOOL in_error;
void
Error (char *error, ...)
{
va_list argptr;
static char string[1024];
va_list argptr;
static char string[1024];
if (in_error)
[NSApp terminate:NULL];
[NSApp terminate: NULL];
in_error = YES;
va_start (argptr, error);
@ -129,19 +128,16 @@ Error (char *error, ...)
strcat (string, "\nmap saved to " FN_CRASHSAVE);
[map_i writeMapFile: FN_CRASHSAVE useRegion:NO];
NSRunAlertPanel (@"Error",[NSString stringWithCString:string], NULL, NULL,
NULL);
[NSApp terminate:NULL];
[map_i writeMapFile: FN_CRASHSAVE useRegion: NO];
NSRunAlertPanel (@"Error", [NSString stringWithCString: string],
NULL, NULL, NULL);
[NSApp terminate: NULL];
}
void
CleanupName (char *in, char *out)
{
int i;
int i;
for (i = 0; i < 16; i++) {
if (!in[i])
@ -150,20 +146,18 @@ CleanupName (char *in, char *out)
out[i] = toupper (in[i]);
}
for (; i < 16; i++)
for ( ; i < 16; i++)
out[i] = 0;
}
void
PrintRect (NSRect * r)
{
printf ("(%4.0f, %4.0f) + (%4.0f, %4.0f) = (%4.0f,%4.0f)\n", r->origin.x,
r->origin.y, r->size.width, r->size.height,
r->origin.x + r->size.width, r->origin.y + r->size.height);
r->origin.y, r->size.width, r->size.height,
r->origin.x + r->size.width, r->origin.y + r->size.height);
}
/*
============
FileTime
@ -174,7 +168,7 @@ returns -1 if not present
int
FileTime (char *path)
{
struct stat buf;
struct stat buf;
if (stat (path, &buf) == -1)
return -1;
@ -190,10 +184,10 @@ CreatePath
void
CreatePath (char *path)
{
char *ofs;
char *ofs;
for (ofs = path + 1; *ofs; ofs++) {
if (*ofs == '/') { // create the directory
if (*ofs == '/') { // create the directory
*ofs = 0;
mkdir (path, 0777);
*ofs = '/';
@ -204,9 +198,8 @@ CreatePath (char *path)
int
I_FileOpenRead (char *path, int *handle)
{
int h;
struct stat fileinfo;
int h;
struct stat fileinfo;
h = open (path, O_RDONLY, 0666);
*handle = h;
@ -222,7 +215,7 @@ I_FileOpenRead (char *path, int *handle)
int
I_FileOpenWrite (char *path)
{
int handle;
int handle;
umask (0);
@ -244,28 +237,28 @@ Copies a more recent net file to the local drive
void
Sys_UpdateFile (char *path, char *netpath)
{
int ltime, ntime;
int in, out, size;
char *buf;
int ltime, ntime;
int in, out, size;
char *buf;
ltime = FileTime (path);
ntime = FileTime (netpath);
if (ntime <= ltime)
return; // up to date
return; // up to date
// copy the file
// copy the file
printf ("UpdateFile: copying %s to %s...\n", netpath, path);
size = I_FileOpenRead (netpath, &in);
buf = malloc (size);
if (read (in, buf, size) != size)
Error ("UpdateFile: couldn't read all of %s", netpath);
close (in);
CreatePath (path);
out = I_FileOpenWrite (path);
write (out, buf, size);
close (out);
}

View file

@ -14,7 +14,7 @@
#include "mathlib.h"
#include "EntityClass.h"
#include "Project.h"
#include "Project.h"
#include "QuakeEd.h"
#include "Map.h"
#include "TexturePalette.h"
@ -26,35 +26,34 @@
#include "CameraView.h"
#include "ZView.h"
#include "ZScrollView.h"
#include "Preferences.h"
#include "InspectorControl.h"
#include "Preferences.h"
#include "InspectorControl.h"
#include "PopScrollView.h"
#include "KeypairView.h"
#include "Things.h"
#include "TextureView.h"
#include "Clipper.h"
void PrintRect (NSRect * r);
int FileTime (char *path);
void Sys_UpdateFile (char *path, char *netpath);
void CleanupName (char *in, char *out);
void PrintRect (NSRect * r);
int FileTime (char *path);
void Sys_UpdateFile (char *path, char *netpath);
void CleanupName (char *in, char *out);
extern BOOL in_error;
void Error (char *error, ...);
extern BOOL in_error;
void Error (char *error, ...);
#define MAXTOKEN 128
extern char token[MAXTOKEN];
extern int scriptline;
#define MAXTOKEN 128
extern char token[MAXTOKEN];
extern int scriptline;
void StartTokenParsing (char *data);
boolean GetToken (boolean crossline); // returns false at eof
void UngetToken ();
void StartTokenParsing (char *data);
boolean GetToken (boolean crossline); // returns false at eof
void UngetToken ();
#define FN_CMDOUT "/tmp/QuakeEdCmd.txt"
#define FN_TEMPSAVE "/qcache/temp.map"
#define FN_AUTOSAVE "/qcache/AutoSaveMap.map"
#define FN_CRASHSAVE "/qcache/ErrorSaveMap.map"
#define FN_DEVLOG "/qcache/devlog"
#define FN_CMDOUT "/tmp/QuakeEdCmd.txt"
#define FN_TEMPSAVE "/qcache/temp.map"
#define FN_AUTOSAVE "/qcache/AutoSaveMap.map"
#define FN_CRASHSAVE "/qcache/ErrorSaveMap.map"
#define FN_DEVLOG "/qcache/devlog"
#endif // qedefs_h

View file

@ -3,19 +3,19 @@
#include "SetBrush.h"
typedef enum { dr_wire, dr_flat, dr_texture } drawmode_t;
typedef enum {dr_wire, dr_flat, dr_texture} drawmode_t;
extern int r_width, r_height;
extern unsigned *r_picbuffer;
extern float *r_zbuffer;
extern int r_width, r_height;
extern unsigned *r_picbuffer;
extern float *r_zbuffer;
extern vec3_t r_origin, r_matrix[3];
extern BOOL r_drawflat;
extern vec3_t r_origin, r_matrix[3];
extern BOOL r_drawflat;
void REN_ClearBuffers (void);
void REN_DrawCameraFace (face_t * idpol);
void REN_DrawXYFace (face_t * idpol);
void REN_BeginCamera (void);
void REN_BeginXY (void);
void REN_ClearBuffers (void);
void REN_DrawCameraFace (face_t * idpol);
void REN_DrawXYFace (face_t * idpol);
void REN_BeginCamera (void);
void REN_BeginXY (void);
#endif // render_h

View file

@ -1,30 +1,29 @@
#include "render.h"
extern vec3_t xy_viewnormal;
extern vec3_t xy_viewnormal;
//define NOLIGHT
// define NOLIGHT
vec3_t r_origin, r_matrix[3];
vec3_t r_origin, r_matrix[3];
int t_width, t_height;
unsigned *t_data;
unsigned *t_data;
int t_widthmask, t_heightmask, t_widthshift;
float t_widthadd, t_heightadd;
int r_width, r_height;
float *r_zbuffer;
unsigned *r_picbuffer;
float *r_zbuffer;
unsigned *r_picbuffer;
vec5_t rightside, leftside, rightstep, leftstep;
vec5_t rightside, leftside, rightstep, leftstep;
face_t *r_face;
face_t *r_face;
BOOL r_drawflat;
BOOL r_drawflat;
pixel32_t r_flatcolor;
pixel32_t r_flatcolor;
int sy[20];
int sy[20];
/*
====================
@ -34,7 +33,7 @@ REN_ClearBuffers
void
REN_ClearBuffers (void)
{
int size;
int size;
size = r_width * r_height * 4;
@ -42,22 +41,20 @@ REN_ClearBuffers (void)
memset (r_picbuffer, 0, size);
}
/*
====================
REN_SetTexture
====================
*/
void
REN_SetTexture (face_t * face)
{
int i;
int t_heightshift;
qtexture_t *q;
qtexture_t *q;
if (!face->qtexture)
face->qtexture = TEX_ForName (face->texture.texture); // try to load
face->qtexture = TEX_ForName (face->texture.texture); // try to load
q = face->qtexture;
t_width = q->width;
@ -90,7 +87,7 @@ REN_SetTexture (face_t * face)
}
if ((1 << t_widthshift) != t_width || (1 << t_heightshift) != t_height)
t_widthshift = t_heightshift = 0; // non power of two
t_widthshift = t_heightshift = 0; // non power of two
}
/*
@ -106,7 +103,7 @@ REN_DrawSpan (int y)
int tx, ty;
int x1, x2;
float ufrac, vfrac, zfrac, lightfrac, ustep, vstep, zstep;
pixel32_t *in, *out;
pixel32_t *in, *out;
float scale;
if (y < 0 || y >= r_height)
@ -142,7 +139,6 @@ REN_DrawSpan (int y)
if (x2 > r_width)
x2 = r_width;
ofs = y * r_width + x1;
// this should be specialized for 1.0 / 0.5 / 0.75 light levels
@ -155,14 +151,14 @@ REN_DrawSpan (int y)
if (t_widthshift) {
tx = (int) ((ufrac * scale)) & t_widthmask;
ty = (int) ((vfrac * scale)) & t_heightmask;
in = (pixel32_t *) & t_data[(ty << t_widthshift) + tx];
in = (pixel32_t *) &t_data[(ty << t_widthshift) + tx];
} else {
tx = (int) ((ufrac * scale) + t_widthadd) % t_width;
ty = (int) ((vfrac * scale) + t_heightadd) % t_height;
in = (pixel32_t *) & t_data[ty * t_width + tx];
in = (pixel32_t *) &t_data[ty * t_width + tx];
}
out = (pixel32_t *) & r_picbuffer[ofs];
out = (pixel32_t *) &r_picbuffer[ofs];
#ifdef NOLIGHT
*out = *in;
#else
@ -177,7 +173,6 @@ REN_DrawSpan (int y)
zfrac += zstep;
ofs++;
}
}
/*
@ -188,11 +183,11 @@ REN_DrawFlatSpan
void
REN_DrawFlatSpan (int y)
{
int x, count;
int ofs;
int x1, x2;
float zfrac, zstep;
int *out;
int x, count;
int ofs;
int x1, x2;
float zfrac, zstep;
int *out;
if (y < 0 || y >= r_height)
return;
@ -228,7 +223,6 @@ REN_DrawFlatSpan (int y)
zfrac += zstep;
ofs++;
}
}
/*
@ -240,12 +234,12 @@ REN_RasterizeFace
void
REN_RasterizeFace (winding_t * w)
{
int y;
int i;
int top, bot;
int leftv, rightv;
int count;
int numvertex;
int y;
int i;
int top, bot;
int leftv, rightv;
int count;
int numvertex;
//
// find top vertex
@ -271,7 +265,7 @@ REN_RasterizeFace (winding_t * w)
rightv = leftv;
if (top < 0 || bot > r_height || top > bot)
return; // shouldn't have to have this...
return; // shouldn't have to have this...
//
// render a trapezoid
@ -283,6 +277,7 @@ REN_RasterizeFace (winding_t * w)
do {
for (i = 0; i < 5; i++)
leftside[i] = w->points[leftv][i];
leftv--;
if (leftv == -1)
leftv = numvertex - 1;
@ -295,6 +290,7 @@ REN_RasterizeFace (winding_t * w)
do {
for (i = 0; i < 5; i++)
rightside[i] = w->points[rightv][i];
rightv++;
if (rightv == numvertex)
rightv = 0;
@ -318,7 +314,7 @@ REN_RasterizeFace (winding_t * w)
}
}
//=============================================================================
// =============================================================================
/*
==================
@ -333,7 +329,7 @@ REN_DrawSpanLinear (int y)
int tx, ty;
int x1, x2;
float ufrac, vfrac, zfrac, ustep, vstep, zstep;
pixel32_t *in, *out;
pixel32_t *in, *out;
float scale;
if (y < 0 || y >= r_height)
@ -359,7 +355,6 @@ REN_DrawSpanLinear (int y)
ustep = (rightside[3] - ufrac) * scale;
vstep = (rightside[4] - vfrac) * scale;
if (x1 < 0) {
ufrac -= x1 * ustep;
vfrac -= x1 * vstep;
@ -379,14 +374,14 @@ REN_DrawSpanLinear (int y)
if (t_widthshift) {
tx = (int) ufrac & t_widthmask;
ty = (int) vfrac & t_heightmask;
in = (pixel32_t *) & t_data[(ty << t_widthshift) + tx];
in = (pixel32_t *) &t_data[(ty << t_widthshift) + tx];
} else {
tx = (int) (ufrac + t_widthadd) % t_width;
ty = (int) (vfrac + t_heightadd) % t_height;
in = (pixel32_t *) & t_data[ty * t_width + tx];
in = (pixel32_t *) &t_data[ty * t_width + tx];
}
out = (pixel32_t *) & r_picbuffer[ofs];
out = (pixel32_t *) &r_picbuffer[ofs];
*out = *in;
}
ufrac += ustep;
@ -394,7 +389,6 @@ REN_DrawSpanLinear (int y)
zfrac += zstep;
ofs++;
}
}
/*
@ -406,12 +400,12 @@ REN_RasterizeFaceLinear
void
REN_RasterizeFaceLinear (winding_t * w)
{
int y;
int i;
int top, bot;
int leftv, rightv;
int count;
int numvertex;
int y;
int i;
int top, bot;
int leftv, rightv;
int count;
int numvertex;
//
// find top vertex
@ -434,7 +428,7 @@ REN_RasterizeFaceLinear (winding_t * w)
rightv = leftv;
if (top < 0 || bot > r_height || top > bot)
return; // shouldn't have to have this...
return; // shouldn't have to have this...
//
// render a trapezoid
@ -446,6 +440,7 @@ REN_RasterizeFaceLinear (winding_t * w)
do {
for (i = 0; i < 5; i++)
leftside[i] = w->points[leftv][i];
leftv--;
if (leftv == -1)
leftv = numvertex - 1;
@ -458,6 +453,7 @@ REN_RasterizeFaceLinear (winding_t * w)
do {
for (i = 0; i < 5; i++)
rightside[i] = w->points[rightv][i];
rightv++;
if (rightv == numvertex)
rightv = 0;
@ -478,7 +474,7 @@ REN_RasterizeFaceLinear (winding_t * w)
}
}
//============================================================================
// ============================================================================
/*
==================
@ -494,39 +490,37 @@ REN_BeginCamera (void)
r_width_2 = (float) r_width / 2;
r_height_3 = (float) r_height / 3;
// clip to right side
// clip to right side
rfrustum[0].normal[0] = -1;
rfrustum[0].normal[1] = 0;
rfrustum[0].normal[2] = 1;
rfrustum[0].dist = 0;
// clip to left side
// clip to left side
rfrustum[1].normal[0] = 1;
rfrustum[1].normal[1] = 0;
rfrustum[1].normal[2] = 1;
rfrustum[1].dist = 0;
// clip to top side
// clip to top side
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
// clip to bottom side
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
// near Z
rfrustum[4].normal[0] = 0;
rfrustum[4].normal[1] = 0;
rfrustum[4].normal[2] = 1;
rfrustum[4].dist = 1;
}
void
REN_BeginXY (void)
{
@ -562,11 +556,11 @@ REN_DrawCameraFace (face_t * idpol)
int i;
float scale;
int numvertex;
winding_t *w, *in;
winding_t *w, *in;
vec3_t temp;
if (!idpol->w)
return; // overconstrained plane
return; // overconstrained plane
r_face = idpol;
@ -614,7 +608,6 @@ REN_DrawCameraFace (face_t * idpol)
w->points[i][2] = scale;
}
//
// draw it
//
@ -624,7 +617,6 @@ REN_DrawCameraFace (face_t * idpol)
free (w);
}
/*
=====================
REN_DrawXYFace
@ -634,14 +626,14 @@ void
REN_DrawXYFace (face_t * idpol)
{
int i, j, numvertex;
winding_t *w, *in;
float *dest, *source;
winding_t *w, *in;
float *dest, *source;
float temp;
if (!idpol->w)
return; // overconstrained plane
w = idpol->w;
return; // overconstrained plane
w = idpol->w;
r_face = idpol;
//
@ -663,7 +655,7 @@ REN_DrawXYFace (face_t * idpol)
// using Z as a scale for the 2D projection
w->points[i][0] = (in->points[i][0] - r_origin[0]) * r_origin[2];
w->points[i][1] =
r_height - (in->points[i][1] - r_origin[1]) * r_origin[2];
r_height - (in->points[i][1] - r_origin[1]) * r_origin[2];
w->points[i][2] = in->points[i][2] + 3000;
w->points[i][3] = in->points[i][3];
w->points[i][4] = in->points[i][4];
@ -695,7 +687,7 @@ REN_DrawXYFace (face_t * idpol)
dest[2] = 4096 - dest[2];
}
if (xy_viewnormal[2] > 0) { // flip order when upside down
if (xy_viewnormal[2] > 0) { // flip order when upside down
for (i = 0; i < w->numpoints / 2; i++) {
dest = w->points[i];
source = w->points[w->numpoints - 1 - i];
@ -709,7 +701,6 @@ REN_DrawXYFace (face_t * idpol)
REN_SetTexture (idpol);
//
// draw it
//