This is Actor.h in view mode; [Download] [Up]
// An actor is something that animates in Xox or otherwise requires // notification of every frame. You generally shouldn't directly invoke // the methods in there; they are hooks for subclassing and most are // notifications sent only by the various managers. #import <appkit/appkit.h> #import "xoxDefs.h" @interface Actor:Object { // make 'em all public, I wanna peek! @public int numFrames; int frame; NXSize frameSize; id image; BOOL employed; float theta; // generally the direction of travel float vel; // used to determine xv & yv float xv, yv; float x, y; // centroid position in universe unsigned changeTime; int interval; COLLISION_SHAPE collisionShape; ALLIANCE alliance; TIER tier; NXRect drawRect; // position in cache NXRect eraseRect; // optimization, draw rect likely to overlap erasure NXRect collisionRect; // position in universe float radius; // used for circular collisions BOOL buffered; NXSize distToCorner; int actorType; NXRect *complexShapePtr; // a pointer to rect list or lines, as necessary int complexShapeCnt; NXPoint shapeArray[5]; // area for converting rects and circs to lines // may be used as scratch area by collision manager int pointValue; id scoreTaker; COLLISION_REASON collisionReason; // indicates what collisionThing points to void *collisionThing; // info about why collision happened. } + instanceList; // this method reinitializes an Actor, it may be called many times // typically from within activate - reinitWithImage:(const char *)imageName frameSize:(NXSize *) size numFrames:(int)frames shape: (COLLISION_SHAPE)shape alliance: (ALLIANCE)al radius: (float) r buffered: (BOOL) b x: (float)xp y: (float)yp theta: (float) thta vel: (float) v interval: (unsigned) time distToCorner: (NXSize *)d2c; // only sent by the actor manager, should reintialize the object - activate:sender :(int)tag; // only sent by the actor manager - retire; - erase; - positionChanged; - calcDxDy:(NXPoint *)dp; - calcDrawRect; - moveBy:(float)dx :(float)dy; - moveTo:(float)newx :(float)newy; - setXvYv:(float)xvel :(float)yvel sync:(BOOL)sync; - setVel:(float)newVel theta:(float)newTheta sync:(BOOL)sync; - setVel:(float)newVel; - setTheta:(float)newTheta; - oneStep; - scheduleDrawing; - draw; - tile; // - (BOOL) collideWith:(Actor *) dude; - (BOOL) doYouHurt:sender; - performCollisionWith:(Actor *) dude; - (BOOL) wrapAtDistance:(float)distx :(float)disty; - (BOOL) bounceAtDistance:(float)distx :(float)disty; - (int) bounceOff:(Actor *)dude; - constructComplexShape; - findImageNamed:(const char *)name; + findImageNamed:(const char *)name; + cacheImage:(const char *)name; - addFlushRects; - (BOOL) isGroup; @end extern BOOL actorsCollide(Actor *a1, Actor *a2); @interface Object (scoreKeepingMethods) - (int)setScore:(int)val for:dude; - (int)addToScore:(int)val for:dude gen:(int)age; - (int)score; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.