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
|
// collision checking
|
||||||
//
|
//
|
||||||
- (void) clearEntityList
|
- (void) clearEntityList
|
||||||
|
@ -194,7 +194,7 @@ enum OOScanClass
|
|||||||
|
|
||||||
- (void) setOwner:(Entity *)ent;
|
- (void) setOwner:(Entity *)ent;
|
||||||
- (id) owner;
|
- (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.
|
- (ShipEntity *) rootShipEntity; // like parentEntity, but recursive.
|
||||||
|
|
||||||
- (void) setPosition:(Vector)posn;
|
- (void) setPosition:(Vector)posn;
|
||||||
|
@ -79,7 +79,7 @@ MA 02110-1301, USA.
|
|||||||
// Don't draw.
|
// Don't draw.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if FRUSTUM_CULL
|
|
||||||
if (no_draw_distance != INFINITY)
|
if (no_draw_distance != INFINITY)
|
||||||
{
|
{
|
||||||
// (always draw sky!)
|
// (always draw sky!)
|
||||||
@ -103,8 +103,7 @@ MA 02110-1301, USA.
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
||||||
|
|
||||||
|
@ -477,14 +477,12 @@ static OOColor *ColorWithHSBColor(Vector c)
|
|||||||
{
|
{
|
||||||
if (translucent || [UNIVERSE breakPatternHide]) return; // DON'T DRAW
|
if (translucent || [UNIVERSE breakPatternHide]) return; // DON'T DRAW
|
||||||
if (_miniature && ![self isFinishedLoading]) return; // For responsiveness, don't block to draw as miniature.
|
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)])
|
if (![UNIVERSE checkFrustum:position:([self radius] + ATMOSPHERE_DEPTH)])
|
||||||
{
|
{
|
||||||
// Don't draw
|
// Don't draw
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
if ([UNIVERSE wireframeGraphics]) GLDebugWireframeModeOn();
|
||||||
|
|
||||||
|
@ -357,12 +357,6 @@ typedef enum
|
|||||||
|
|
||||||
OOCreditsQuantity credits;
|
OOCreditsQuantity credits;
|
||||||
OOGalaxyID galaxy_number;
|
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;
|
NSMutableArray *shipCommodityData;
|
||||||
|
|
||||||
@ -487,7 +481,7 @@ typedef enum
|
|||||||
unsigned suppressTargetLost: 1, // smart target lst reports
|
unsigned suppressTargetLost: 1, // smart target lst reports
|
||||||
scoopsActive: 1, // smart fuelscoops
|
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,
|
game_over: 1,
|
||||||
finished: 1,
|
finished: 1,
|
||||||
bomb_detonated: 1,
|
bomb_detonated: 1,
|
||||||
@ -652,7 +646,7 @@ typedef enum
|
|||||||
- (float) fuelLeakRate;
|
- (float) fuelLeakRate;
|
||||||
- (void) setFuelLeakRate:(float)value;
|
- (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
|
- (double) clockTimeAdjusted; // Note that this is not an OOTimeAbsolute
|
||||||
- (BOOL) clockAdjusting;
|
- (BOOL) clockAdjusting;
|
||||||
- (void) addToAdjustTime:(double) seconds ;
|
- (void) addToAdjustTime:(double) seconds ;
|
||||||
@ -829,7 +823,6 @@ typedef enum
|
|||||||
// *** World script events.
|
// *** World script events.
|
||||||
// In general, script events should be sent through doScriptEvent:..., which
|
// In general, script events should be sent through doScriptEvent:..., which
|
||||||
// will forward to the world scripts.
|
// will forward to the world scripts.
|
||||||
//- (void) doWorldScriptEvent:(jsid)message withArguments:(NSArray *)arguments timeLimit:(OOTimeDelta)limit;
|
|
||||||
- (BOOL) doWorldEventUntilMissionScreen:(jsid)message;
|
- (BOOL) doWorldEventUntilMissionScreen:(jsid)message;
|
||||||
- (void) doWorldScriptEvent:(jsid)message inContext:(JSContext *)context withArguments:(jsval *)argv count:(uintN)argc timeLimit:(OOTimeDelta)limit;
|
- (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;
|
dockedStation = nil;
|
||||||
|
|
||||||
suppressAegisMessages = YES;
|
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];
|
[self checkForAegis];
|
||||||
#endif
|
|
||||||
suppressAegisMessages = NO;
|
suppressAegisMessages = NO;
|
||||||
ident_engaged = NO;
|
ident_engaged = NO;
|
||||||
|
|
||||||
|
@ -393,14 +393,14 @@ typedef enum
|
|||||||
OOEquipmentType *missile_list[SHIPENTITY_MAX_MISSILES];
|
OOEquipmentType *missile_list[SHIPENTITY_MAX_MISSILES];
|
||||||
|
|
||||||
// various types of target
|
// various types of target
|
||||||
OOWeakReference *_primaryTarget; // for combat or rendezvous
|
OOWeakReference *_primaryTarget; // for combat or rendezvous
|
||||||
OOWeakReference *_primaryAggressor; // recorded after attack
|
OOWeakReference *_primaryAggressor; // recorded after attack
|
||||||
OOWeakReference *_targetStation; // for docking
|
OOWeakReference *_targetStation; // for docking
|
||||||
OOWeakReference *_foundTarget; // from scans
|
OOWeakReference *_foundTarget; // from scans
|
||||||
OOWeakReference *_lastEscortTarget; // last target an escort was deployed after
|
OOWeakReference *_lastEscortTarget; // last target an escort was deployed after
|
||||||
OOWeakReference *_thankedShip; // last ship thanked
|
OOWeakReference *_thankedShip; // last ship thanked
|
||||||
OOWeakReference *_rememberedShip; // ship being remembered
|
OOWeakReference *_rememberedShip; // ship being remembered
|
||||||
OOWeakReference *_proximityAlert; // a ShipEntity within 2x collision_radius
|
OOWeakReference *_proximityAlert; // a ShipEntity within 2x collision_radius
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -921,7 +921,6 @@ Vector positionOffsetForShipInRotationToAlignment(ShipEntity* ship, Quaternion q
|
|||||||
|
|
||||||
- (GLfloat) rangeToDestination;
|
- (GLfloat) rangeToDestination;
|
||||||
- (double) trackDestination:(double) delta_t :(BOOL) retreat;
|
- (double) trackDestination:(double) delta_t :(BOOL) retreat;
|
||||||
//- (double) trackPosition:(Vector) track_pos :(double) delta_t :(BOOL) retreat;
|
|
||||||
|
|
||||||
- (void) setCoordinate:(Vector)coord;
|
- (void) setCoordinate:(Vector)coord;
|
||||||
- (Vector) coordinates;
|
- (Vector) coordinates;
|
||||||
@ -1075,9 +1074,9 @@ Vector positionOffsetForShipInRotationToAlignment(ShipEntity* ship, Quaternion q
|
|||||||
- (Entity *)entityForShaderProperties;
|
- (Entity *)entityForShaderProperties;
|
||||||
|
|
||||||
/* *** Script events.
|
/* *** Script events.
|
||||||
For NPC ships, these call doEvent: on the ship script.
|
For NPC ships, these call doEvent: on the ship script.
|
||||||
For the player, they do that and also call doWorldScriptEvent:.
|
For the player, they do that and also call doWorldScriptEvent:.
|
||||||
*/
|
*/
|
||||||
- (void) doScriptEvent:(jsid)message;
|
- (void) doScriptEvent:(jsid)message;
|
||||||
- (void) doScriptEvent:(jsid)message withArgument:(id)argument;
|
- (void) doScriptEvent:(jsid)message withArgument:(id)argument;
|
||||||
- (void) doScriptEvent:(jsid)message withArgument:(id)argument1 andArgument:(id)argument2;
|
- (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;
|
- (void) doScriptEvent:(jsid)message inContext:(JSContext *)context withArguments:(jsval *)argv count:(uintN)argc;
|
||||||
|
|
||||||
/* Convenience to send an event with raw JS values, for example:
|
/* 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 { \
|
#define ShipScriptEvent(context, ship, event, ...) do { \
|
||||||
jsval argv[] = { __VA_ARGS__ }; \
|
jsval argv[] = { __VA_ARGS__ }; \
|
||||||
uintN argc = sizeof argv / sizeof *argv; \
|
uintN argc = sizeof argv / sizeof *argv; \
|
||||||
|
@ -66,11 +66,7 @@ typedef enum
|
|||||||
|
|
||||||
OOTechLevelID equivalentTechLevel;
|
OOTechLevelID equivalentTechLevel;
|
||||||
float equipmentPriceFactor;
|
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;
|
Vector port_dimensions;
|
||||||
double port_radius;
|
double port_radius;
|
||||||
|
|
||||||
|
@ -251,9 +251,9 @@ MA 02110-1301, USA.
|
|||||||
- (void) launchShip:(ShipEntity *)ship
|
- (void) launchShip:(ShipEntity *)ship
|
||||||
{
|
{
|
||||||
NSEnumerator *subEnum = nil;
|
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]); )
|
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||||
{
|
{
|
||||||
if ([sub allowsLaunching] && [sub countOfShipsInLaunchQueue] == 0)
|
if ([sub allowsLaunching] && [sub countOfShipsInLaunchQueue] == 0)
|
||||||
@ -262,7 +262,7 @@ MA 02110-1301, USA.
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// otherwise any launchable dock will do
|
// otherwise any launchable dock will do
|
||||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||||
{
|
{
|
||||||
if ([sub allowsLaunching])
|
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)
|
if (sub != nil)
|
||||||
{
|
{
|
||||||
[sub launchShip:ship];
|
[sub launchShip:ship];
|
||||||
return;
|
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
|
// this method does initial traffic control, before passing the ship
|
||||||
// to an appropriate dock for docking coordinates and instructions
|
// to an appropriate dock for docking coordinates and instructions.
|
||||||
- (NSDictionary *) dockingInstructionsForShip:(ShipEntity *) ship
|
- (NSDictionary *) dockingInstructionsForShip:(ShipEntity *) ship
|
||||||
{
|
{
|
||||||
if (ship == nil) return nil;
|
if (ship == nil) return nil;
|
||||||
@ -399,7 +399,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
||||||
{
|
{
|
||||||
if ([sub shipIsInDockingQueue:ship])
|
if ([sub shipIsInDockingQueue:ship])
|
||||||
{ // if already claimed a docking queue, use that one
|
{
|
||||||
|
// if already claimed a docking queue, use that one
|
||||||
chosenDock = sub;
|
chosenDock = sub;
|
||||||
alldockstoosmall = NO;
|
alldockstoosmall = NO;
|
||||||
break;
|
break;
|
||||||
@ -431,7 +432,7 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ([docking isEqualToString:@"DOCKING_POSSIBLE"] && [sub countOfShipsInDockingQueue] < queue) {
|
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;
|
chosenDock = sub;
|
||||||
queue = [sub countOfShipsInDockingQueue];
|
queue = [sub countOfShipsInDockingQueue];
|
||||||
alldockstoosmall = NO;
|
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
|
// quickest launch if we assign ships to those bays with no incoming ships
|
||||||
// and spread the ships evenly around those bays
|
// 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)
|
while (threshold < 16)
|
||||||
{
|
{
|
||||||
for (subEnum = [self dockSubEntityEnumerator]; (sub = [subEnum nextObject]); )
|
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.
|
// if we get this far, all docks have at least some incoming traffic.
|
||||||
// usually most efficient (since launching is far faster than docking)
|
// usually most efficient (since launching is far faster than docking)
|
||||||
// to assign all ships to the *same* dock with the smallest incoming queue
|
// to assign all ships to the *same* dock with the smallest incoming queue
|
||||||
// rather than to try spreading them out across several queues
|
// rather than to try spreading them out across several queues
|
||||||
// also stops escorts being launched before their mothership
|
// also stops escorts being launched before their mothership
|
||||||
threshold = 0;
|
threshold = 0;
|
||||||
while (threshold < 16)
|
while (threshold < 16)
|
||||||
{
|
{
|
||||||
@ -947,11 +948,11 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
{
|
{
|
||||||
if (sub != player_reserved_dock)
|
if (sub != player_reserved_dock)
|
||||||
{
|
{
|
||||||
// so this time as long as it allows launching only check the docking queue size
|
// 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
|
// so long as enumerator order is deterministic, this will assign
|
||||||
// every launch this update to the same dock
|
// every launch this update to the same dock
|
||||||
// (edge case where new docking ship appears in the middle, probably
|
// (edge case where new docking ship appears in the middle, probably
|
||||||
// not a problem)
|
// not a problem)
|
||||||
if ([sub allowsLaunching] && [sub countOfShipsInDockingQueue] <= threshold)
|
if ([sub allowsLaunching] && [sub countOfShipsInDockingQueue] <= threshold)
|
||||||
{
|
{
|
||||||
if ([sub allowsLaunchingOf:ship])
|
if ([sub allowsLaunchingOf:ship])
|
||||||
@ -1010,7 +1011,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
PlayerEntity *player = PLAYER;
|
PlayerEntity *player = PLAYER;
|
||||||
// set last launch time to avoid clashes with outgoing ships
|
// set last launch time to avoid clashes with outgoing ships
|
||||||
if ([player getDockingClearanceStatus] != DOCKING_CLEARANCE_STATUS_GRANTED)
|
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];
|
last_launch_time = [UNIVERSE getTime];
|
||||||
}
|
}
|
||||||
[self addShipToStationCount: ship];
|
[self addShipToStationCount: ship];
|
||||||
@ -1030,7 +1032,8 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
[player getDockingClearanceStatus] == DOCKING_CLEARANCE_STATUS_REQUESTED)
|
[player getDockingClearanceStatus] == DOCKING_CLEARANCE_STATUS_REQUESTED)
|
||||||
{
|
{
|
||||||
if (![self hasClearDock])
|
if (![self hasClearDock])
|
||||||
{ // then say why
|
{
|
||||||
|
// then say why
|
||||||
if ([self currentlyInDockingQueues])
|
if ([self currentlyInDockingQueues])
|
||||||
{
|
{
|
||||||
[self sendExpandedMessage:[NSString stringWithFormat:
|
[self sendExpandedMessage:[NSString stringWithFormat:
|
||||||
@ -1088,9 +1091,13 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
|
|
||||||
- (BOOL) collideWithShip:(ShipEntity *)other
|
- (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.
|
There used to be a [self abortAllDockings] here. Removed as there
|
||||||
//[self abortAllDockings];
|
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];
|
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
|
- (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;
|
BOOL isFriend = NO;
|
||||||
OOShipGroup *group = [self group];
|
OOShipGroup *group = [self group];
|
||||||
|
|
||||||
@ -2277,46 +2284,3 @@ NSDictionary *OOMakeDockingInstructions(StationEntity *station, Vector coords, f
|
|||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@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 (EXPECT_NOT(argc == 0))
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
// EMMSTRAN: fail.
|
|
||||||
OOJSReportBadArguments(context, @"Mission", @"addMessageText", argc, OOJS_ARGV, nil, @"string");
|
|
||||||
return NO;
|
|
||||||
#else
|
|
||||||
OOJS_RETURN_VOID;
|
OOJS_RETURN_VOID;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Found "FIXME: warning if no mission screen running.",,,
|
// Found "FIXME: warning if no mission screen running.",,,
|
||||||
|
@ -1877,38 +1877,24 @@ NSString *OOJSDescribeValue(JSContext *context, jsval value, BOOL abbreviateObje
|
|||||||
BOOL isFloat = NO;
|
BOOL isFloat = NO;
|
||||||
long long longLongValue;
|
long long longLongValue;
|
||||||
|
|
||||||
#if 0
|
isFloat = [self oo_isFloatingPointNumber];
|
||||||
/* Under GNUstep, it is not possible to distinguish between boolean
|
if (!isFloat)
|
||||||
NSNumbers and integer NSNumbers - there is no such distinction.
|
|
||||||
It is better to convert booleans to integers than vice versa.
|
|
||||||
*/
|
|
||||||
if ([self oo_isBoolean])
|
|
||||||
{
|
{
|
||||||
if ([self boolValue]) result = JSVAL_TRUE;
|
longLongValue = [self longLongValue];
|
||||||
else result = JSVAL_FALSE;
|
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
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
isFloat = [self oo_isFloatingPointNumber];
|
result = INT_TO_JSVAL((int32_t)longLongValue);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -48,10 +48,6 @@ MA 02110-1301, USA.
|
|||||||
|
|
||||||
typedef BOOL (*EntityFilterPredicate)(Entity *entity, void *parameter);
|
typedef BOOL (*EntityFilterPredicate)(Entity *entity, void *parameter);
|
||||||
|
|
||||||
#ifndef FRUSTUM_CULL
|
|
||||||
#define FRUSTUM_CULL 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef OO_SCANCLASS_TYPE
|
#ifndef OO_SCANCLASS_TYPE
|
||||||
#define OO_SCANCLASS_TYPE
|
#define OO_SCANCLASS_TYPE
|
||||||
typedef enum OOScanClass OOScanClass;
|
typedef enum OOScanClass OOScanClass;
|
||||||
@ -300,11 +296,9 @@ enum
|
|||||||
NSMutableArray *_preloadingPlanetMaterials;
|
NSMutableArray *_preloadingPlanetMaterials;
|
||||||
#endif
|
#endif
|
||||||
BOOL doProcedurallyTexturedPlanets;
|
BOOL doProcedurallyTexturedPlanets;
|
||||||
|
|
||||||
#if FRUSTUM_CULL
|
GLfloat frustum[6][4];
|
||||||
GLfloat frustum[6][4];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NSMutableDictionary *conditionScripts;
|
NSMutableDictionary *conditionScripts;
|
||||||
|
|
||||||
BOOL _pauseMessage;
|
BOOL _pauseMessage;
|
||||||
@ -445,10 +439,10 @@ enum
|
|||||||
- (NSDictionary *) gameSettings;
|
- (NSDictionary *) gameSettings;
|
||||||
|
|
||||||
- (void) drawUniverse;
|
- (void) drawUniverse;
|
||||||
#if FRUSTUM_CULL
|
|
||||||
- (void) defineFrustum;
|
- (void) defineFrustum;
|
||||||
- (BOOL) checkFrustum:(Vector) position:(GLfloat) radius;
|
- (BOOL) checkFrustum:(Vector)position :(GLfloat)radius;
|
||||||
#endif
|
|
||||||
- (void) drawMessage;
|
- (void) drawMessage;
|
||||||
|
|
||||||
// Used to draw subentities. Should be getting this from camera.
|
// 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 -*/
|
/*- the dust particle system -*/
|
||||||
thing = [[DustEntity alloc] init]; // alloc retains!
|
thing = [[DustEntity alloc] init]; // alloc retains!
|
||||||
[thing setScanClass: CLASS_NO_DRAW];
|
[thing setScanClass: CLASS_NO_DRAW];
|
||||||
[self addEntity:thing]; // [entities addObject:thing];
|
[self addEntity:thing];
|
||||||
[(DustEntity *)thing setDustColor:pale_bgcolor];
|
[(DustEntity *)thing setDustColor:pale_bgcolor];
|
||||||
[thing release];
|
[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"];
|
if (dict_object!=nil) [sun_dict setObject:dict_object forKey:@"corona_hues"];
|
||||||
dict_object=[systeminfo objectForKey: @"corona_flare"];
|
dict_object=[systeminfo objectForKey: @"corona_flare"];
|
||||||
if (dict_object!=nil) [sun_dict setObject:dict_object forKey:@"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!
|
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
|
/* 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
|
* 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."
|
* 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
|
- (void) defineFrustum
|
||||||
{
|
{
|
||||||
GLfloat proj[16];
|
GLfloat proj[16];
|
||||||
GLfloat modl[16];
|
GLfloat modl[16];
|
||||||
GLfloat clip[16];
|
GLfloat clip[16];
|
||||||
GLfloat t;
|
GLfloat rt;
|
||||||
|
|
||||||
/* Get the current PROJECTION matrix from OpenGL */
|
/* Get the current PROJECTION matrix from OpenGL */
|
||||||
glGetFloatv( GL_PROJECTION_MATRIX, proj );
|
glGetFloatv( GL_PROJECTION_MATRIX, proj );
|
||||||
|
|
||||||
/* Get the current MODELVIEW matrix from OpenGL */
|
/* Get the current MODELVIEW matrix from OpenGL */
|
||||||
glGetFloatv( GL_MODELVIEW_MATRIX, modl );
|
glGetFloatv( GL_MODELVIEW_MATRIX, modl );
|
||||||
|
|
||||||
/* Combine the two matrices (multiply projection by modelview) */
|
/* 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[ 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[ 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[ 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[ 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[ 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[ 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[ 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[ 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[ 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[ 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[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[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[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[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[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];
|
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 */
|
/* Extract the numbers for the RIGHT plane */
|
||||||
frustum[0][0] = clip[ 3] - clip[ 0];
|
frustum[0][0] = clip[ 3] - clip[ 0];
|
||||||
frustum[0][1] = clip[ 7] - clip[ 4];
|
frustum[0][1] = clip[ 7] - clip[ 4];
|
||||||
frustum[0][2] = clip[11] - clip[ 8];
|
frustum[0][2] = clip[11] - clip[ 8];
|
||||||
frustum[0][3] = clip[15] - clip[12];
|
frustum[0][3] = clip[15] - clip[12];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[0][0] * frustum[0][0] + frustum[0][1] * frustum[0][1] + frustum[0][2] * frustum[0][2] );
|
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] /= t;
|
frustum[0][0] *= rt;
|
||||||
frustum[0][1] /= t;
|
frustum[0][1] *= rt;
|
||||||
frustum[0][2] /= t;
|
frustum[0][2] *= rt;
|
||||||
frustum[0][3] /= t;
|
frustum[0][3] *= rt;
|
||||||
|
|
||||||
/* Extract the numbers for the LEFT plane */
|
/* Extract the numbers for the LEFT plane */
|
||||||
frustum[1][0] = clip[ 3] + clip[ 0];
|
frustum[1][0] = clip[ 3] + clip[ 0];
|
||||||
frustum[1][1] = clip[ 7] + clip[ 4];
|
frustum[1][1] = clip[ 7] + clip[ 4];
|
||||||
frustum[1][2] = clip[11] + clip[ 8];
|
frustum[1][2] = clip[11] + clip[ 8];
|
||||||
frustum[1][3] = clip[15] + clip[12];
|
frustum[1][3] = clip[15] + clip[12];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[1][0] * frustum[1][0] + frustum[1][1] * frustum[1][1] + frustum[1][2] * frustum[1][2] );
|
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] /= t;
|
frustum[1][0] *= rt;
|
||||||
frustum[1][1] /= t;
|
frustum[1][1] *= rt;
|
||||||
frustum[1][2] /= t;
|
frustum[1][2] *= rt;
|
||||||
frustum[1][3] /= t;
|
frustum[1][3] *= rt;
|
||||||
|
|
||||||
/* Extract the BOTTOM plane */
|
/* Extract the BOTTOM plane */
|
||||||
frustum[2][0] = clip[ 3] + clip[ 1];
|
frustum[2][0] = clip[ 3] + clip[ 1];
|
||||||
@ -3512,11 +3508,11 @@ static const OOMatrix starboard_matrix =
|
|||||||
frustum[2][3] = clip[15] + clip[13];
|
frustum[2][3] = clip[15] + clip[13];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[2][0] * frustum[2][0] + frustum[2][1] * frustum[2][1] + frustum[2][2] * frustum[2][2] );
|
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] /= t;
|
frustum[2][0] *= rt;
|
||||||
frustum[2][1] /= t;
|
frustum[2][1] *= rt;
|
||||||
frustum[2][2] /= t;
|
frustum[2][2] *= rt;
|
||||||
frustum[2][3] /= t;
|
frustum[2][3] *= rt;
|
||||||
|
|
||||||
/* Extract the TOP plane */
|
/* Extract the TOP plane */
|
||||||
frustum[3][0] = clip[ 3] - clip[ 1];
|
frustum[3][0] = clip[ 3] - clip[ 1];
|
||||||
@ -3525,11 +3521,11 @@ static const OOMatrix starboard_matrix =
|
|||||||
frustum[3][3] = clip[15] - clip[13];
|
frustum[3][3] = clip[15] - clip[13];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[3][0] * frustum[3][0] + frustum[3][1] * frustum[3][1] + frustum[3][2] * frustum[3][2] );
|
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] /= t;
|
frustum[3][0] *= rt;
|
||||||
frustum[3][1] /= t;
|
frustum[3][1] *= rt;
|
||||||
frustum[3][2] /= t;
|
frustum[3][2] *= rt;
|
||||||
frustum[3][3] /= t;
|
frustum[3][3] *= rt;
|
||||||
|
|
||||||
/* Extract the FAR plane */
|
/* Extract the FAR plane */
|
||||||
frustum[4][0] = clip[ 3] - clip[ 2];
|
frustum[4][0] = clip[ 3] - clip[ 2];
|
||||||
@ -3538,11 +3534,11 @@ static const OOMatrix starboard_matrix =
|
|||||||
frustum[4][3] = clip[15] - clip[14];
|
frustum[4][3] = clip[15] - clip[14];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[4][0] * frustum[4][0] + frustum[4][1] * frustum[4][1] + frustum[4][2] * frustum[4][2] );
|
rt = 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][0] *= rt;
|
||||||
frustum[4][1] /= t;
|
frustum[4][1] *= rt;
|
||||||
frustum[4][2] /= t;
|
frustum[4][2] *= rt;
|
||||||
frustum[4][3] /= t;
|
frustum[4][3] *= rt;
|
||||||
|
|
||||||
/* Extract the NEAR plane */
|
/* Extract the NEAR plane */
|
||||||
frustum[5][0] = clip[ 3] + clip[ 2];
|
frustum[5][0] = clip[ 3] + clip[ 2];
|
||||||
@ -3551,27 +3547,26 @@ static const OOMatrix starboard_matrix =
|
|||||||
frustum[5][3] = clip[15] + clip[14];
|
frustum[5][3] = clip[15] + clip[14];
|
||||||
|
|
||||||
/* Normalize the result */
|
/* Normalize the result */
|
||||||
t = sqrt( frustum[5][0] * frustum[5][0] + frustum[5][1] * frustum[5][1] + frustum[5][2] * frustum[5][2] );
|
rt = 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][0] *= rt;
|
||||||
frustum[5][1] /= t;
|
frustum[5][1] *= rt;
|
||||||
frustum[5][2] /= t;
|
frustum[5][2] *= rt;
|
||||||
frustum[5][3] /= t;
|
frustum[5][3] *= rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (BOOL) checkFrustum:(Vector) position:(GLfloat) radius
|
- (BOOL) checkFrustum:(Vector)position :(GLfloat)radius
|
||||||
{
|
{
|
||||||
int p;
|
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 NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
- (void) drawUniverse
|
- (void) drawUniverse
|
||||||
@ -3690,9 +3685,8 @@ static const OOMatrix starboard_matrix =
|
|||||||
|
|
||||||
OOGL(glHint(GL_FOG_HINT, [self reducedDetail] ? GL_FASTEST : GL_NICEST));
|
OOGL(glHint(GL_FOG_HINT, [self reducedDetail] ? GL_FASTEST : GL_NICEST));
|
||||||
|
|
||||||
#if FRUSTUM_CULL
|
|
||||||
[self defineFrustum]; // camera is set up for this frame
|
[self defineFrustum]; // camera is set up for this frame
|
||||||
#endif
|
|
||||||
CheckOpenGLErrors(@"Universe after setting up for opaque pass");
|
CheckOpenGLErrors(@"Universe after setting up for opaque pass");
|
||||||
// DRAW ALL THE OPAQUE ENTITIES
|
// DRAW ALL THE OPAQUE ENTITIES
|
||||||
for (i = furthest; i >= nearest; i--)
|
for (i = furthest; i >= nearest; i--)
|
||||||
@ -9556,7 +9550,6 @@ static void PreloadOneSound(NSString *soundName)
|
|||||||
systeminfo = [self generateSystemData:system_seed];
|
systeminfo = [self generateSystemData:system_seed];
|
||||||
sunGoneNova = [systeminfo oo_boolForKey:@"sun_gone_nova"];
|
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)
|
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)
|
OOEconomyID economy = [systeminfo oo_unsignedCharForKey:KEY_ECONOMY]; // 0 .. 7 (0 richest .. 7 poorest)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user