Beispiel #1
0
 // Start is called before the first frame update
 void Start()
 {
     planet            = gameObject.GetComponent <MotherPlanet>();
     toggledTxtColor   = new Color(1.0f, 1.0f, 1.0f);
     untoggledTxtColor = new Color(0.5f, 0.5f, 0.5f);
     toggledColor      = new Color(0.1f, 0.0f, 0.7f);
     untoggledColor    = new Color(0.2f, 0.2f, 0.5f);
 }
Beispiel #2
0
    public void CollectCraters(MotherPlanet planet)
    {
        List <CraterGenerator.Crater> oldCL = planet.shapeGenerator.craterGenerator.craterList;

        for (int i = 0; i < oldCL.Count; i++)
        {
            craterList.Add(new _crater(oldCL[i].center, oldCL[i].radius,
                                       oldCL[i].floor, oldCL[i].smoothness, oldCL[i].impact, oldCL[i].rimSteepness,
                                       oldCL[i].rimWidth));
        }
    }
Beispiel #3
0
    public _planet(MotherPlanet planet, int id)
    {
        this.id = id;
        ShapeSettings shapeSettings;
        ColorSettings colorSettings;

        craterList = new List <_crater>();
        string[] noisePoints = planet.shapeGenerator.getMaskKeys();
        float[]  noiseValues = planet.shapeGenerator.getMaskValues();
        shapeSettings = planet.shapeGenerator.settings;
        shape         = new _shapeSettings(shapeSettings.radius, shapeSettings.zeroLvlIsOcean,
                                           shapeSettings.noiseLayers, noisePoints, noiseValues);
        colorSettings = planet.colorGenerator.settings;
        color         = new _colorSettings(colorSettings.planetMaterial, colorSettings.biomeColorSettings);
        CollectCraters(planet);
    }
Beispiel #4
0
    void Start()
    {
        planet            = gameObject.GetComponent <MotherPlanet>();
        timeToGo          = Time.fixedTime + 0.1f;
        craterPlacement   = false;
        paintAudioPlaying = false;
        GameObject paGO = GameObject.Find("PaintPlanetAudio");

        if (paGO == null)
        {
            addSound();
        }
        else
        {
            paSource = paGO.GetComponent <AudioSource>();
        }
    }
    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;
            }
        }
    }
Beispiel #6
0
 public PlanetData(MotherPlanet planet)
 {
     planetData = new _planet(planet, 1);
 }
Beispiel #7
0
    void Update()
    {
        paintAudioPlaying = false;
        if (Input.GetKeyUp(KeyCode.LeftControl) || Input.GetKeyUp(KeyCode.C))
        {
            craterPlacement ^= true;
        }
        if (!colorsSet)
        {
            if (craterBtn != null)
            {
                if (craterPlacement)
                {
                    craterBtn.GetComponent <Image>().color = toggledColor;
                }
                else
                {
                    craterBtn.GetComponent <Image>().color = untoggledColor;
                }
            }
            if (mountainBtn != null && flattenBtn != null)
            {
                if (!craterPlacement)
                {
                    if (noiseType == 0)
                    {
                        mountainBtn.GetComponent <Image>().color = toggledColor;
                        flattenBtn.GetComponent <Image>().color  = untoggledColor;
                    }
                    else
                    {
                        mountainBtn.GetComponent <Image>().color = untoggledColor;
                        flattenBtn.GetComponent <Image>().color  = toggledColor;
                    }
                }
                else
                {
                    mountainBtn.GetComponent <Image>().color = untoggledColor;
                    flattenBtn.GetComponent <Image>().color  = untoggledColor;
                }
            }

            colorsSet = true;
        }
        // only do stuff if mouse is down
        if (Input.GetMouseButton(0) && Input.touchCount < 2)
        {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                selection = hit.transform;
                // add cases for your tag and do stuff
                switch (selection.gameObject.tag)
                {
                case "Planet": {
                    MotherPlanet planet = selection.gameObject.GetComponent <MotherPlanet>();
                    canPaint = (GameObject.Find("2ModifyMeshPlanetColorScreen") != null);
                    if (canPaint)
                    {
                        // Play audio
                        if (!paSource.isPlaying)
                        {
                            paSource.Play(0);
                        }
                        // place crater
                        if (craterPlacement)
                        {
                            planet.shapeGenerator.craterGenerator.PlaceCrater(selection.InverseTransformPoint(hit.point));
                        }
                        // place noise
                        else
                        {
                            interactionPoint = selection.InverseTransformPoint(hit.point);
                            planet.shapeGenerator.craterGenerator.checkIfCrater(interactionPoint / planet.shapeGenerator.settings.radius);
                        }
                        // update mesh
                        selection.gameObject.GetComponent <MotherPlanet>().UpdateMesh();
                        paintAudioPlaying = true;
                    }
                    break;
                }

                case "GasPlanet": {
                    // Do something
                    Debug.Log("GasPlanet");
                    break;
                }
                }
            }
        }
        if (!paintAudioPlaying)
        {
            paSource.Pause();
        }
    }
Beispiel #8
0
 private void OnEnable(){
     planet = (MotherPlanet) target;
 }
Beispiel #9
0
 // Start is called before the first frame update
 void Start()
 {
     planet = gameObject.GetComponent <MotherPlanet>();
 }
Beispiel #10
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;
        }
    }