Deleted a bunch of #ifed-out and commented-out code that doesn't look likely to be reinstated.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@5257 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
83c9df2ed4
commit
fd44f97b5b
@ -196,46 +196,6 @@ static BOOL positionIsWithinBorders(Vector position, CollisionRegion *region)
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
// These were lying about unused when I found them, honest guv. -- Ahruman 2012-07-08
|
||||
|
||||
static BOOL positionIsOnBorders(Vector position, CollisionRegion *region)
|
||||
{
|
||||
if (region == nil) return NO;
|
||||
if (region->isUniverse) return NO;
|
||||
|
||||
Vector loc = region->location;
|
||||
GLfloat r2 = region->radius + region->border_radius;
|
||||
|
||||
if ((position.x < loc.x - r2)||(position.x > loc.x + r2)||
|
||||
(position.y < loc.y - r2)||(position.y > loc.y + r2)||
|
||||
(position.z < loc.z - r2)||(position.z > loc.z + r2))
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
return !positionIsWithinRegion(position, region);
|
||||
}
|
||||
|
||||
|
||||
static NSArray *subregionsContainingPosition(Vector position, CollisionRegion *region)
|
||||
{
|
||||
NSArray *subs = region->subregions;
|
||||
NSMutableArray *result = [NSMutableArray array]; // autoreleased
|
||||
|
||||
int i, n_subs = [subs count];
|
||||
for (i = 0; i < n_subs; i++)
|
||||
{
|
||||
if (positionIsWithinBorders(position, (CollisionRegion *)[subs objectAtIndex:i]))
|
||||
{
|
||||
[result addObject:[subs objectAtIndex:i]];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// collision checking
|
||||
//
|
||||
- (void) clearEntityList
|
||||
|
@ -194,7 +194,7 @@ enum OOScanClass
|
||||
|
||||
- (void) setOwner:(Entity *)ent;
|
||||
- (id) owner;
|
||||
- (ShipEntity *) parentEntity; // owner if self is subentity of owner, otherwise nil.
|
||||
- (ShipEntity *) parentEntity; // owner if self is subentity of owner, otherwise nil.
|
||||
- (ShipEntity *) rootShipEntity; // like parentEntity, but recursive.
|
||||
|
||||
- (void) setPosition:(Vector)posn;
|
||||
|
@ -79,7 +79,7 @@ MA 02110-1301, USA.
|
||||
// Don't draw.
|
||||
return;
|
||||
}
|
||||
#if FRUSTUM_CULL
|
||||
|
||||
if (no_draw_distance != INFINITY)
|
||||
{
|
||||
// (always draw sky!)
|
||||
@ -103,8 +103,7 @@ MA 02110-1301, USA.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
||||
|
||||
|
@ -477,14 +477,12 @@ static OOColor *ColorWithHSBColor(Vector c)
|
||||
{
|
||||
if (translucent || [UNIVERSE breakPatternHide]) return; // DON'T DRAW
|
||||
if (_miniature && ![self isFinishedLoading]) return; // For responsiveness, don't block to draw as miniature.
|
||||
|
||||
#if FRUSTUM_CULL
|
||||
|
||||
if (![UNIVERSE checkFrustum:position:([self radius] + ATMOSPHERE_DEPTH)])
|
||||
{
|
||||
// Don't draw
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
||||
|
||||
|
@ -357,12 +357,6 @@ typedef enum
|
||||
|
||||
OOCreditsQuantity credits;
|
||||
OOGalaxyID galaxy_number;
|
||||
/*
|
||||
OOWeaponType forward_weapon; // Is there a reason for having both this and forward_weapon_type? -- ahruman
|
||||
OOWeaponType aft_weapon; // ditto - No good reason, and it could lead to some inconsistent state. Fixed. -- kaks
|
||||
*/
|
||||
/* OOWeaponType port_weapon_type; // now in ShipEntity -- cim
|
||||
OOWeaponType starboard_weapon_type; */
|
||||
|
||||
NSMutableArray *shipCommodityData;
|
||||
|
||||
@ -487,7 +481,7 @@ typedef enum
|
||||
unsigned suppressTargetLost: 1, // smart target lst reports
|
||||
scoopsActive: 1, // smart fuelscoops
|
||||
|
||||
scoopOverride: 1, //scripted to just be on, ignoring normal rules
|
||||
scoopOverride: 1, //scripted to just be on, ignoring normal rules
|
||||
game_over: 1,
|
||||
finished: 1,
|
||||
bomb_detonated: 1,
|
||||
@ -652,7 +646,7 @@ typedef enum
|
||||
- (float) fuelLeakRate;
|
||||
- (void) setFuelLeakRate:(float)value;
|
||||
|
||||
- (double) clockTime; // Note that this is not an OOTimeAbsolute
|
||||
- (double) clockTime; // Note that this is not an OOTimeAbsolute
|
||||
- (double) clockTimeAdjusted; // Note that this is not an OOTimeAbsolute
|
||||
- (BOOL) clockAdjusting;
|
||||
- (void) addToAdjustTime:(double) seconds ;
|
||||
@ -829,7 +823,6 @@ typedef enum
|
||||
// *** World script events.
|
||||
// In general, script events should be sent through doScriptEvent:..., which
|
||||
// will forward to the world scripts.
|
||||
//- (void) doWorldScriptEvent:(jsid)message withArguments:(NSArray *)arguments timeLimit:(OOTimeDelta)limit;
|
||||
- (BOOL) doWorldEventUntilMissionScreen:(jsid)message;
|
||||
- (void) doWorldScriptEvent:(jsid)message inContext:(JSContext *)context withArguments:(jsval *)argv count:(uintN)argc timeLimit:(OOTimeDelta)limit;
|
||||
|
||||
|
@ -5131,20 +5131,7 @@ static GLfloat sBaseMass = 0.0;
|
||||
dockedStation = nil;
|
||||
|
||||
suppressAegisMessages = YES;
|
||||
#if 0
|
||||
// "Fix" for "simple" issue where space compass shows station with planet icon on launch.
|
||||
// Has the slight unwanted side-effect of effectively giving the player an advanced compass.
|
||||
if ([self checkForAegis] != AEGIS_NONE)
|
||||
{
|
||||
[self setCompassMode:COMPASS_MODE_STATION];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self setCompassMode:COMPASS_MODE_PLANET];
|
||||
}
|
||||
#else
|
||||
[self checkForAegis];
|
||||
#endif
|
||||
suppressAegisMessages = NO;
|
||||
ident_engaged = NO;
|
||||
|
||||
|
@ -393,14 +393,14 @@ typedef enum
|
||||
OOEquipmentType *missile_list[SHIPENTITY_MAX_MISSILES];
|
||||
|
||||
// various types of target
|
||||
OOWeakReference *_primaryTarget; // for combat or rendezvous
|
||||
OOWeakReference *_primaryAggressor; // recorded after attack
|
||||
OOWeakReference *_targetStation; // for docking
|
||||
OOWeakReference *_foundTarget; // from scans
|
||||
OOWeakReference *_lastEscortTarget; // last target an escort was deployed after
|
||||
OOWeakReference *_thankedShip; // last ship thanked
|
||||
OOWeakReference *_rememberedShip; // ship being remembered
|
||||
OOWeakReference *_proximityAlert; // a ShipEntity within 2x collision_radius
|
||||
OOWeakReference *_primaryTarget; // for combat or rendezvous
|
||||
OOWeakReference *_primaryAggressor; // recorded after attack
|
||||
OOWeakReference *_targetStation; // for docking
|
||||
OOWeakReference *_foundTarget; // from scans
|
||||
OOWeakReference *_lastEscortTarget; // last target an escort was deployed after
|
||||
OOWeakReference *_thankedShip; // last ship thanked
|
||||
OOWeakReference *_rememberedShip; // ship being remembered
|
||||
OOWeakReference *_proximityAlert; // a ShipEntity within 2x collision_radius
|
||||
|
||||
|
||||
|
||||
@ -921,7 +921,6 @@ Vector positionOffsetForShipInRotationToAlignment(ShipEntity* ship, Quaternion q
|
||||
|
||||
- (GLfloat) rangeToDestination;
|
||||
- (double) trackDestination:(double) delta_t :(BOOL) retreat;
|
||||
//- (double) trackPosition:(Vector) track_pos :(double) delta_t :(BOOL) retreat;
|
||||
|
||||
- (void) setCoordinate:(Vector)coord;
|
||||
- (Vector) coordinates;
|
||||
@ -1075,9 +1074,9 @@ Vector positionOffsetForShipInRotationToAlignment(ShipEntity* ship, Quaternion q
|
||||
- (Entity *)entityForShaderProperties;
|
||||
|
||||
/* *** Script events.
|
||||
For NPC ships, these call doEvent: on the ship script.
|
||||
For the player, they do that and also call doWorldScriptEvent:.
|
||||
*/
|
||||
For NPC ships, these call doEvent: on the ship script.
|
||||
For the player, they do that and also call doWorldScriptEvent:.
|
||||
*/
|
||||
- (void) doScriptEvent:(jsid)message;
|
||||
- (void) doScriptEvent:(jsid)message withArgument:(id)argument;
|
||||
- (void) doScriptEvent:(jsid)message withArgument:(id)argument1 andArgument:(id)argument2;
|
||||
@ -1086,8 +1085,8 @@ Vector positionOffsetForShipInRotationToAlignment(ShipEntity* ship, Quaternion q
|
||||
- (void) doScriptEvent:(jsid)message inContext:(JSContext *)context withArguments:(jsval *)argv count:(uintN)argc;
|
||||
|
||||
/* Convenience to send an event with raw JS values, for example:
|
||||
ShipScriptEventNoCx(ship, "doSomething", INT_TO_JSVAL(42));
|
||||
*/
|
||||
ShipScriptEventNoCx(ship, "doSomething", INT_TO_JSVAL(42));
|
||||
*/
|
||||
#define ShipScriptEvent(context, ship, event, ...) do { \
|
||||
jsval argv[] = { __VA_ARGS__ }; \
|
||||
uintN argc = sizeof argv / sizeof *argv; \
|
||||
|
@ -66,11 +66,7 @@ typedef enum
|
||||
|
||||
OOTechLevelID equivalentTechLevel;
|
||||
float equipmentPriceFactor;
|
||||
|
||||
/* Vector port_position; // these four now handled by DockEntity
|
||||
Quaternion port_orientation;
|
||||
ShipEntity *port_model;
|
||||
double port_corridor; */ // corridor length inside station.
|
||||
|
||||
Vector port_dimensions;
|
||||
double port_radius;
|
||||
|
||||
|
@ -251,9 +251,9 @@ MA 02110-1301, USA.
|
||||
- (void) launchShip:(ShipEntity *)ship
|
||||
{
|
||||
NSEnumerator *subEnum = nil;
|
||||
DockEntity* sub = nil;
|
||||
DockEntity *sub = nil;
|
||||
|
||||
// try to find an unused dock first
|
||||
// try to find an unused dock first
|
||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||
{
|
||||
if ([sub allowsLaunching] && [sub countOfShipsInLaunchQueue] == 0)
|
||||
@ -262,7 +262,7 @@ MA 02110-1301, USA.
|
||||
return;
|
||||
}
|
||||
}
|
||||
// otherwise any launchable dock will do
|
||||
// otherwise any launchable dock will do
|
||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||
{
|
||||
if ([sub allowsLaunching])
|
||||
@ -272,13 +272,13 @@ MA 02110-1301, USA.
|
||||
}
|
||||
}
|
||||
|
||||
// ship has no launch docks specified; just use the last one
|
||||
// ship has no launch docks specified; just use the last one
|
||||
if (sub != nil)
|
||||
{
|
||||
[sub launchShip:ship];
|
||||
return;
|
||||
}
|
||||
// guaranteed to always be a dock as virtual dock will suffice
|
||||
// guaranteed to always be a dock as virtual dock will suffice
|
||||
}
|
||||
|
||||
|
||||
@ -364,8 +364,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
}
|
||||
|
||||
|
||||
// this routine does initial traffic control, before passing the ship
|
||||
// to an appropriate dock for docking coordinates and instructions
|
||||
// this method does initial traffic control, before passing the ship
|
||||
// to an appropriate dock for docking coordinates and instructions.
|
||||
- (NSDictionary *) dockingInstructionsForShip:(ShipEntity *) ship
|
||||
{
|
||||
if (ship == nil) return nil;
|
||||
@ -399,7 +399,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||
{
|
||||
if ([sub shipIsInDockingQueue:ship])
|
||||
{ // if already claimed a docking queue, use that one
|
||||
{
|
||||
// if already claimed a docking queue, use that one
|
||||
chosenDock = sub;
|
||||
alldockstoosmall = NO;
|
||||
break;
|
||||
@ -431,7 +432,7 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
}
|
||||
|
||||
if ([docking isEqualToString:@"DOCKING_POSSIBLE"] && [sub countOfShipsInDockingQueue] < queue) {
|
||||
// try to select the dock with the fewest ships already enqueued
|
||||
// try to select the dock with the fewest ships already enqueued
|
||||
chosenDock = sub;
|
||||
queue = [sub countOfShipsInDockingQueue];
|
||||
alldockstoosmall = NO;
|
||||
@ -913,7 +914,7 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
|
||||
// quickest launch if we assign ships to those bays with no incoming ships
|
||||
// and spread the ships evenly around those bays
|
||||
// much easier if the station has at least one launch-only dock
|
||||
// much easier if the station has at least one launch-only dock
|
||||
while (threshold < 16)
|
||||
{
|
||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||
@ -938,8 +939,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
// if we get this far, all docks have at least some incoming traffic.
|
||||
// usually most efficient (since launching is far faster than docking)
|
||||
// to assign all ships to the *same* dock with the smallest incoming queue
|
||||
// rather than to try spreading them out across several queues
|
||||
// also stops escorts being launched before their mothership
|
||||
// rather than to try spreading them out across several queues
|
||||
// also stops escorts being launched before their mothership
|
||||
threshold = 0;
|
||||
while (threshold < 16)
|
||||
{
|
||||
@ -947,11 +948,11 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
{
|
||||
if (sub != player_reserved_dock)
|
||||
{
|
||||
// so this time as long as it allows launching only check the docking queue size
|
||||
// so long as enumerator order is deterministic, this will assign
|
||||
// every launch this update to the same dock
|
||||
// (edge case where new docking ship appears in the middle, probably
|
||||
// not a problem)
|
||||
// so this time as long as it allows launching only check the docking queue size
|
||||
// so long as enumerator order is deterministic, this will assign
|
||||
// every launch this update to the same dock
|
||||
// (edge case where new docking ship appears in the middle, probably
|
||||
// not a problem)
|
||||
if ([sub allowsLaunching] && [sub countOfShipsInDockingQueue] <= threshold)
|
||||
{
|
||||
if ([sub allowsLaunchingOf:ship])
|
||||
@ -1010,7 +1011,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
PlayerEntity *player = PLAYER;
|
||||
// set last launch time to avoid clashes with outgoing ships
|
||||
if ([player getDockingClearanceStatus] != DOCKING_CLEARANCE_STATUS_GRANTED)
|
||||
{ // avoid interfering with docking clearance on another bay
|
||||
{
|
||||
// avoid interfering with docking clearance on another bay
|
||||
last_launch_time = [UNIVERSE getTime];
|
||||
}
|
||||
[self addShipToStationCount: ship];
|
||||
@ -1030,7 +1032,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
[player getDockingClearanceStatus] == DOCKING_CLEARANCE_STATUS_REQUESTED)
|
||||
{
|
||||
if (![self hasClearDock])
|
||||
{ // then say why
|
||||
{
|
||||
// then say why
|
||||
if ([self currentlyInDockingQueues])
|
||||
{
|
||||
[self sendExpandedMessage:[NSString stringWithFormat:
|
||||
@ -1088,9 +1091,13 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
|
||||
- (BOOL) collideWithShip:(ShipEntity *)other
|
||||
{
|
||||
// 2010.06.10 - Micha. Commented out as there doesn't appear to be a good
|
||||
// reason for it and it interferes with docking clearance.
|
||||
//[self abortAllDockings];
|
||||
/*
|
||||
There used to be a [self abortAllDockings] here. Removed as there
|
||||
doesn't appear to be a good reason for it and it interferes with
|
||||
docking clearance.
|
||||
-- Micha 2010-06-10
|
||||
Reformatted, Ahruman 2012-08-26
|
||||
*/
|
||||
return [super collideWithShip:other];
|
||||
}
|
||||
|
||||
@ -1102,7 +1109,7 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
|
||||
- (void) takeEnergyDamage:(double)amount from:(Entity *)ent becauseOf:(Entity *)other
|
||||
{
|
||||
//stations must ignore friendly fire, otherwise the defenders' AI gets stuck.
|
||||
// stations must ignore friendly fire, otherwise the defenders' AI gets stuck.
|
||||
BOOL isFriend = NO;
|
||||
OOShipGroup *group = [self group];
|
||||
|
||||
@ -2277,46 +2284,3 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
||||
@implementation StationEntity (OOWireframeDockingBox)
|
||||
|
||||
- (void)drawEntity:(BOOL)immediate :(BOOL)translucent
|
||||
{
|
||||
[super drawEntity:immediate:translucent];
|
||||
|
||||
/* if (gDebugFlags & DEBUG_BOUNDING_BOXES)
|
||||
{
|
||||
Vector adjustedPosition;
|
||||
Vector halfDimensions;
|
||||
|
||||
OODebugDrawBasisAtOrigin(50.0f);
|
||||
|
||||
OOMatrix matrix;
|
||||
matrix = OOMatrixForQuaternionRotation(port_orientation);
|
||||
OOGL(glPushMatrix());
|
||||
GLMultOOMatrix(matrix);
|
||||
|
||||
halfDimensions = vector_multiply_scalar(port_dimensions, 0.5f);
|
||||
adjustedPosition = port_position;
|
||||
adjustedPosition.z -= halfDimensions.z;
|
||||
|
||||
OODebugDrawColoredBoundingBoxBetween(vector_subtract(adjustedPosition, halfDimensions), vector_add(adjustedPosition, halfDimensions), [OOColor redColor]);
|
||||
OODebugDrawBasisAtOrigin(30.0f);
|
||||
|
||||
OOGL(glPopMatrix());
|
||||
} */
|
||||
}
|
||||
|
||||
|
||||
// Added to test exception wrapping in JS engine. If this is an ancient issue, delete this method. -- Ahruman 2010-06-21
|
||||
- (void) TEMPExceptionTest
|
||||
{
|
||||
[NSException raise:@"TestException" format:@"This is a test exception which shouldn't crash the game."];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
@ -304,13 +304,7 @@ static JSBool MissionAddMessageText(JSContext *context, uintN argc, jsval *vp)
|
||||
|
||||
if (EXPECT_NOT(argc == 0))
|
||||
{
|
||||
#if 0
|
||||
// EMMSTRAN: fail.
|
||||
OOJSReportBadArguments(context, @"Mission", @"addMessageText", argc, OOJS_ARGV, nil, @"string");
|
||||
return NO;
|
||||
#else
|
||||
OOJS_RETURN_VOID;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Found "FIXME: warning if no mission screen running.",,,
|
||||
|
@ -1877,38 +1877,24 @@ NSString *OOJSDescribeValue(JSContext *context, jsval value, BOOL abbreviateObje
|
||||
BOOL isFloat = NO;
|
||||
long long longLongValue;
|
||||
|
||||
#if 0
|
||||
/* Under GNUstep, it is not possible to distinguish between boolean
|
||||
NSNumbers and integer NSNumbers - there is no such distinction.
|
||||
It is better to convert booleans to integers than vice versa.
|
||||
*/
|
||||
if ([self oo_isBoolean])
|
||||
isFloat = [self oo_isFloatingPointNumber];
|
||||
if (!isFloat)
|
||||
{
|
||||
if ([self boolValue]) result = JSVAL_TRUE;
|
||||
else result = JSVAL_FALSE;
|
||||
longLongValue = [self longLongValue];
|
||||
if (longLongValue < (long long)JSVAL_INT_MIN || (long long)JSVAL_INT_MAX < longLongValue)
|
||||
{
|
||||
// values outside JSVAL_INT range are returned as doubles.
|
||||
isFloat = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (isFloat)
|
||||
{
|
||||
if (!JS_NewNumberValue(context, [self doubleValue], &result)) result = JSVAL_VOID;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
isFloat = [self oo_isFloatingPointNumber];
|
||||
if (!isFloat)
|
||||
{
|
||||
longLongValue = [self longLongValue];
|
||||
if (longLongValue < (long long)JSVAL_INT_MIN || (long long)JSVAL_INT_MAX < longLongValue)
|
||||
{
|
||||
// values outside JSVAL_INT range are returned as doubles.
|
||||
isFloat = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (isFloat)
|
||||
{
|
||||
if (!JS_NewNumberValue(context, [self doubleValue], &result)) result = JSVAL_VOID;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = INT_TO_JSVAL((int32_t)longLongValue);
|
||||
}
|
||||
result = INT_TO_JSVAL((int32_t)longLongValue);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -48,10 +48,6 @@ MA 02110-1301, USA.
|
||||
|
||||
typedef BOOL (*EntityFilterPredicate)(Entity *entity, void *parameter);
|
||||
|
||||
#ifndef FRUSTUM_CULL
|
||||
#define FRUSTUM_CULL 1
|
||||
#endif
|
||||
|
||||
#ifndef OO_SCANCLASS_TYPE
|
||||
#define OO_SCANCLASS_TYPE
|
||||
typedef enum OOScanClass OOScanClass;
|
||||
@ -300,11 +296,9 @@ enum
|
||||
NSMutableArray *_preloadingPlanetMaterials;
|
||||
#endif
|
||||
BOOL doProcedurallyTexturedPlanets;
|
||||
|
||||
#if FRUSTUM_CULL
|
||||
GLfloat frustum[6][4];
|
||||
#endif
|
||||
|
||||
|
||||
GLfloat frustum[6][4];
|
||||
|
||||
NSMutableDictionary *conditionScripts;
|
||||
|
||||
BOOL _pauseMessage;
|
||||
@ -445,10 +439,10 @@ enum
|
||||
- (NSDictionary *) gameSettings;
|
||||
|
||||
- (void) drawUniverse;
|
||||
#if FRUSTUM_CULL
|
||||
|
||||
- (void) defineFrustum;
|
||||
- (BOOL) checkFrustum:(Vector) position:(GLfloat) radius;
|
||||
#endif
|
||||
- (BOOL) checkFrustum:(Vector)position :(GLfloat)radius;
|
||||
|
||||
- (void) drawMessage;
|
||||
|
||||
// Used to draw subentities. Should be getting this from camera.
|
||||
|
@ -937,7 +937,7 @@ GLfloat docked_light_specular[4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOC
|
||||
/*- the dust particle system -*/
|
||||
thing = [[DustEntity alloc] init]; // alloc retains!
|
||||
[thing setScanClass: CLASS_NO_DRAW];
|
||||
[self addEntity:thing]; // [entities addObject:thing];
|
||||
[self addEntity:thing];
|
||||
[(DustEntity *)thing setDustColor:pale_bgcolor];
|
||||
[thing release];
|
||||
/*--*/
|
||||
@ -1015,8 +1015,6 @@ GLfloat docked_light_specular[4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOC
|
||||
if (dict_object!=nil) [sun_dict setObject:dict_object forKey:@"corona_hues"];
|
||||
dict_object=[systeminfo objectForKey: @"corona_flare"];
|
||||
if (dict_object!=nil) [sun_dict setObject:dict_object forKey:@"corona_flare"];
|
||||
//dict_object=[systeminfo objectForKey: @"sun_texture"];
|
||||
//if (dict_object!=nil) [sun_dict setObject:dict_object forKey:@"sun_texture"];
|
||||
|
||||
a_sun = [[OOSunEntity alloc] initSunWithColor:pale_bgcolor andDictionary:sun_dict]; // alloc retains!
|
||||
|
||||
@ -3438,8 +3436,6 @@ static const OOMatrix starboard_matrix =
|
||||
}
|
||||
|
||||
|
||||
#if FRUSTUM_CULL
|
||||
|
||||
/* Code adapted from http://www.crownandcutlass.com/features/technicaldetails/frustum.html
|
||||
* Original license is: "This page and its contents are Copyright 2000 by Mark Morley
|
||||
* Unless otherwise noted, you may use any and all code examples provided herein in any way you want."
|
||||
@ -3448,62 +3444,62 @@ static const OOMatrix starboard_matrix =
|
||||
- (void) defineFrustum
|
||||
{
|
||||
GLfloat proj[16];
|
||||
GLfloat modl[16];
|
||||
GLfloat clip[16];
|
||||
GLfloat t;
|
||||
|
||||
GLfloat modl[16];
|
||||
GLfloat clip[16];
|
||||
GLfloat rt;
|
||||
|
||||
/* Get the current PROJECTION matrix from OpenGL */
|
||||
glGetFloatv( GL_PROJECTION_MATRIX, proj );
|
||||
|
||||
|
||||
/* Get the current MODELVIEW matrix from OpenGL */
|
||||
glGetFloatv( GL_MODELVIEW_MATRIX, modl );
|
||||
|
||||
|
||||
/* Combine the two matrices (multiply projection by modelview) */
|
||||
clip[ 0] = modl[ 0] * proj[ 0] + modl[ 1] * proj[ 4] + modl[ 2] * proj[ 8] + modl[ 3] * proj[12];
|
||||
clip[ 1] = modl[ 0] * proj[ 1] + modl[ 1] * proj[ 5] + modl[ 2] * proj[ 9] + modl[ 3] * proj[13];
|
||||
clip[ 2] = modl[ 0] * proj[ 2] + modl[ 1] * proj[ 6] + modl[ 2] * proj[10] + modl[ 3] * proj[14];
|
||||
clip[ 3] = modl[ 0] * proj[ 3] + modl[ 1] * proj[ 7] + modl[ 2] * proj[11] + modl[ 3] * proj[15];
|
||||
|
||||
|
||||
clip[ 4] = modl[ 4] * proj[ 0] + modl[ 5] * proj[ 4] + modl[ 6] * proj[ 8] + modl[ 7] * proj[12];
|
||||
clip[ 5] = modl[ 4] * proj[ 1] + modl[ 5] * proj[ 5] + modl[ 6] * proj[ 9] + modl[ 7] * proj[13];
|
||||
clip[ 6] = modl[ 4] * proj[ 2] + modl[ 5] * proj[ 6] + modl[ 6] * proj[10] + modl[ 7] * proj[14];
|
||||
clip[ 7] = modl[ 4] * proj[ 3] + modl[ 5] * proj[ 7] + modl[ 6] * proj[11] + modl[ 7] * proj[15];
|
||||
|
||||
|
||||
clip[ 8] = modl[ 8] * proj[ 0] + modl[ 9] * proj[ 4] + modl[10] * proj[ 8] + modl[11] * proj[12];
|
||||
clip[ 9] = modl[ 8] * proj[ 1] + modl[ 9] * proj[ 5] + modl[10] * proj[ 9] + modl[11] * proj[13];
|
||||
clip[10] = modl[ 8] * proj[ 2] + modl[ 9] * proj[ 6] + modl[10] * proj[10] + modl[11] * proj[14];
|
||||
clip[11] = modl[ 8] * proj[ 3] + modl[ 9] * proj[ 7] + modl[10] * proj[11] + modl[11] * proj[15];
|
||||
|
||||
|
||||
clip[12] = modl[12] * proj[ 0] + modl[13] * proj[ 4] + modl[14] * proj[ 8] + modl[15] * proj[12];
|
||||
clip[13] = modl[12] * proj[ 1] + modl[13] * proj[ 5] + modl[14] * proj[ 9] + modl[15] * proj[13];
|
||||
clip[14] = modl[12] * proj[ 2] + modl[13] * proj[ 6] + modl[14] * proj[10] + modl[15] * proj[14];
|
||||
clip[15] = modl[12] * proj[ 3] + modl[13] * proj[ 7] + modl[14] * proj[11] + modl[15] * proj[15];
|
||||
|
||||
|
||||
/* Extract the numbers for the RIGHT plane */
|
||||
frustum[0][0] = clip[ 3] - clip[ 0];
|
||||
frustum[0][1] = clip[ 7] - clip[ 4];
|
||||
frustum[0][2] = clip[11] - clip[ 8];
|
||||
frustum[0][3] = clip[15] - clip[12];
|
||||
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[0][0] * frustum[0][0] + frustum[0][1] * frustum[0][1] + frustum[0][2] * frustum[0][2] );
|
||||
frustum[0][0] /= t;
|
||||
frustum[0][1] /= t;
|
||||
frustum[0][2] /= t;
|
||||
frustum[0][3] /= t;
|
||||
|
||||
rt = 1.0f / sqrt(frustum[0][0] * frustum[0][0] + frustum[0][1] * frustum[0][1] + frustum[0][2] * frustum[0][2]);
|
||||
frustum[0][0] *= rt;
|
||||
frustum[0][1] *= rt;
|
||||
frustum[0][2] *= rt;
|
||||
frustum[0][3] *= rt;
|
||||
|
||||
/* Extract the numbers for the LEFT plane */
|
||||
frustum[1][0] = clip[ 3] + clip[ 0];
|
||||
frustum[1][1] = clip[ 7] + clip[ 4];
|
||||
frustum[1][2] = clip[11] + clip[ 8];
|
||||
frustum[1][3] = clip[15] + clip[12];
|
||||
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[1][0] * frustum[1][0] + frustum[1][1] * frustum[1][1] + frustum[1][2] * frustum[1][2] );
|
||||
frustum[1][0] /= t;
|
||||
frustum[1][1] /= t;
|
||||
frustum[1][2] /= t;
|
||||
frustum[1][3] /= t;
|
||||
rt = 1.0f / sqrt(frustum[1][0] * frustum[1][0] + frustum[1][1] * frustum[1][1] + frustum[1][2] * frustum[1][2]);
|
||||
frustum[1][0] *= rt;
|
||||
frustum[1][1] *= rt;
|
||||
frustum[1][2] *= rt;
|
||||
frustum[1][3] *= rt;
|
||||
|
||||
/* Extract the BOTTOM plane */
|
||||
frustum[2][0] = clip[ 3] + clip[ 1];
|
||||
@ -3512,11 +3508,11 @@ static const OOMatrix starboard_matrix =
|
||||
frustum[2][3] = clip[15] + clip[13];
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[2][0] * frustum[2][0] + frustum[2][1] * frustum[2][1] + frustum[2][2] * frustum[2][2] );
|
||||
frustum[2][0] /= t;
|
||||
frustum[2][1] /= t;
|
||||
frustum[2][2] /= t;
|
||||
frustum[2][3] /= t;
|
||||
rt = 1.0 / sqrt(frustum[2][0] * frustum[2][0] + frustum[2][1] * frustum[2][1] + frustum[2][2] * frustum[2][2]);
|
||||
frustum[2][0] *= rt;
|
||||
frustum[2][1] *= rt;
|
||||
frustum[2][2] *= rt;
|
||||
frustum[2][3] *= rt;
|
||||
|
||||
/* Extract the TOP plane */
|
||||
frustum[3][0] = clip[ 3] - clip[ 1];
|
||||
@ -3525,11 +3521,11 @@ static const OOMatrix starboard_matrix =
|
||||
frustum[3][3] = clip[15] - clip[13];
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[3][0] * frustum[3][0] + frustum[3][1] * frustum[3][1] + frustum[3][2] * frustum[3][2] );
|
||||
frustum[3][0] /= t;
|
||||
frustum[3][1] /= t;
|
||||
frustum[3][2] /= t;
|
||||
frustum[3][3] /= t;
|
||||
rt = 1.0 / sqrt(frustum[3][0] * frustum[3][0] + frustum[3][1] * frustum[3][1] + frustum[3][2] * frustum[3][2]);
|
||||
frustum[3][0] *= rt;
|
||||
frustum[3][1] *= rt;
|
||||
frustum[3][2] *= rt;
|
||||
frustum[3][3] *= rt;
|
||||
|
||||
/* Extract the FAR plane */
|
||||
frustum[4][0] = clip[ 3] - clip[ 2];
|
||||
@ -3538,11 +3534,11 @@ static const OOMatrix starboard_matrix =
|
||||
frustum[4][3] = clip[15] - clip[14];
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[4][0] * frustum[4][0] + frustum[4][1] * frustum[4][1] + frustum[4][2] * frustum[4][2] );
|
||||
frustum[4][0] /= t;
|
||||
frustum[4][1] /= t;
|
||||
frustum[4][2] /= t;
|
||||
frustum[4][3] /= t;
|
||||
rt = sqrt(frustum[4][0] * frustum[4][0] + frustum[4][1] * frustum[4][1] + frustum[4][2] * frustum[4][2]);
|
||||
frustum[4][0] *= rt;
|
||||
frustum[4][1] *= rt;
|
||||
frustum[4][2] *= rt;
|
||||
frustum[4][3] *= rt;
|
||||
|
||||
/* Extract the NEAR plane */
|
||||
frustum[5][0] = clip[ 3] + clip[ 2];
|
||||
@ -3551,27 +3547,26 @@ static const OOMatrix starboard_matrix =
|
||||
frustum[5][3] = clip[15] + clip[14];
|
||||
|
||||
/* Normalize the result */
|
||||
t = sqrt( frustum[5][0] * frustum[5][0] + frustum[5][1] * frustum[5][1] + frustum[5][2] * frustum[5][2] );
|
||||
frustum[5][0] /= t;
|
||||
frustum[5][1] /= t;
|
||||
frustum[5][2] /= t;
|
||||
frustum[5][3] /= t;
|
||||
rt = sqrt(frustum[5][0] * frustum[5][0] + frustum[5][1] * frustum[5][1] + frustum[5][2] * frustum[5][2]);
|
||||
frustum[5][0] *= rt;
|
||||
frustum[5][1] *= rt;
|
||||
frustum[5][2] *= rt;
|
||||
frustum[5][3] *= rt;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL) checkFrustum:(Vector) position:(GLfloat) radius
|
||||
- (BOOL) checkFrustum:(Vector)position :(GLfloat)radius
|
||||
{
|
||||
int p;
|
||||
for( p = 0; p < 6; p++ )
|
||||
for (p = 0; p < 6; p++)
|
||||
{
|
||||
if( frustum[p][0] * position.x + frustum[p][1] * position.y + frustum[p][2] * position.z + frustum[p][3] <= -radius )
|
||||
if (frustum[p][0] * position.x + frustum[p][1] * position.y + frustum[p][2] * position.z + frustum[p][3] <= -radius)
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
- (void) drawUniverse
|
||||
@ -3690,9 +3685,8 @@ static const OOMatrix starboard_matrix =
|
||||
|
||||
OOGL(glHint(GL_FOG_HINT, [self reducedDetail] ? GL_FASTEST : GL_NICEST));
|
||||
|
||||
#if FRUSTUM_CULL
|
||||
[self defineFrustum]; // camera is set up for this frame
|
||||
#endif
|
||||
|
||||
CheckOpenGLErrors(@"Universe after setting up for opaque pass");
|
||||
// DRAW ALL THE OPAQUE ENTITIES
|
||||
for (i = furthest; i >= nearest; i--)
|
||||
@ -9556,7 +9550,6 @@ static void PreloadOneSound(NSString *soundName)
|
||||
systeminfo = [self generateSystemData:system_seed];
|
||||
sunGoneNova = [systeminfo oo_boolForKey:@"sun_gone_nova"];
|
||||
|
||||
// OOTechLevelID techlevel = [systeminfo oo_unsignedCharForKey:KEY_TECHLEVEL]; // 0 .. 13
|
||||
OOGovernmentID government = [systeminfo oo_unsignedCharForKey:KEY_GOVERNMENT]; // 0 .. 7 (0 anarchic .. 7 most stable)
|
||||
OOEconomyID economy = [systeminfo oo_unsignedCharForKey:KEY_ECONOMY]; // 0 .. 7 (0 richest .. 7 poorest)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user