Oolite
Loading...
Searching...
No Matches
WormholeEntity Class Reference

#include <WormholeEntity.h>

+ Inheritance diagram for WormholeEntity:
+ Collaboration diagram for WormholeEntity:

Instance Methods

(WormholeEntity *) - initWithDict:
 
(WormholeEntity *) - initWormholeTo:fromShip:
 
(BOOL) - suckInShip:
 
(void) - disgorgeShips
 
(void) - setExitPosition:
 
(OOSystemID- origin
 
(OOSystemID- destination
 
(NSPoint) - originCoordinates
 
(NSPoint) - destinationCoordinates
 
(void) - setMisjump
 
(void) - setMisjumpWithRange:
 
(BOOL) - withMisjump
 
(GLfloat) - misjumpRange
 
(double) - exitSpeed
 
(void) - setExitSpeed:
 
(double) - expiryTime
 
(double) - arrivalTime
 
(double) - estimatedArrivalTime
 
(double) - travelTime
 
(double) - scanTime
 
(void) - setScannedAt:
 
(void) - setContainsPlayer:
 
(BOOL) - isScanned
 
(WORMHOLE_SCANINFO- scanInfo
 
(void) - setScanInfo:
 
(NSArray *) - shipsInTransit
 
(NSString *) - identFromShip:
 
(NSDictionary *) - getDict
 
(void) - dealloc [implementation]
 
(NSString *) - descriptionComponents [implementation]
 
(BOOL) - canCollide [implementation]
 
(BOOL) - checkCloseCollisionWith: [implementation]
 
(void) - update: [implementation]
 
(void) - drawImmediate:translucent: [implementation]
 
(NSString *) - scanInfoString [implementation]
 
(void) - dumpSelfState [implementation]
 
(void) - getJSClass:andPrototype:
 
(NSString *) - oo_jsClassName
 
(BOOL) - isVisibleToScripts
 
(id) - init [implementation]
 
- Instance Methods inherited from Entity
(NSUInteger) - sessionID
 
(BOOL) - isShip
 
(BOOL) - isDock
 
(BOOL) - isStation
 
(BOOL) - isSubEntity
 
(BOOL) - isPlayer
 
(BOOL) - isPlanet
 
(BOOL) - isSun
 
(BOOL) - isSunlit
 
(BOOL) - isStellarObject
 
(BOOL) - isSky
 
(BOOL) - isWormhole
 
(BOOL) - isEffect
 
(BOOL) - isVisualEffect
 
(BOOL) - isWaypoint
 
(BOOL) - validForAddToUniverse
 
(void) - addToLinkedLists
 
(void) - removeFromLinkedLists
 
(void) - updateLinkedLists
 
(void) - wasAddedToUniverse
 
(void) - wasRemovedFromUniverse
 
(void) - warnAboutHostiles
 
(CollisionRegion *) - collisionRegion
 
(void) - setCollisionRegion:
 
(void) - setUniversalID:
 
(OOUniversalID- universalID
 
(BOOL) - throwingSparks
 
(void) - setThrowSparks:
 
(void) - throwSparks
 
(void) - setOwner:
 
(id) - owner
 
(ShipEntity *) - parentEntity
 
(ShipEntity *) - rootShipEntity
 
(void) - setPosition:
 
(void) - setPositionX:y:z:
 
(HPVector) - position
 
(Vector) - cameraRelativePosition
 
(GLfloat) - cameraRangeFront
 
(GLfloat) - cameraRangeBack
 
(void) - updateCameraRelativePosition
 
(Vector) - vectorTo:
 
(HPVector) - absolutePositionForSubentity
 
(HPVector) - absolutePositionForSubentityOffset:
 
(double) - zeroDistance
 
(double) - camZeroDistance
 
(NSComparisonResult) - compareZeroDistance:
 
(BoundingBox) - boundingBox
 
(GLfloat) - mass
 
(Quaternion) - orientation
 
(void) - setOrientation:
 
(Quaternion) - normalOrientation
 
(void) - setNormalOrientation:
 
(void) - orientationChanged
 
(void) - setVelocity:
 
(Vector) - velocity
 
(double) - speed
 
(GLfloat) - distanceTravelled
 
(void) - setDistanceTravelled:
 
(void) - setStatus:
 
(OOEntityStatus- status
 
(void) - setScanClass:
 
(OOScanClass- scanClass
 
(void) - setEnergy:
 
(GLfloat) - energy
 
(void) - setMaxEnergy:
 
(GLfloat) - maxEnergy
 
(void) - applyRoll:andClimb:
 
(void) - applyRoll:climb:andYaw:
 
(void) - moveForward:
 
(OOMatrix) - rotationMatrix
 
(OOMatrix) - drawRotationMatrix
 
(OOMatrix) - transformationMatrix
 
(OOMatrix) - drawTransformationMatrix
 
(GLfloat) - collisionRadius
 
(GLfloat) - frustumRadius
 
(void) - setCollisionRadius:
 
(NSMutableArray *) - collisionArray
 
(void) - applyVelocity:
 
(void) - takeEnergyDamage:from:becauseOf:weaponIdentifier:
 
(void) - dumpState
 
(NSUInteger) - lastDrawCounter
 
(void) - setLastDrawCounter:
 
(double) - findCollisionRadius
 
(BOOL) - isVisible
 
(BOOL) - isInSpace
 
(BOOL) - isImmuneToBreakPatternHide
 
(GLfloat) - universalTime
 
(GLfloat) - spawnTime
 
(GLfloat) - timeElapsedSinceSpawn
 
(void) - setAtmosphereFogging:
 
(OOColor *) - fogUniform
 
(NSString *) - descriptionForObjDumpBasic
 
(NSString *) - descriptionForObjDump
 
(NSSet *) - allTextures
 
(BOOL) - checkLinkedLists [implementation]
 
(id< OOWeakReferenceSupport >) - superShaderBindingTarget [implementation]
 
(Vector) - relativePosition [implementation]
 
(void) - subEntityReallyDied: [implementation]
 
(BOOL) - isBreakPattern
 
(void) - inspect [implementation]
 
(BOOL) - isECMBlast
 
(BOOL) - isExhaust
 
(BOOL) - isFlasher
 
(void) - deleteJSSelf
 
(jsval) - oo_jsValueInContext: [implementation]
 
(BOOL) - isCascadeWeapon
 
(BOOL) - isPlayerLikeShip
 
(GLfloat) - clock [implementation]
 
(unsigned) - pseudoFixedD100 [implementation]
 
(unsigned) - pseudoFixedD256 [implementation]
 
(unsigned) - systemGovernment [implementation]
 
(unsigned) - systemEconomy [implementation]
 
(unsigned) - systemTechLevel [implementation]
 
(unsigned) - systemPopulation [implementation]
 
(unsigned) - systemProductivity [implementation]
 
(BOOL) - isShipWithSubEntityShip:
 
(void) - drawSubEntityImmediate:translucent: [implementation]
 
- Instance Methods inherited from OOWeakRefObject
(id) - weakSelf
 
(id) - weakRetain [implementation]
 
(void) - weakRefDied: [implementation]
 
- Instance Methods inherited from <OOWeakReferenceSupport>
(id) - OO_RETURNS_RETAINED
 

Class Methods

(static void) + DrawWormholeCorona [implementation]
 

Private Attributes

double expiry_time
 
double travel_time
 
double arrival_time
 
double estimated_arrival_time
 
double scan_time
 
OOSystemID origin
 
OOSystemID destination
 
NSPoint originCoords
 
NSPoint destinationCoords
 
NSMutableArray * shipsInTransit
 
double witch_mass
 
double shrink_factor
 
double exit_speed
 
WORMHOLE_SCANINFO scan_info
 
BOOL hasExitPosition
 
BOOL _misjump
 
GLfloat _misjumpRange
 
BOOL containsPlayer
 

Additional Inherited Members

- Public Attributes inherited from Entity
OOUniversalID universalID
 
unsigned isShip: 1
 
unsigned isStation: 1
 
unsigned isPlayer: 1
 
unsigned isWormhole: 1
 
unsigned isSubEntity: 1
 
unsigned hasMoved: 1
 
unsigned hasRotated: 1
 
unsigned hasCollided: 1
 
unsigned isSunlit: 1
 
unsigned collisionTestFilter: 2
 
unsigned throw_sparks: 1
 
unsigned isImmuneToBreakPatternHide: 1
 
unsigned isExplicitlyNotMainStation: 1
 
unsigned isVisualEffect: 1
 
OOScanClass scanClass
 
GLfloat zero_distance
 
GLfloat cam_zero_distance
 
GLfloat no_draw_distance
 
GLfloat collision_radius
 
HPVector position
 
Vector cameraRelativePosition
 
Quaternion orientation
 
OOColoratmosphereFogging
 
int zero_index
 
Entityx_previous
 
Entityx_next
 
Entityy_previous
 
Entityy_next
 
Entityz_previous
 
Entityz_next
 
Entitycollision_chain
 
OOUniversalID shadingEntityID
 
Entitycollider
 
CollisionRegioncollisionRegion
 
- Protected Attributes inherited from Entity
HPVector lastPosition
 
Quaternion lastOrientation
 
GLfloat distanceTravelled
 
OOMatrix rotMatrix
 
Vector velocity
 
GLfloat energy
 
GLfloat maxEnergy
 
BoundingBox boundingBox
 
GLfloat mass
 
NSMutableArray * collidingEntities
 
OOTimeAbsolute spawnTime
 
struct JSObject * _jsSelf
 
NSUInteger lastDrawCounter
 
- Protected Attributes inherited from OOWeakRefObject
OOWeakReferenceweakSelf
 

Detailed Description

Definition at line 47 of file WormholeEntity.h.

Method Documentation

◆ arrivalTime

- (double) arrivalTime

Definition at line 54 of file WormholeEntity.m.

546{
547 return arrival_time;
548}

References Entity::setStatus:.

+ Here is the call graph for this function:

◆ canCollide

- (BOOL) canCollide
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

641{
642 /* Correct test for far end of wormhole */
643 if (origin != [UNIVERSE currentSystemID])
644 {
645 // if we're no longer in the origin system, can't suck in
646 return NO;
647 }
648 if ([PLAYER galaxy_coordinates].x != originCoords.x || [PLAYER galaxy_coordinates].y != originCoords.y)
649 {
650 // if we're no longer at the origin coordinates, can't suck in (handles interstellar space case)
651 return NO;
652 }
653
654 return (witch_mass > 0.0);
655}
float x
#define PLAYER
#define UNIVERSE
Definition Universe.h:842
voidpf uLong int origin
Definition ioapi.h:140

◆ checkCloseCollisionWith:

- (BOOL) checkCloseCollisionWith: (Entity *)  other
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

658 :(Entity *)other
659{
660 return ![other isEffect];
661}
BOOL isEffect()
Definition Entity.m:197

◆ dealloc

- (void) dealloc
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

596{
597 [shipsInTransit release];
598
599 [super dealloc];
600}

◆ descriptionComponents

- (NSString *) descriptionComponents
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

604{
605 double now = [PLAYER clockTime];
606 return [NSString stringWithFormat:@"destination: %@ ttl: %.2fs arrival: %@",
607 _misjump ? (NSString *)@"Interstellar Space" : [UNIVERSE getSystemName:destination],
608 expiry_time - now,
609 ClockToString(arrival_time, false)];
610}

◆ destination

- (OOSystemID) destination

◆ destinationCoordinates

- (NSPoint) destinationCoordinates

Definition at line 54 of file WormholeEntity.m.

524{
525 return destinationCoords;
526}
NSPoint destinationCoords

◆ disgorgeShips

- (void) disgorgeShips

Definition at line 54 of file WormholeEntity.m.

347{
348 double now = [PLAYER clockTimeAdjusted];
349 NSMutableArray* shipsStillInTransit = [[NSMutableArray alloc] initWithCapacity:[shipsInTransit count]];
350 BOOL hasShiftedExitPosition = NO;
351 BOOL useExitXYScatter = NO;
352
353 NSDictionary *shipInfo = nil;
354 foreach (shipInfo, shipsInTransit)
355 {
356 ShipEntity *ship = [shipInfo objectForKey:@"ship"];
357 NSString *shipBeacon = [shipInfo objectForKey:@"shipBeacon"];
358 double ship_arrival_time = arrival_time + [shipInfo oo_doubleForKey:@"time"];
359 double time_passed = now - ship_arrival_time;
360
361 if ([ship status] == STATUS_DEAD) continue; // skip dead ships.
362
363 if (ship_arrival_time > now)
364 {
365 [shipsStillInTransit addObject:shipInfo];
366 }
367 else
368 {
369 // Only calculate exit position once so that all ships arrive from the same point
370 if (!hasExitPosition)
371 {
372 position = [UNIVERSE getWitchspaceExitPosition]; // no need to reset PRNG.
373 GLfloat min_d1 = [UNIVERSE safeWitchspaceExitDistance];
374 Quaternion q1;
376 double d1 = SCANNER_MAX_RANGE*((ranrot_rand() % 256)/256.0 - 0.5);
377 Vector v1 = vector_forward_from_quaternion(q1);
378 if (dot_product(v1,kBasisZVector) < -0.99)
379 {
380 // a bit more safe distance if right behind the buoy
381 min_d1 *= 3.0;
382 }
383
384 if (fabs(d1) < min_d1) // no closer than 750m to edge of buoy
385 {
386 d1 += ((d1 > 0.0)? min_d1: -min_d1);
387 }
388 position.x += v1.x * d1; // randomise exit position
389 position.y += v1.y * d1;
390 position.z += v1.z * d1;
391 }
392
393 if (hasExitPosition && (!containsPlayer || useExitXYScatter))
394 {
395 HPVector shippos;
396 Vector exit_vector_x = vector_right_from_quaternion([UNIVERSE getWitchspaceExitRotation]);
397 Vector exit_vector_y = vector_up_from_quaternion([UNIVERSE getWitchspaceExitRotation]);
398// entry wormhole has a radius of around 100m (or perhaps more)
399// so randomise exit positions slightly too for second and subsequent ships
400// helps avoid collisions when two ships enter wormhole at same time
401 double offset_x = randf()*150.0-75.0;
402 double offset_y = randf()*150.0-75.0;
403 shippos.x = position.x + (offset_x*exit_vector_x.x)+(offset_y*exit_vector_y.x);
404 shippos.y = position.y + (offset_x*exit_vector_x.y)+(offset_y*exit_vector_y.y);
405 shippos.z = position.z + (offset_x*exit_vector_x.z)+(offset_y*exit_vector_y.z);
406 [ship setPosition:shippos];
407 }
408 else
409 {
410 // this is the first ship out of the wormhole
411 [self setExitSpeed:[ship maxFlightSpeed]*WORMHOLE_LEADER_SPEED_FACTOR];
412 if (containsPlayer)
413 { // reset the player's speed to the new speed
414 [PLAYER setSpeed:exit_speed];
415 }
416 useExitXYScatter = YES;
417 [ship setPosition:position];
418 }
419
420 if (shipBeacon != nil)
421 {
422 [ship setBeaconCode:shipBeacon];
423 }
424
425 // Don't reduce bounty on misjump. Fixes #17992
426 // - MKW 2011.03.10
427 if (!_misjump) [ship setBounty:[ship bounty]/2 withReason:kOOLegalStatusReasonNewSystem]; // adjust legal status for new system
428
429 // now the cargo is defined in advance, this is unnecessary
430/* if ([ship cargoFlag] == CARGO_FLAG_FULL_PLENTIFUL)
431 {
432 [ship setCargoFlag: CARGO_FLAG_FULL_SCARCE];
433 }*/
434
435 if (time_passed < 2.0)
436 {
437 [ship witchspaceLeavingEffects]; // adds the ship to the universe with effects.
438 }
439 else
440 {
441 // arrived 2 seconds or more before the player. Rings have faded out.
442 [ship setOrientation: [UNIVERSE getWitchspaceExitRotation]];
443 [ship setPitch: 0.0];
444 [ship setRoll: 0.0];
445 [ship setVelocity: kZeroVector];
446 [UNIVERSE addEntity:ship]; // AI and status get initialised here
447 }
448 [ship setSpeed:[self exitSpeed]]; // all ships from this wormhole have same velocity
449
450 // awaken JS-based AIs
451 [ship doScriptEvent:OOJSID("aiStarted")];
452
453 // Wormholes now have a JS representation, so we could provide it
454 // but is it worth it for the exit wormhole?
455 [ship doScriptEvent:OOJSID("shipExitedWormhole") andReactToAIMessage:@"EXITED WITCHSPACE"];
456
457 // update the ships's position
458 if (!hasExitPosition)
459 {
460 hasExitPosition = YES;
461 hasShiftedExitPosition = YES; // exitPosition is shifted towards the lead ship update position.
462 [ship update: time_passed]; // do this only for one ship or the next ships might appear at very different locations.
463 position = [ship position]; // e.g. when the player docks first before following, time_passed is already > 10 minutes.
464 }
465 else if (time_passed > 1) // Only update the ship position if it was some time ago, otherwise we're in 'real time'.
466 {
467 if (hasShiftedExitPosition)
468 {
469 // only update the time delay to the lead ship. Sign is not correct but updating gives a small spacial distribution.
470 [ship update: (ship_arrival_time - arrival_time)];
471 }
472 else
473 {
474 // Exit position was externally set, e.g. by player ship following through this wormhole.
475 // Use the real time difference.
476 [ship update:time_passed];
477 }
478 }
479 }
480 }
481 [shipsInTransit release];
482 shipsInTransit = shipsStillInTransit;
483
484 if (containsPlayer)
485 {
486 // ships exiting the wormhole after now are following the player
487 // so appear behind them
488 position = HPvector_add([PLAYER position], vectorToHPVector(vector_multiply_scalar([PLAYER forwardVector], -500.0f)));
489 containsPlayer = NO;
490 }
491// else, the wormhole doesn't now (or never) contained the player, so
492// no need to move it
493}
#define SCANNER_MAX_RANGE
Definition Entity.h:51
return nil
Vector vector_up_from_quaternion(Quaternion quat)
Vector vector_right_from_quaternion(Quaternion quat)
Vector vector_forward_from_quaternion(Quaternion quat)
void quaternion_set_random(Quaternion *quat)
float y
const Vector kBasisZVector
Definition OOVector.m:31
void setVelocity:(Vector vel)
Definition Entity.m:758
void setOrientation:(Quaternion quat)
Definition Entity.m:726
OOEntityStatus status()
Definition Entity.m:794
HPVector position
Definition Entity.h:112
void setPosition:(HPVector posn)
Definition Entity.m:648
void setBounty:withReason:(OOCreditsQuantity amount,[withReason] OOLegalStatusReason reason)
BOOL witchspaceLeavingEffects()
void setRoll:(double amount)
void setSpeed:(double amount)
void doScriptEvent:(jsid message)
void doScriptEvent:andReactToAIMessage:(jsid scriptEvent,[andReactToAIMessage] NSString *aiMessage)
OOCreditsQuantity bounty
Definition ShipEntity.h:300
void setPitch:(double amount)
void setBeaconCode:(NSString *bcode)
void update:(OOTimeDelta delta_t)
GLfloat maxFlightSpeed
Definition ShipEntity.h:239
NSMutableArray * shipsInTransit
float randf(void)
#define ranrot_rand()

◆ drawImmediate:translucent:

- (void) drawImmediate: (bool)  immediate
translucent: (bool)  translucent 
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

695 :(bool)immediate translucent:(bool)translucent
696{
697 if ([UNIVERSE breakPatternHide])
698 return; // DON'T DRAW DURING BREAK PATTERN
699
701 return; // TOO FAR AWAY TO SEE
702
703 if (witch_mass <= 0.0)
704 return;
705
706 if (collision_radius <= 0.0)
707 return;
708
709 if ([self scanClass] == CLASS_NO_DRAW)
710 return;
711
712 if (translucent)
713 {
714 // for now, a simple copy of the energy bomb draw routine
715 float srzd = sqrt(cam_zero_distance);
716
717 GLfloat color_fv[4] = OO_WORMHOLE_COLOR_FVEC4;
718
720 OOGL(glDisable(GL_CULL_FACE));
721 OOGL(glEnable(GL_BLEND));
722
723 OOGL(glColor4fv(color_fv));
724 OOGLBEGIN(GL_TRIANGLE_FAN);
725 GLDrawBallBillboard(0.45 * collision_radius, 4, srzd);
726 OOGLEND();
727
728 color_fv[3] = fmin(color_fv[3] * 2.0, 1.0);
729 DrawWormholeCorona(0.45 * collision_radius, collision_radius, 4, srzd, color_fv);
730
731 OOGL(glEnable(GL_CULL_FACE));
732 OOGL(glDisable(GL_BLEND));
733 }
734
736 OOCheckOpenGLErrors(@"WormholeEntity after drawing %@", self);
737}
#define OOGLBEGIN
Definition OOOpenGL.h:253
@ OPENGL_STATE_TRANSLUCENT_PASS
Definition OOOpenGL.h:124
#define OOVerifyOpenGLState()
Definition OOOpenGL.h:136
BOOL OOCheckOpenGLErrors(NSString *format,...)
Definition OOOpenGL.m:39
void GLDrawBallBillboard(GLfloat radius, GLfloat step, GLfloat z_distance)
Definition OOOpenGL.m:111
#define OOSetOpenGLState(STATE)
Definition OOOpenGL.h:135
#define OOGL(statement)
Definition OOOpenGL.h:251
#define OOGLEND
Definition OOOpenGL.h:254
#define OO_WORMHOLE_COLOR_FVEC4
GLfloat collision_radius
Definition Entity.h:111
OOScanClass scanClass
Definition Entity.h:106
GLfloat cam_zero_distance
Definition Entity.h:109
GLfloat no_draw_distance
Definition Entity.h:110
static void DrawWormholeCorona(GLfloat inner_radius, GLfloat outer_radius, int step, GLfloat z_distance, GLfloat *col4v1)

◆ DrawWormholeCorona

+ (static void) DrawWormholeCorona (GLfloat)  inner_radius
(GLfloat)  outer_radius
(int step
(GLfloat)  z_distance
(GLfloat *)  col4v1 
implementation

Definition at line 740 of file WormholeEntity.m.

741{
742 if (outer_radius >= z_distance) // inside the sphere
743 return;
744 int i;
745
746 NSRange activity = { 0.34, 1.0 };
747
748 GLfloat s0, c0, s1, c1;
749
750 GLfloat r0, r1;
751 GLfloat rv0, rv1, q;
752
753 GLfloat theta, delta, halfStep;
754
755 r0 = outer_radius * z_distance / sqrt(z_distance * z_distance - outer_radius * outer_radius);
756 r1 = inner_radius * z_distance / sqrt(z_distance * z_distance - inner_radius * inner_radius);
757
758 delta = step * M_PI / 180.0f;
759 halfStep = 0.5f * delta;
760 theta = 0.0f;
761
762 OOGLBEGIN(GL_TRIANGLE_STRIP);
763 for (i = 0; i < 360; i += step )
764 {
765 rv0 = randf();
766 rv1 = randf();
767
768 q = activity.location + rv0 * activity.length;
769
770 s0 = r0 * sin(theta);
771 c0 = r0 * cos(theta);
772 glColor4f(col4v1[0] * q, col4v1[1] * q, col4v1[2] * q, col4v1[3] * rv0);
773 glVertex3f(s0, c0, 0.0);
774
775 s1 = r1 * sin(theta - halfStep) * 0.5 * (1.0 + rv1);
776 c1 = r1 * cos(theta - halfStep) * 0.5 * (1.0 + rv1);
777 glColor4f(col4v1[0] * OO_WORMHOLE_COLOR_BOOST, col4v1[1] * OO_WORMHOLE_COLOR_BOOST, col4v1[2] * OO_WORMHOLE_COLOR_BOOST, col4v1[3] * rv0);
778 glVertex3f(s1, c1, 0.0);
779
780 theta += delta;
781 }
782 // repeat last values to close
783 rv0 = randf();
784 rv1 = randf();
785
786 q = activity.location + rv0 * activity.length;
787
788 s0 = 0.0f; // r0 * sin(0);
789 c0 = r0; // r0 * cos(0);
790 glColor4f(col4v1[0] * q, col4v1[1] * q, col4v1[2] * q, col4v1[3] * rv0);
791 glVertex3f(s0, c0, 0.0);
792
793 s1 = r1 * sin(halfStep) * 0.5 * (1.0 + rv1);
794 c1 = r1 * cos(halfStep) * 0.5 * (1.0 + rv1);
795 glColor4f(col4v1[0] * OO_WORMHOLE_COLOR_BOOST, col4v1[1] * OO_WORMHOLE_COLOR_BOOST, col4v1[2] * OO_WORMHOLE_COLOR_BOOST, col4v1[3] * rv0);
796 glVertex3f(s1, c1, 0.0);
797 OOGLEND();
798}
#define M_PI
Definition OOMaths.h:73
#define OO_WORMHOLE_COLOR_BOOST

References M_PI, OO_WORMHOLE_COLOR_BOOST, OOGLBEGIN, OOGLEND, and randf().

+ Here is the call graph for this function:

◆ dumpSelfState

- (void) dumpSelfState
implementation

Reimplemented from Entity.

Definition at line 740 of file WormholeEntity.m.

848{
849 [super dumpSelfState];
850 OOLog(@"dumpState.wormholeEntity", @"Origin : %@", [UNIVERSE getSystemName:origin]);
851 OOLog(@"dumpState.wormholeEntity", @"Destination : %@", [UNIVERSE getSystemName:destination]);
852 OOLog(@"dumpState.wormholeEntity", @"Expiry Time : %@", ClockToString(expiry_time, false));
853 OOLog(@"dumpState.wormholeEntity", @"Arrival Time : %@", ClockToString(arrival_time, false));
854 OOLog(@"dumpState.wormholeEntity", @"Projected Arrival Time : %@", ClockToString(estimated_arrival_time, false));
855 OOLog(@"dumpState.wormholeEntity", @"Scanned Time : %@", ClockToString(scan_time, false));
856 OOLog(@"dumpState.wormholeEntity", @"Scanned State : %@", [self scanInfoString]);
857
858 OOLog(@"dumpState.wormholeEntity", @"Mass : %.2lf", witch_mass);
859 OOLog(@"dumpState.wormholeEntity", @"Ships : %llu", [shipsInTransit count]);
860 unsigned i;
861 for (i = 0; i < [shipsInTransit count]; ++i)
862 {
863 NSDictionary *shipDict = [shipsInTransit oo_dictionaryAtIndex:i];
864 ShipEntity* ship = (ShipEntity*)[shipDict objectForKey:@"ship"];
865 double ship_arrival_time = arrival_time + [shipDict oo_doubleForKey:@"time"];
866 OOLog(@"dumpState.wormholeEntity.ships", @"Ship %d: %@ mass %.2f arrival time %@", i+1, ship, [ship mass], ClockToString(ship_arrival_time, false));
867 }
868}
#define OOLog(class, format,...)
Definition OOLogging.h:88
unsigned count
NSString * ClockToString(double clock, BOOL adjusting)
GLfloat mass
Definition Entity.h:146
OOSystemID destination
double estimated_arrival_time
NSString * scanInfoString()

◆ estimatedArrivalTime

- (double) estimatedArrivalTime

Definition at line 54 of file WormholeEntity.m.

551{
553}

◆ exitSpeed

- (double) exitSpeed

Definition at line 54 of file WormholeEntity.m.

529{
530 return exit_speed;
531}

◆ expiryTime

- (double) expiryTime

Definition at line 54 of file WormholeEntity.m.

541{
542 return expiry_time;
543}

◆ getDict

- (NSDictionary *) getDict

Definition at line 740 of file WormholeEntity.m.

801{
802 NSMutableDictionary *myDict = [NSMutableDictionary dictionary];
803
804 [myDict oo_setInteger:origin forKey:@"origin_id"];
805 [myDict oo_setInteger:destination forKey:@"dest_id"];
806 [myDict setObject:StringFromPoint(originCoords) forKey:@"origin_coords"];
807 [myDict setObject:StringFromPoint(destinationCoords) forKey:@"dest_coords"];
808 // Anything converting a wormhole to a dictionary should already have
809 // modified its time to shipClock time
810 [myDict oo_setFloat:(expiry_time) forKey:@"expiry_time"];
811 [myDict oo_setFloat:(arrival_time) forKey:@"arrival_time"];
812 [myDict oo_setFloat:(estimated_arrival_time) forKey:@"estimated_arrival_time"];
813 [myDict oo_setHPVector:position forKey:@"position"];
814 [myDict oo_setBool:_misjump forKey:@"misjump"];
815
816 NSMutableArray * shipArray = [NSMutableArray arrayWithCapacity:[shipsInTransit count]];
817 NSEnumerator * ships = [shipsInTransit objectEnumerator];
818 NSDictionary * currShipDict = nil;
819 NSMutableDictionary *context = [NSMutableDictionary dictionary];
820 while ((currShipDict = [ships nextObject]) != nil)
821 {
822 id ship = [currShipDict objectForKey:@"ship"];
823 [shipArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
824 [NSNumber numberWithDouble:[currShipDict oo_doubleForKey:@"time"]], @"time_delta",
825 [ship savedShipDictionaryWithContext:context], @"ship_info",
826 nil]];
827 }
828 [myDict setObject:shipArray forKey:@"ships"];
829
830 return myDict;
831}

◆ getJSClass:andPrototype:

- (void) getJSClass: (JSClass **)  outClass
andPrototype: (JSObject **)  outPrototype 

Reimplemented from Entity.

Provided by category WormholeEntity(OOJavaScriptExtensions).

Definition at line 179 of file OOJSWormhole.m.

121 :(JSClass **)outClass andPrototype:(JSObject **)outPrototype
122{
123 *outClass = &sWormholeClass;
124 *outPrototype = sWormholePrototype;
125}
static JSObject * sWormholePrototype
static JSClass sWormholeClass

◆ identFromShip:

- (NSString *) identFromShip: (ShipEntity*)  ship

Definition at line 54 of file WormholeEntity.m.

613 :(ShipEntity*)ship
614{
615 if ([ship hasEquipmentItem:@"EQ_WORMHOLE_SCANNER"])
616 {
617 if ([self scanInfo] >= WH_SCANINFO_DESTINATION)
618 {
619 return [NSString stringWithFormat:DESC(@"wormhole-to-@"), [UNIVERSE getSystemName:destination]];
620 }
621 else
622 {
623 return DESC(@"wormhole-desc");
624 }
625 }
626 else
627 {
628 OOLogERR(kOOLogInconsistentState, @"%@", @"Wormhole identified when ship has no EQ_WORMHOLE_SCANNER.");
629 /*
630 This was previously an assertion, but a player reported hitting it.
631 http://aegidian.org/bb/viewtopic.php?p=128110#p128110
632 -- Ahruman 2011-01-27
633 */
634 return nil;
635 }
636
637}
#define OOLogERR(class, format,...)
Definition OOLogging.h:112
NSString *const kOOLogInconsistentState
Definition OOLogging.m:650
#define DESC(key)
Definition Universe.h:848
@ WH_SCANINFO_DESTINATION
WORMHOLE_SCANINFO scanInfo()

◆ init

- (id) init
implementation

Reimplemented from Entity.

Provided by category WormholeEntity(Private).

Definition at line 54 of file WormholeEntity.m.

60{
61 if ((self = [super init]))
62 {
63 witch_mass = 0.0;
64 shipsInTransit = [[NSMutableArray arrayWithCapacity:4] retain];
65 collision_radius = 0.0;
66 [self setStatus:STATUS_EFFECT];
67 scanClass = CLASS_WORMHOLE;
68 isWormhole = YES;
69 scan_info = WH_SCANINFO_NONE;
70 scan_time = 0;
71 hasExitPosition = NO;
72 containsPlayer = NO;
73 exit_speed = 50.0;
74 }
75 return self;
76}
@ WH_SCANINFO_NONE

◆ initWithDict:

- (WormholeEntity *) initWithDict: (NSDictionary*)  dict

Definition at line 54 of file WormholeEntity.m.

87 :(NSDictionary*)dict
88{
89 assert(dict != nil);
90
91 if ((self = [self init]))
92 {
93 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
94
95 // wormholes from pre-1.80 savegames using "origin_seed" and "dest_seed"
96 // currently get defaults set; will probably disappear unnoticed
97 origin = [dict oo_intForKey:@"origin_id" defaultValue:0];
98 destination = [dict oo_intForKey:@"dest_id" defaultValue:255];
99
100 originCoords = [[UNIVERSE systemManager] getCoordinatesForSystem:origin inGalaxy:[PLAYER galaxyNumber]];
101 destinationCoords = [[UNIVERSE systemManager] getCoordinatesForSystem:destination inGalaxy:[PLAYER galaxyNumber]];
102
103 // We only ever init from dictionary if we're loaded by the player, so
104 // by definition we have been scanned
106
107 // Remember, times are stored as Ship Clock - but anything
108 // saving/restoring wormholes from dictionaries should know this!
109 expiry_time = [dict oo_doubleForKey:@"expiry_time"];
110 arrival_time = [dict oo_doubleForKey:@"arrival_time"];
111 // just in case an old save game has one with crossed times
113 {
114 expiry_time = arrival_time - 1.0;
115 }
116
117 // Since this is new for 1.75.1, we must give it a default values as we could be loading an old savegame
118 estimated_arrival_time = [dict oo_doubleForKey:@"estimated_arrival_time" defaultValue:arrival_time];
119 position = [dict oo_hpvectorForKey:@"position"];
120 _misjump = [dict oo_boolForKey:@"misjump" defaultValue:NO];
121
122
123 // Setup shipsInTransit
124 NSArray * shipDictsArray = [dict oo_arrayForKey:@"ships"];
125 NSDictionary *currShipDict = nil;
126 [shipsInTransit removeAllObjects];
127 NSMutableDictionary *restoreContext = [NSMutableDictionary dictionary];
128
129 foreach (currShipDict, shipDictsArray)
130 {
131 NSDictionary *shipInfo = [currShipDict oo_dictionaryForKey:@"ship_info"];
132 if (shipInfo != nil)
133 {
135 useFallback:YES
136 context:restoreContext];
137 if (ship != nil)
138 {
139 [shipsInTransit addObject:[NSDictionary dictionaryWithObjectsAndKeys:
140 ship, @"ship",
141 [currShipDict objectForKey:@"time_delta"], @"time",
142 nil]];
143 }
144 else
145 {
146 OOLog(@"wormhole.load.warning", @"Wormhole ship \"%@\" failed to initialize - missing OXP or old-style saved wormhole data.", [shipInfo oo_stringForKey:@"ship_key"]);
147 }
148 }
149 }
150 [pool release];
151 }
152 return self;
153}
@ WH_SCANINFO_SCANNED
id init()
Definition Entity.m:68
id shipRestoredFromDictionary:useFallback:context:(NSDictionary *dictionary,[useFallback] BOOL fallback,[context] NSMutableDictionary *context)
WORMHOLE_SCANINFO scan_info

◆ initWormholeTo:fromShip:

- (WormholeEntity *) initWormholeTo: (OOSystemID s
fromShip: (ShipEntity *)  ship 

Definition at line 54 of file WormholeEntity.m.

155 :(OOSystemID) s fromShip:(ShipEntity *) ship
156{
157 assert(ship != nil);
158
159 if ((self = [self init]))
160 {
161 double now = [PLAYER clockTimeAdjusted];
162 double distance;
163 OOSunEntity *sun = [UNIVERSE sun];
164
165 _misjump = NO;
166 origin = [UNIVERSE currentSystemID];
167 destination = s;
168 originCoords = [PLAYER galaxy_coordinates];
169 destinationCoords = [[UNIVERSE systemManager] getCoordinatesForSystem:destination inGalaxy:[PLAYER galaxyNumber]];
171 distance = fmax(distance, 0.1);
172 witch_mass = 200000.0; // MKW 2010.11.21 - originally the ship's mass was added twice - once here and once in suckInShip. Instead, we give each wormhole a minimum mass.
173 if ([ship isPlayer])
174 witch_mass += [ship mass]; // The player ship never gets sucked in, so add its mass here.
175
176 if (sun && ([sun willGoNova] || [sun goneNova]) && [ship mass] > 240000)
177 shrink_factor = [ship mass] / 240000; // don't allow longstanding wormholes in nova systems. (60 sec * WORMHOLE_SHRINK_RATE = 240 000)
178 else
179 shrink_factor = 1;
180
181 collision_radius = 0.5 * M_PI * pow(witch_mass, 1.0/3.0);
183 travel_time = (distance * distance * 3600); // Taken from PlayerEntity.h
186
187 /* There are a number of bugs where the arrival time is < than the
188 * expiry time (i.e. both ends open at once).
189 * Rather than try to flatten all of them, having been unsuccessful twice
190 * it seems easier to declare as a matter of wormhole physics that it
191 * _can't_ be open at both ends at once. - CIM: 13/12/12 */
193 {
194 expiry_time = arrival_time - 1.0;
195 }
196 position = [ship position];
197 zero_distance = HPdistance2([PLAYER position], position);
198 }
199 return self;
200}
int16_t OOSystemID
Definition OOTypes.h:211
#define WORMHOLE_SHRINK_RATE
GLfloat zero_distance
Definition Entity.h:108
unsigned isPlayer
Definition Entity.h:93
OOINLINE double distanceBetweenPlanetPositions(int x1, int y1, int x2, int y2) INLINE_CONST_FUNC

◆ isScanned

- (BOOL) isScanned

Definition at line 54 of file WormholeEntity.m.

566{
568}

◆ isVisibleToScripts

- (BOOL) isVisibleToScripts

Reimplemented from Entity.

Provided by category WormholeEntity(OOJavaScriptExtensions).

Definition at line 179 of file OOJSWormhole.m.

134{
135 return YES;
136}

◆ misjumpRange

- (GLfloat) misjumpRange

Definition at line 54 of file WormholeEntity.m.

252{
253 return _misjumpRange;
254}
GLfloat _misjumpRange

◆ oo_jsClassName

- (NSString *) oo_jsClassName

Reimplemented from Entity.

Provided by category WormholeEntity(OOJavaScriptExtensions).

Definition at line 179 of file OOJSWormhole.m.

129{
130 return @"Wormhole";
131}

◆ origin

◆ originCoordinates

- (NSPoint) originCoordinates

Definition at line 54 of file WormholeEntity.m.

519{
520 return originCoords;
521}

◆ scanInfo

- (WORMHOLE_SCANINFO) scanInfo

Definition at line 54 of file WormholeEntity.m.

581{
582 return scan_info;
583}

◆ scanInfoString

- (NSString *) scanInfoString
implementation

Definition at line 740 of file WormholeEntity.m.

834{
835 switch(scan_info)
836 {
837 case WH_SCANINFO_NONE: return @"WH_SCANINFO_NONE";
838 case WH_SCANINFO_SCANNED: return @"WH_SCANINFO_SCANNED";
839 case WH_SCANINFO_COLLAPSE_TIME: return @"WH_SCANINFO_COLLAPSE_TIME";
840 case WH_SCANINFO_ARRIVAL_TIME: return @"WH_SCANINFO_ARRIVAL_TIME";
841 case WH_SCANINFO_DESTINATION: return @"WH_SCANINFO_DESTINATION";
842 case WH_SCANINFO_SHIP: return @"WH_SCANINFO_SHIP";
843 }
844 return @"WH_SCANINFO_UNDEFINED"; // should never get here
845}
@ WH_SCANINFO_SHIP
@ WH_SCANINFO_ARRIVAL_TIME
@ WH_SCANINFO_COLLAPSE_TIME

◆ scanTime

- (double) scanTime

Definition at line 54 of file WormholeEntity.m.

561{
562 return scan_time;
563}

◆ setContainsPlayer:

- (void) setContainsPlayer: (BOOL)  val

Definition at line 54 of file WormholeEntity.m.

496 :(BOOL)val
497{
498 containsPlayer = val;
499}

◆ setExitPosition:

- (void) setExitPosition: (HPVector)  pos

Definition at line 54 of file WormholeEntity.m.

502 :(HPVector)pos
503{
504 [self setPosition: pos];
505 hasExitPosition = YES;
506}

◆ setExitSpeed:

- (void) setExitSpeed: (double)  speed

Definition at line 54 of file WormholeEntity.m.

534 :(double) speed
535{
537}
double speed()
Definition Entity.m:770

◆ setMisjump

- (void) setMisjump

Definition at line 54 of file WormholeEntity.m.

204{
205 // Test for misjump first - it's entirely possibly that the wormhole
206 // has already been marked for misjumping when another ship enters it.
207 if (!_misjump)
208 {
210 double time_adjust = distance * distance * (3600 - 2700); // NB: Time adjustment is calculated using original distance. Formula matches the one in [PlayerEntity witchJumpTo]
211 arrival_time -= time_adjust;
212 travel_time -= time_adjust;
215 _misjump = YES;
216 }
217}

◆ setMisjumpWithRange:

- (void) setMisjumpWithRange: (GLfloat)  range

Definition at line 54 of file WormholeEntity.m.

220 :(GLfloat)range
221{
222 if (range <= 0.0 || range >= 1.0)
223 {
224 range = 0.5; // for safety, though nothing should be setting this
225 }
226 _misjumpRange = range;
227 // Test for misjump first - it's entirely possibly that the wormhole
228 // has already been marked for misjumping when another ship enters it.
229 if (!_misjump)
230 {
232 double time_adjust = (distance * (1-_misjumpRange))*(distance * (1-_misjumpRange))*3600.0;
233 // time adjustment ensures that misjumps not faster than normal jumps
234 // formulae for time and distance by mwerle at http://developer.berlios.de/pm/task.php?func=detailtask&project_task_id=4703&group_id=3577&group_project_id=1753
235 arrival_time -= time_adjust;
236 travel_time -= time_adjust;
237
240 _misjump = YES;
241 }
242}

◆ setScanInfo:

- (void) setScanInfo: (WORMHOLE_SCANINFO scanInfo

Definition at line 54 of file WormholeEntity.m.

585 :(WORMHOLE_SCANINFO)p_scanInfo
586{
587 scan_info = p_scanInfo;
588}
WORMHOLE_SCANINFO

◆ setScannedAt:

- (void) setScannedAt: (double)  time

Definition at line 54 of file WormholeEntity.m.

570 :(double)p_scanTime
571{
573 {
574 scan_time = p_scanTime;
576 }
577 // else we previously scanned this wormhole
578}

◆ shipsInTransit

- (NSArray *) shipsInTransit

◆ suckInShip:

- (BOOL) suckInShip: (ShipEntity *)  ship

Definition at line 54 of file WormholeEntity.m.

257 :(ShipEntity *) ship
258{
259 if (!ship || [ship status] == STATUS_ENTERING_WITCHSPACE)
260 {
261 return NO;
262 }
263 if (origin != [UNIVERSE currentSystemID])
264 {
265 // if we're no longer in the origin system, can't suck in
266 return NO;
267 }
268 if ([PLAYER galaxy_coordinates].x != originCoords.x || [PLAYER galaxy_coordinates].y != originCoords.y)
269 {
270 // if we're no longer at the origin coordinates, can't suck in (handles interstellar space case)
271 return NO;
272 }
273 double now = [PLAYER clockTimeAdjusted];
274
275/* CIM: removed test. Not valid for wormholes which last longer than their travel time. Most likely for short distances e.g. zero-distance doubles. equal_seeds test above should cover it, with expiry_time test for safety. */
276/* if (now > arrival_time)
277 return NO; // far end of the wormhole! */
278 if( now > expiry_time )
279 return NO;
280 // MKW 2010.11.18 - calculate time it takes for ship to reach wormhole
281 // This is for AI ships which get told to enter the wormhole even though they
282 // may still be some distance from it when the player exits the system
283 float d = HPdistance(position, [ship position]);
284 d -= [ship collisionRadius] + [self collisionRadius];
285 if (d > 0.0f)
286 {
287 float afterburnerFactor = [ship hasFuelInjection] && [ship fuel] > MIN_FUEL ? [ship afterburnerFactor] : 1.0;
288 float shipSpeed = [ship maxFlightSpeed] * afterburnerFactor;
289 // MKW 2011.02.27 - calculate speed based on group leader, if any, to
290 // try and prevent escorts from entering the wormhole before their mother.
291 ShipEntity *leader = [[ship group] leader];
292 if (leader && (leader != ship))
293 {
294 afterburnerFactor = [leader hasFuelInjection] && [leader fuel] > MIN_FUEL ? [leader afterburnerFactor] : 1.0;
295 float leaderShipSpeed = [leader maxFlightSpeed] * afterburnerFactor;
296 if (leaderShipSpeed < shipSpeed ) shipSpeed = leaderShipSpeed;
297 }
298 if (shipSpeed <= 0.0f ) shipSpeed = 0.1f;
299 now += d / shipSpeed;
300 if( now > expiry_time )
301 {
302 return NO;
303 }
304 }
305
306 [shipsInTransit addObject:[NSDictionary dictionaryWithObjectsAndKeys:
307 ship, @"ship",
308 [NSNumber numberWithDouble: now + travel_time - arrival_time], @"time",
309 [ship beaconCode], @"shipBeacon", // in case a beacon code has been set, nil otherwise
310 nil]];
311 witch_mass += [ship mass];
313 // and, again, cap to be earlier than arrival time
315 {
316 expiry_time = arrival_time - 1.0;
317 }
318
319 collision_radius = 0.5 * M_PI * pow(witch_mass, 1.0/3.0);
320
321 [UNIVERSE addWitchspaceJumpEffectForShip:ship];
322
323 // Should probably pass the wormhole, but they have no JS representation
324 [ship setStatus:STATUS_ENTERING_WITCHSPACE];
325 [ship doScriptEvent:OOJSID("shipWillEnterWormhole")];
326 [[ship getAI] message:@"ENTERED_WITCHSPACE"];
327
328 [UNIVERSE removeEntity:ship];
329 [[ship getAI] clearStack]; // get rid of any preserved states
330
331 if ([ship isStation])
332 {
333 if ([PLAYER dockedStation] == (StationEntity*)ship)
334 {
335 // the carrier has jumped while the player is docked
336 [ship retain];
337 [UNIVERSE carryPlayerOn:(StationEntity*)ship inWormhole:self];
338 [ship release];
339 }
340 }
341
342 return YES;
343}
return self
#define MIN_FUEL
Definition ShipEntity.h:102
void clearStack()
Definition AI.m:685
void message:(NSString *ms)
Definition AI.m:600
GLfloat collisionRadius()
Definition Entity.m:906
unsigned isStation
Definition Entity.h:92
ShipEntity * leader()
void setStatus:(OOEntityStatus stat)
BOOL hasFuelInjection()
NSString * beaconCode()
OOShipGroup * group()
OOFuelQuantity fuel
Definition ShipEntity.h:288
float afterburnerFactor()

◆ travelTime

- (double) travelTime

Definition at line 54 of file WormholeEntity.m.

556{
557 return travel_time;
558}

◆ update:

- (void) update: (OOTimeDelta delta_t
implementation

Reimplemented from Entity.

Definition at line 54 of file WormholeEntity.m.

664 :(OOTimeDelta) delta_t
665{
666 [super update:delta_t];
667
668 PlayerEntity *player = PLAYER;
669 assert(player != nil);
670 rotMatrix = OOMatrixForBillboard(position, [player viewpointPosition]);
671 double now = [player clockTimeAdjusted];
672
673 if (witch_mass > 0.0)
674 {
675
677 witch_mass = fmax(witch_mass, 0.0);
678 collision_radius = 0.5 * M_PI * pow(witch_mass, 1.0/3.0);
680 }
681
682 scanClass = (witch_mass > 0.0)? CLASS_WORMHOLE : CLASS_NO_DRAW;
683
684 if (now > expiry_time)
685 {
686 scanClass = CLASS_NO_DRAW; // witch_mass not certain to be limiting factor on extremely short jumps, so make sure now
687
688 // If we're a saved wormhole waiting to disgorge more ships, it's safe
689 // to remove self from UNIVERSE, but we need the current position!
690 [UNIVERSE removeEntity: self];
691 }
692}
#define NO_DRAW_DISTANCE_FACTOR
Definition Entity.h:46
OOMatrix OOMatrixForBillboard(HPVector bbPos, HPVector eyePos)
Definition OOMatrix.m:191
double OOTimeDelta
Definition OOTypes.h:224
OOMatrix rotMatrix
Definition Entity.h:138
double clockTimeAdjusted()

◆ withMisjump

- (BOOL) withMisjump

Definition at line 54 of file WormholeEntity.m.

246{
247 return _misjump;
248}

Member Data Documentation

◆ _misjump

- (BOOL) _misjump
private

Definition at line 71 of file WormholeEntity.h.

◆ _misjumpRange

- (GLfloat) _misjumpRange
private

Definition at line 72 of file WormholeEntity.h.

◆ arrival_time

- (double) arrival_time
private

Definition at line 52 of file WormholeEntity.h.

◆ containsPlayer

- (BOOL) containsPlayer
private

Definition at line 73 of file WormholeEntity.h.

◆ destination

- (OOSystemID) destination
private

Definition at line 57 of file WormholeEntity.h.

◆ destinationCoords

- (NSPoint) destinationCoords
private

Definition at line 60 of file WormholeEntity.h.

◆ estimated_arrival_time

- (double) estimated_arrival_time
private

Definition at line 53 of file WormholeEntity.h.

◆ exit_speed

- (double) exit_speed
private

Definition at line 67 of file WormholeEntity.h.

◆ expiry_time

- (double) expiry_time
private

Definition at line 50 of file WormholeEntity.h.

◆ hasExitPosition

- (BOOL) hasExitPosition
private

Definition at line 70 of file WormholeEntity.h.

◆ origin

- (OOSystemID) origin
private

Definition at line 56 of file WormholeEntity.h.

◆ originCoords

- (NSPoint) originCoords
private

Definition at line 59 of file WormholeEntity.h.

◆ scan_info

- (WORMHOLE_SCANINFO) scan_info
private

Definition at line 69 of file WormholeEntity.h.

◆ scan_time

- (double) scan_time
private

Definition at line 54 of file WormholeEntity.h.

◆ shipsInTransit

- (NSArray *) shipsInTransit
private

Definition at line 62 of file WormholeEntity.h.

◆ shrink_factor

- (double) shrink_factor
private

Definition at line 65 of file WormholeEntity.h.

◆ travel_time

- (double) travel_time
private

Definition at line 51 of file WormholeEntity.h.

◆ witch_mass

- (double) witch_mass
private

Definition at line 64 of file WormholeEntity.h.


The documentation for this class was generated from the following files: