// Runtime constructor public LandClassLoader(PQSLandControl.LandClass landClass) { this.landClass = landClass; altitudeRange = new LerpRangeLoader(landClass.altitudeRange); latitudeDoubleRange = new LerpRangeLoader(landClass.latitudeDoubleRange); latitudeRange = new LerpRangeLoader(landClass.latitudeRange); longitudeRange = new LerpRangeLoader(landClass.longitudeRange); coverageSimplex = new SimplexLoader(landClass.coverageSimplex); noiseSimplex = new SimplexLoader(landClass.noiseSimplex); }
/// <summary> /// Changes the parameters of the PQSMod /// </summary> public override Boolean Tweak(CelestialBody body, PQSLandControl mod) { // Get the game seed and apply it mod.altitudeSeed = GetRandom(HighLogic.CurrentGame.Seed); mod.latitudeSeed = GetRandom(HighLogic.CurrentGame.Seed); mod.longitudeSeed = GetRandom(HighLogic.CurrentGame.Seed); if (mod.altitudeSimplex != null) { mod.altitudeSimplex.seed = GetRandom(HighLogic.CurrentGame.Seed); } if (mod.latitudeSimplex != null) { mod.latitudeSimplex.seed = GetRandom(HighLogic.CurrentGame.Seed); } if (mod.longitudeSimplex != null) { mod.longitudeSimplex.seed = GetRandom(HighLogic.CurrentGame.Seed); } // Apply it to land classes if (mod.landClasses != null) { for (Int32 i = 0; i < mod.landClasses.Length; i++) { PQSLandControl.LandClass landClass = mod.landClasses[i]; landClass.coverageSeed = GetRandom(HighLogic.CurrentGame.Seed); landClass.noiseSeed = GetRandom(HighLogic.CurrentGame.Seed); if (landClass.coverageSimplex != null) { landClass.coverageSimplex.seed = GetRandom(HighLogic.CurrentGame.Seed); } if (landClass.noiseSimplex != null) { landClass.noiseSimplex.seed = GetRandom(HighLogic.CurrentGame.Seed); } } } // Apply it to scatters if (mod.scatters != null) { for (Int32 i = 0; i < mod.scatters.Length; i++) { mod.scatters[i].seed = GetRandom(HighLogic.CurrentGame.Seed); } } // We changed something return(true); }
// Default constructor public LandClassLoader() { landClass = new PQSLandControl.LandClass(); LerpRangeLoader range; // Initialize default parameters landClass.altDelta = 1; landClass.color = new Color(0, 0, 0, 0); landClass.coverageFrequency = 1; landClass.coverageOctaves = 1; landClass.coveragePersistance = 1; landClass.coverageSeed = 1; landClass.landClassName = "Base"; landClass.latDelta = 1; landClass.lonDelta = 1; landClass.noiseColor = new Color(0, 0, 0, 0); landClass.noiseFrequency = 1; landClass.noiseOctaves = 1; landClass.noisePersistance = 1; landClass.noiseSeed = 1; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; altitudeRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; latitudeRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; latitudeDoubleRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 2; range.lerpRange.endStart = 2; range.lerpRange.startEnd = -1; range.lerpRange.startStart = -1; longitudeRange = range; }
/// <summary> /// Renders Collection Modifiers /// </summary> protected override void RenderModifiers(Int32 id) { // Index index++; // Add Biomes Button(Localization.LOC_KITTOPIATECH_LANDCLASSWINDOW_ADD, () => { Object landClass_ = null; if (Collection is IEnumerable <PQSMod_VertexPlanet.LandClass> ) { landClass_ = new PQSMod_VertexPlanet.LandClass("LandClass", 0, 0, new Color(), new Color(), 0); (landClass_ as PQSMod_VertexPlanet.LandClass).colorNoiseMap = new PQSMod_VertexPlanet.SimplexWrapper(0, 0, 0, 0); } if (Collection is IEnumerable <PQSMod_HeightColorMap.LandClass> ) { landClass_ = new PQSMod_HeightColorMap.LandClass("LandClass", 0, 0, new Color(), new Color(), 0); } if (Collection is IEnumerable <PQSMod_HeightColorMap2.LandClass> ) { landClass_ = new PQSMod_HeightColorMap2.LandClass("LandClass", 0, 0, new Color(), new Color(), 0); } if (Collection is IEnumerable <PQSMod_HeightColorMapNoise.LandClass> ) { landClass_ = new PQSMod_HeightColorMapNoise.LandClass("LandClass", 0, 0, new Color(), new Color(), 0); } if (Collection is IEnumerable <PQSLandControl.LandClass> ) { PQSLandControl.LandClass landClass = new PQSLandControl.LandClass(); PQSLandControl.LerpRange range; // Initialize default parameters landClass.altDelta = 1; landClass.color = new Color(0, 0, 0, 0); landClass.coverageFrequency = 1; landClass.coverageOctaves = 1; landClass.coveragePersistance = 1; landClass.coverageSeed = 1; landClass.landClassName = "Base"; landClass.latDelta = 1; landClass.lonDelta = 1; landClass.noiseColor = new Color(0, 0, 0, 0); landClass.noiseFrequency = 1; landClass.noiseOctaves = 1; landClass.noisePersistance = 1; landClass.noiseSeed = 1; range = new PQSLandControl.LerpRange(); range.endEnd = 1; range.endStart = 1; range.startEnd = 0; range.startStart = 0; landClass.altitudeRange = range; range = new PQSLandControl.LerpRange(); range.endEnd = 1; range.endStart = 1; range.startEnd = 0; range.startStart = 0; landClass.latitudeRange = range; range = new PQSLandControl.LerpRange(); range.endEnd = 1; range.endStart = 1; range.startEnd = 0; range.startStart = 0; landClass.latitudeDoubleRange = range; range = new PQSLandControl.LerpRange(); range.endEnd = 2; range.endStart = 2; range.startEnd = -1; range.startStart = -1; landClass.longitudeRange = range; landClass_ = landClass; } List <Object> collection = Collection.ToList(); collection.Add(landClass_); Collection = collection; Callback(Collection); }); }
internal void Apply(string body, TerrainMaterial terrainMaterial, OceanMaterial oceanMaterial) { celestialBody = Tools.GetCelestialBody(body); PQS pqs = null; if (celestialBody != null && celestialBody.pqsController != null) { pqs = celestialBody.pqsController; pqsSurfaceMaterial = GetPQSSurfaceMaterial(pqs); } else { pqs = PQSManagerClass.GetPQS(body); } Transform transform = Tools.GetScaledTransform(body); if (pqs != null) { this.sphere = pqs; this.transform.parent = pqs.transform; this.requirements = PQS.ModiferRequirements.Default; this.modEnabled = true; this.order += 10; this.transform.localPosition = Vector3.zero; this.transform.localRotation = Quaternion.identity; this.transform.localScale = Vector3.one; //Scaled space Renderer r = (Renderer)transform.GetComponent(typeof(Renderer)); if (r != null) { terrainMaterial.SaveTextures(r.material); originalPlanetShader = r.material.shader; TerrainManager.Log("planet shader: " + r.material.shader); r.sharedMaterial.shader = TerrainManager.PlanetShader; terrainMaterial.ApplyMaterialProperties(r.sharedMaterial); // terrainMaterial doesn't work anyway [1/3] if (pqs.ChildSpheres.Length != 0) { r.sharedMaterial.EnableKeyword("OCEAN_ON"); } else { r.sharedMaterial.DisableKeyword("OCEAN_ON"); } } // terrainMaterial doesn't work anyway [2/3] //terrainMaterial = null; //originalTerrainShader = null; terrainMaterial.SaveTextures(pqsSurfaceMaterial); originalTerrainShader = pqsSurfaceMaterial.shader; TerrainManager.Log("Terrain Shader Name: " + originalTerrainShader.name); String[] keywords = pqsSurfaceMaterial.shaderKeywords; pqsSurfaceMaterial.shader = TerrainManager.TerrainShader; // foreach (String keyword in keywords) // { // pqs.surfaceMaterial.EnableKeyword(keyword); // } terrainMaterial.ApplyMaterialProperties(pqsSurfaceMaterial); if (oceanMaterial != null && pqs.ChildSpheres.Length > 0) { PQS ocean = pqs.ChildSpheres[0]; OceanSurfaceMaterial = GetPQSSurfaceMaterial(ocean); pqsSurfaceMaterial.EnableKeyword("OCEAN_ON"); r.sharedMaterial.EnableKeyword("OCEAN_ON"); keywords = OceanSurfaceMaterial.shaderKeywords; originalOceanShader = OceanSurfaceMaterial.shader; TerrainManager.Log("Ocean Shader Name: " + originalOceanShader.name); OceanSurfaceMaterial.shader = TerrainManager.OceanShader; // foreach (String keyword in keywords) // { // OceanSurfaceMaterial.EnableKeyword(keyword); // } terrainMaterial.ApplyMaterialProperties(OceanSurfaceMaterial); oceanMaterial.ApplyMaterialProperties(OceanSurfaceMaterial); PQSLandControl landControl = (PQSLandControl)pqs.transform.GetComponentInChildren(typeof(PQSLandControl)); if (landControl != null) { PQSLandControl.LandClass[] landClasses = landControl.landClasses; if (landClasses != null) { PQSLandControl.LandClass lcBeach = landClasses.FirstOrDefault(lc => lc.landClassName == "BaseBeach"); PQSLandControl.LandClass lcOcean = landClasses.FirstOrDefault(lc => lc.landClassName == "Ocean Bottom"); if (lcBeach != null || lcOcean != null) { lcOcean.color = lcBeach.color; } } // PQS ocean = // sphere.ChildSpheres[0]; // GameObject go = new GameObject(); // FakeOceanPQS fakeOcean = go.AddComponent<FakeOceanPQS>(); // fakeOcean.Apply(ocean); } SimpleCube hp = new SimpleCube(2000, ref OceanBackingMaterial, TerrainManager.OceanBackingShader); OceanBacking = hp.GameObject; OceanBacking.transform.parent = FlightCamera.fetch.transform; OceanBacking.transform.localPosition = Vector3.zero; OceanBacking.transform.localScale = Vector3.one; OceanBacking.layer = (int)Tools.Layer.Local; OceanBackingMaterial.SetFloat("_OceanRadius", (float)celestialBody.Radius); terrainMaterial.ApplyMaterialProperties(OceanBackingMaterial); } else { pqsSurfaceMaterial.DisableKeyword("OCEAN_ON"); //r.sharedMaterial.DisableKeyword("OCEAN_ON"); // terrainMaterial doesn't work anyway [3/3] } PQSMod_CelestialBodyTransform cbt = (PQSMod_CelestialBodyTransform)pqs.transform.GetComponentInChildren(typeof(PQSMod_CelestialBodyTransform)); if (cbt != null) { pqsSurfaceMaterial.SetFloat("_MainTexHandoverDist", (float)(1f / cbt.deactivateAltitude)); if (oceanMaterial != null && pqs.ChildSpheres.Length > 0) { PQS ocean = pqs.ChildSpheres[0]; OceanSurfaceMaterial.SetFloat("_MainTexHandoverDist", (float)(1f / cbt.deactivateAltitude)); } pqsSurfaceMaterial.SetFloat("_OceanRadius", (float)celestialBody.Radius); } } this.OnSetup(); pqs.EnableSphere(); }
void LandClassWindowFunc( int windowID ) { int yoffset = 30; scrollposition3 = GUI.BeginScrollView( new Rect( 0, 30, 300, 250 ), scrollposition3,new Rect( 0,0,400,10000)); if( landmodder_mode == 0 ) //PQSLandControl { if( landmodder_state == 0 ) { foreach( PQSLandControl.LandClass lc_Mod in LandclassestoMod) { if(GUI.Button( new Rect( 20, yoffset, 200, 20 ), ""+lc_Mod.landClassName )) { landclasstoMod = lc_Mod; landmodder_state = 1; } yoffset += 30; } } if( landmodder_state == 1 ) { foreach( FieldInfo key in landclasstoMod.GetType().GetFields() ) { try{ System.Object obj = (System.Object)landclasstoMod; if( key.GetValue(obj).GetType() == typeof( string )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) ); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( bool )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, GUI.Toggle( new Rect( 200 , yoffset, 200, 20 ), (bool)key.GetValue(obj), "Bool" )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( int )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, (int)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( float )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( double )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, (double)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( Color )) { GUI.Label( new Rect( 20 , yoffset, 100, 20), ""+key.Name ); if( GUI.Button( new Rect( 150 , yoffset, 50, 20), "Edit" ) ) { Color getColour; getColour = (Color)key.GetValue(obj); rVal = getColour.r; gVal = getColour.g; bVal = getColour.b; aVal = getColour.a; objToEdit = obj; KeyToEdit = key; isshowingColourEditor = true; } //key.SetValue( obj, (double)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } }catch{} } yoffset += 30; } } else { if( landmodder_state == 0 ) { foreach( PQSMod_VertexPlanet.LandClass lc_Mod in VertexLandclassestoMod) { if(GUI.Button( new Rect( 20, yoffset, 200, 20 ), ""+lc_Mod.name )) { VertexLandclasstoMod = lc_Mod; landmodder_state = 1; } yoffset += 30; } } if( landmodder_state == 1 ) { foreach( FieldInfo key in VertexLandclasstoMod.GetType().GetFields() ) { try{ System.Object obj = (System.Object)VertexLandclasstoMod; if( key.GetValue(obj).GetType() == typeof( string )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) ); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( bool )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, GUI.Toggle( new Rect( 200 , yoffset, 200, 20 ), (bool)key.GetValue(obj), "Bool" )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( int )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, (int)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( float )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( double )) { GUI.Label( new Rect( 20 , yoffset, 200, 20), ""+key.Name ); key.SetValue( obj, (double)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } else if( key.GetValue(obj).GetType() == typeof( Color )) { GUI.Label( new Rect( 20 , yoffset, 100, 20), ""+key.Name ); if( GUI.Button( new Rect( 150 , yoffset, 50, 20), "Edit" ) ) { Color getColour; getColour = (Color)key.GetValue(obj); rVal = getColour.r; gVal = getColour.g; bVal = getColour.b; aVal = getColour.a; objToEdit = obj; KeyToEdit = key; isshowingColourEditor = true; } //key.SetValue( obj, (double)StrToFloat( GUI.TextField( new Rect( 200 , yoffset, 200, 20), ""+key.GetValue(obj) ) )); yoffset += 30; } }catch{} } yoffset += 30; } } yoffset += 30; if( GUI.Button( new Rect( 20, yoffset, 200, 20 ), "Exit" ) ) { showLandClassmenu = false; landmodder_state = 0; } GUI.EndScrollView(); GUI.DragWindow(); }
public LandClassLoader(PQSLandControl.LandClass landClass) { this.landClass = landClass; }
public LandClassLoader() { landClass = new PQSLandControl.LandClass(); LerpRangeLoader range; // Initialize default parameters landClass.altDelta = 1; landClass.color = new Color(0, 0, 0, 0); landClass.coverageFrequency = 1; landClass.coverageOctaves = 1; landClass.coveragePersistance = 1; landClass.coverageSeed = 1; landClass.landClassName = "Base"; landClass.latDelta = 1; landClass.lonDelta = 1; landClass.noiseColor = new Color(0, 0, 0, 0); landClass.noiseFrequency = 1; landClass.noiseOctaves = 1; landClass.noisePersistance = 1; landClass.noiseSeed = 1; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; altitudeRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; latitudeRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 1; range.lerpRange.endStart = 1; range.lerpRange.startEnd = 0; range.lerpRange.startStart = 0; latitudeDoubleRange = range; range = new LerpRangeLoader(); range.lerpRange.endEnd = 2; range.lerpRange.endStart = 2; range.lerpRange.startEnd = -1; range.lerpRange.startStart = -1; longitudeRange = range; }