public void GenerateGWIData() { WarpGatesParent = GameObject.FindGameObjectWithTag("WarpGates"); LBodiesParent = GameObject.FindGameObjectWithTag("LargeBodies"); if (WarpGatesParent != null) { foreach (Transform warpGate in WarpGatesParent.transform) { Vector3 noiseOffset = Random.insideUnitCircle * gameCore.GWIInterferenceScale; Vector3 positionDiff = (warpGate.transform.position + noiseOffset) - transform.position; //float angle = Mathf.Atan2(positionDiff.y, positionDiff.x); float angle = Vector3.SignedAngle(Vector3.right, positionDiff, Vector3.forward); float waveAmplitude = ShipSensors.GConstant / positionDiff.magnitude; WarpGate gate = warpGate.GetComponent <WarpGate>(); GalaxyMapNode destinationNode = galaxyMap.FindDestinationNodeForWarpGate(gate); string destinationNodeName = "Unknown"; if (destinationNode != null) { destinationNodeName = destinationNode.name; } GWInterferometer.Add(new GWI_Detection(angle, waveAmplitude, GravitySignature.WarpGate, destinationNodeName)); } } if (LBodiesParent != null) { foreach (Transform largeBody in LBodiesParent.transform) { Vector3 noiseOffset = Random.insideUnitCircle * gameCore.GWIInterferenceScale; Vector3 positionDiff = (largeBody.transform.position + noiseOffset) - transform.position; //float angle = Mathf.Atan2(positionDiff.y, positionDiff.x); float angle = Vector3.SignedAngle(Vector3.right, positionDiff, Vector3.forward); float waveAmplitude = ShipSensors.GConstant / positionDiff.magnitude; GravitySignature signature = largeBody.GetComponent <SpaceObject>().gravitySignature; GWInterferometer.Add(new GWI_Detection(angle, waveAmplitude, signature)); } } }
// Use this for initialization IEnumerator Start() { switch (simulationMode) { case SimulationMode.A: yield return(LoadGalaxyMapRoutine("GalaxyMapA")); break; case SimulationMode.B: yield return(LoadGalaxyMapRoutine("GalaxyMapB")); break; case SimulationMode.C: yield return(LoadGalaxyMapRoutine("GalaxyMapC")); break; } GalaxyMapNode defaultNode = GalaxyMapVisual.GetDefaultNode(); if (defaultNode == null) { defaultNode = FindObjectOfType <GalaxyMapNode>(); } yield return(LoadSolarSystemSceneRoutine(defaultNode.name)); ship = Instantiate(shipPrefab, transform).GetComponent <Ship>(); ship.Setup(this); StartingLocation startingLocation = FindObjectOfType <StartingLocation>(); externalCamera = Instantiate(externalCameraPrefab, transform).GetComponent <ExternalCamera>(); externalCamera.Setup(ship.transform); DynamicObjectsRoot = new GameObject("DynamicObjectsRoots").transform; DynamicObjectsRoot.SetParent(transform); }
IEnumerator SolarSystemSwapRoutine(string destinationGalaxyMapNodeName) { string startingSolarSystemName = currentSolarSystemName; yield return(UnloadCurrentSolarSystemSceneRoutine()); yield return(LoadSolarSystemSceneRoutine(destinationGalaxyMapNodeName)); currentSolarSystemName = destinationGalaxyMapNodeName; //Move ship on top of arrival gate ship.GetComponent <Rigidbody2D>().velocity = Vector2.zero; ship.GetComponent <Rigidbody2D>().angularVelocity = 0f; foreach (var gate in FindObjectsOfType <WarpGate>()) { GalaxyMapNode sourceNode = GalaxyMapVisual.FindDestinationNodeForWarpGate(gate); if (sourceNode != null && sourceNode.name == startingSolarSystemName) { ship.transform.position = gate.transform.position + Vector3.right * 10f; } } isTransitioningScenes = false; }
public void Setup(GameCore parentGameCore) { gameCore = parentGameCore; DestinationGalaxyMapNode = gameCore.GalaxyMapVisual.FindDestinationNodeForWarpGate(this); }