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; } } }
// 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(); }); }
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; }
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; }
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; } } }
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; } }