Пример #1
0
    public void CollectData()
    {
        //increase starting i if adding to existing system?
        int rockyAdded = 0;
        int gasyAdded  = 0;
        int count      = 0;

        for (int i = 0; i < CelestialObject.Objects.Count; i++)
        {
            CelestialObject co = CelestialObject.Objects[i];
            if (!co.staticBody)
            {
                physicsData[count] = new _celestialObject(co, count);
                IcoPlanet ip = co.GetComponentInChildren <IcoPlanet>();
                if (ip != null)
                {
                    planetList[rockyAdded] = new _planet(ip, count);
                    rockyAdded            += 1;
                }
                GasPlanetShaderMAterialPropertyBlock gp = co.GetComponentInChildren <GasPlanetShaderMAterialPropertyBlock>();
                if (gp != null)
                {
                    gasPlanetList[gasyAdded] = new _gasPlanet(gp, count);
                    gasyAdded += 1;
                }
                count += 1;
            }
        }
    }
Пример #2
0
 // Start is called before the first frame update
 void Start()
 {
     matBlock = GameObject.FindGameObjectWithTag("GasPlanet").GetComponent <GasPlanetShaderMAterialPropertyBlock>();
     StormPlacement.onValueChanged.AddListener(delegate { matBlock.ChangeStormPlacement(StormPlacement.value); });
     StormSpeed.onValueChanged.AddListener(delegate { matBlock.ChangeStormSpeed(StormSpeed.value); });
     StormSize.onValueChanged.AddListener(delegate { matBlock.ChangeStormSize(StormSize.value); });
     BandScale1.onValueChanged.AddListener(delegate { matBlock.ChangeBandScale1(BandScale1.value); });
     BandScale2.onValueChanged.AddListener(delegate { matBlock.ChangeBandScale2(BandScale2.value); });
     Reseed.onClick.AddListener(delegate { matBlock.ReSeed(); });
 }
Пример #3
0
    public _gasSettings(GasPlanetShaderMAterialPropertyBlock GasPlanetLook)
    {
        BandColorStorm = GasPlanetLook.BandColorStorm;
        StormSize      = GasPlanetLook.StormSize;
        StormSpeed     = GasPlanetLook.StormSpeed;
        StormStrength  = GasPlanetLook.StormStrength;
        StormPlacement = GasPlanetLook.StormPlacement;

        BandScale1 = GasPlanetLook.BandScale1;
        BandXSeed1 = GasPlanetLook.BandXSeed1;
        BandYSeed1 = GasPlanetLook.BandYSeed1;
        BandColor1 = GasPlanetLook.BandColor1;

        BandScale2 = GasPlanetLook.BandScale2;
        BandXSeed2 = GasPlanetLook.BandXSeed2;
        BandYSeed2 = GasPlanetLook.BandYSeed2;
        BandColor2 = GasPlanetLook.BandColor2;

        BandColor3 = GasPlanetLook.BandColor3;
    }
Пример #4
0
    public _gasPlanet(GasPlanetShaderMAterialPropertyBlock gasPlanet, int id)
    {
        this.id = id;

        BandColorStorm = gasPlanet.BandColorStorm;
        StormSize      = gasPlanet.StormSize;
        StormSpeed     = gasPlanet.StormSpeed;
        StormStrength  = gasPlanet.StormStrength;
        StormPlacement = gasPlanet.StormPlacement;

        BandScale1 = gasPlanet.BandScale1;
        BandXSeed1 = gasPlanet.BandXSeed1;
        BandYSeed1 = gasPlanet.BandYSeed1;
        BandColor1 = gasPlanet.BandColor1;

        BandScale2 = gasPlanet.BandScale2;
        BandXSeed2 = gasPlanet.BandXSeed2;
        BandYSeed2 = gasPlanet.BandYSeed2;
        BandColor2 = gasPlanet.BandColor2;

        BandColor3 = gasPlanet.BandColor3;

        planetScale = gasPlanet.gameObject.transform.localScale.x;
    }
