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));
                }
            }
        }
Beispiel #2
0
    // 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);
    }
Beispiel #3
0
    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;
    }
Beispiel #4
0
 public void Setup(GameCore parentGameCore)
 {
     gameCore = parentGameCore;
     DestinationGalaxyMapNode = gameCore.GalaxyMapVisual.FindDestinationNodeForWarpGate(this);
 }