Пример #5
0
    void Update()
    {
        if (save)
        {
            if (sceneIndex == 2)
            {
                //Save one planet to newPlanet.data
                SaveLoadStarSystem.SaveStarSystem(true, "/newPlanet.data");
                save = false;
            }
            else if (sceneIndex == 1)
            {
                //Save the entire system to system.data
                if (saveSpecific)
                {
                    SaveLoadStarSystem.SaveSpecificStarSystem(false, systemName + ".data");
                    saveSpecific = false;
                }
                else
                {
                    SaveLoadStarSystem.SaveStarSystem(false, "/system.data");
                    if (!firstGenSystemSaved)
                    {
                        firstGenSystemSaved = true;
                    }
                }
                save = false;
            }
        }
        if (load)
        {
            if (sceneIndex == 1)
            {
                //Load the entire system from system.data
                SystemSimulationData data;
                if (loadSpecific)
                {
                    data         = SaveLoadStarSystem.LoadSavedStarSystem(systemName);
                    loadSpecific = false;
                }
                else
                {
                    if (firstGenSystemSaved)
                    {
                        data = SaveLoadStarSystem.LoadStarSystem(false);
                    }
                    else
                    {
                        data = null;
                    }
                    load = false;
                }
                if (data != null)
                {
                    //CelestialObject.DestroyAll();

                    var planets = FindObjectsOfType <CelestialObject>();
                    foreach (CelestialObject co in planets)
                    {
                        if (!co.staticBody)
                        {
                            Destroy(co.gameObject);
                        }
                    }

                    int        rocky_i = 0;
                    int        gasy_i  = 0;
                    GameObject parent  = GameObject.Find("SceneObjects");
                    for (int i = 0; i < data.planetCount; i++)
                    {
                        GameObject obj = getPrefab(data, i);


                        MotherPlanet mp = obj.GetComponentInChildren <MotherPlanet>();
                        if (mp != null)
                        {
                            mp.GeneratePlanet();
                            mp.SetShape(data.planetList[rocky_i]);
                            mp.UpdateMesh();
                            rocky_i += 1;
                        }
                        //GasPlanetShaderMAterialPropertyBlock gp = co.GetComponentInChildren<GasPlanetShaderMAterialPropertyBlock>();
                        GasPlanetShaderMAterialPropertyBlock gp = obj.GetComponent <GasPlanetShaderMAterialPropertyBlock>();
                        if (gp != null)
                        {
                            gp.SetMaterial(data.gasPlanetList[gasy_i]);
                            gasy_i += 1;
                        }
                        //obj.GetComponent<SphereCollider>().enabled=false;

                        obj.GetComponent <CelestialObject>().enabled = true;

                        CelestialObject co = obj.GetComponent <CelestialObject>();
                        //print("position");
                        //print(data.physicsData[i].position);
                        //print("----------");
                        co.SetState(data.physicsData[i]);
                        obj.transform.SetParent(parent.transform);
                    }
                    load = false;
                }
                else
                {
                    load = false;
                    Debug.Log("failed to load entire system");
                }
            }
        }
        if (loadNewPlanet)
        {
            if (sceneIndex == 1)
            {
                loadNewPlanet = false;
                //Load one planet from newPlanet data and p
                SystemSimulationData data = SaveLoadStarSystem.LoadStarSystem(true);
                if (data != null)
                {
                    //CelestialObject.DestroyAll();
                    int rocky_i = 0;
                    int gasy_i  = 0;
                    for (int i = 0; i < data.planetCount; i++)
                    {
                        GameObject      obj = getPrefab(data, i);
                        CelestialObject co  = GetComponent <CelestialObject>();
                        if (co != null)
                        {
                            obj.AddComponent(typeof(CelestialObject));
                        }
                        obj.GetComponent <CelestialObject>().isShot = false;
                        //obj.GetComponent<IcoPlanet>().enabled = true;

                        MotherPlanet mp = obj.GetComponentInChildren <MotherPlanet>();
                        if (mp != null)
                        {
                            mp.GeneratePlanet();
                            mp.SetShape(data.planetList[rocky_i]);
                            mp.UpdateMesh();
                            mp.GenerateColors();
                            mp.GetComponent <IcoPlanet>().staticBody = false;
                            mp.GetComponent <IcoPlanet>().enabled    = true;

                            rocky_i += 1;
                        }
                        GasPlanetShaderMAterialPropertyBlock gp = obj.GetComponentInChildren <GasPlanetShaderMAterialPropertyBlock>();
                        if (gp != null)
                        {
                            gp.SetMaterial(data.gasPlanetList[gasy_i]);
                            gp.GetComponent <GasPlanetShaderMAterialPropertyBlock>().enabled = true;
                            gasy_i += 1;
                        }
                        string newPlanetName = PlayerPrefs.GetString("NewPlanetName", "Unknown Planet");
                        obj.GetComponent <CelestialObject>().SetName(newPlanetName);
                        PlayerPrefs.SetString("NewPlanetName", "Unknown Planet");
                        if (!obj.GetComponent <CelestialObject>().isAsteroid)
                        {
                            obj.GetComponent <CelestialObject>().SetMass();
                        }
                        GameObject            ARSessOrig = GameObject.Find("AR Session Origin");
                        ARPlacementTrajectory placement  = ARSessOrig.GetComponent <ARPlacementTrajectory>();
                        placement.setGOtoInstantiate(obj);
                    }
                }
            }
        }
        if (delete)
        {
            if (sceneIndex == 1)
            {
                SaveLoadStarSystem.DeleteStarSystem(delSystemName);
                delete = false;
            }
        }
    }
Пример #6
0
    void OnEnable()
    {
        if (gameObject.GetComponent <MeshFilter>() == null)
        {
            gameObject.AddComponent <MeshFilter>();
            meshRenderer = gameObject.AddComponent <MeshRenderer>();
            col          = gameObject.AddComponent <PolygonCollider2D>();
        }
        else
        {
            //gameObject.AddComponent<MeshFilter>();
            meshRenderer = gameObject.GetComponent <MeshRenderer>();
            col          = gameObject.GetComponent <PolygonCollider2D>();
        }

        if (GameObject.FindGameObjectWithTag("Planet"))
        {
            planet = FindObjectsOfType <MotherPlanet>()[0];

            buttonGroup.SetActive(true);
            buttonGroupGAS.SetActive(false);
            foreach (Button child in buttonGroup.GetComponentsInChildren <Button>(true))
            {
                child.gameObject.SetActive(true);
                biomeButtons.Add(child);
                child.onClick.AddListener(() => biomeButtonClick(biomeButtons.IndexOf(child)));
            }
        }
        else if (GameObject.FindGameObjectWithTag("GasPlanet"))
        {
            gasPlanet = FindObjectsOfType <GasPlanetShaderMAterialPropertyBlock>()[0];
            buttonGroup.SetActive(false);
            buttonGroupGAS.SetActive(true);
            foreach (Button child in buttonGroupGAS.GetComponentsInChildren <Button>(true))
            {
                child.gameObject.SetActive(true);
                bandButtons.Add(child);
                child.onClick.AddListener(() => bandButtonClick(bandButtons.IndexOf(child)));
            }
        }


        GetComponentInChildren <Slider>().onValueChanged.AddListener(intensityOnChange);
        //GetComponent<MotherPlanet>();

        meshRenderer.material = material;
        mesh = new Mesh();
        GetComponent <MeshFilter>().mesh = mesh;

        vertices = new Vector3[] {
            new Vector3(0, 0, 0),
            new Vector3(0.5f, 0.866025404f, 0) * size,
            new Vector3(1, 0, 0) * size
        };

        triangles = new[] { 0, 1, 2 };

        mesh.vertices  = vertices;
        mesh.triangles = triangles;
        mesh.RecalculateNormals();
        Vector2[] uvs = new [] { new Vector2(0, 0), new Vector2(1, 0.5f), new Vector2(0, 1) };
        mesh.uv = uvs;

        // set handle sprite
        handle = this.transform.GetChild(0).gameObject;

        handle.transform.localPosition = new Vector3(2, 1, handle.transform.localPosition.z);
        handleInitZ = handle.transform.localPosition.z;
        for (int i = 0; i < 4; i++)
        {
            bandPos[i] = handle.transform.localPosition;
        }

        // create shape of collider
        colPoints = new Vector2[3];
        for (int i = 0; i < 3; i++)
        {
            colPoints[i] = new Vector2(vertices[i].x, vertices[i].y);
        }
        col.pathCount = 1;
        col.SetPath(0, colPoints);
        for (int i = 0; i < 3; i++)
        {
            vertices[i] = mesh.vertices[i] / size;
        }
        //get initialweights
        Vector3 initWeights = BaryCentric.getWeights(handle.transform.localPosition / size, vertices);

        for (int i = 0; i < 4; i++)
        {
            bandWeights[i]   = initWeights;
            bandIntensity[i] = intensityLevel;
        }
    }