public void CacheAll() { for (int i = 0; i < groupInstances.Count; i++) { InstanceUtil.SetActiveRecursively(groupInstances[i], false); } }
public void Deactivate() { for (int i = 0; i < groupInstances.Length; i++) { InstanceUtil.SetActiveRecursively(groupInstances[i], false); } }
internal void CopyGroup(GroupCenter sourceGroup) { foreach (StaticInstance sourceInstance in sourceGroup.childInstances) { StaticInstance instance = new StaticInstance(); instance.gameObject = UnityEngine.Object.Instantiate(sourceInstance.model.prefab); instance.RelativePosition = sourceInstance.RelativePosition; instance.Orientation = sourceInstance.Orientation; instance.CelestialBody = CelestialBody; instance.Group = Group; instance.groupCenter = this; instance.model = sourceInstance.model; if (!Directory.Exists(KSPUtil.ApplicationRootPath + "GameData/" + KerbalKonstructs.newInstancePath)) { Directory.CreateDirectory(KSPUtil.ApplicationRootPath + "GameData/" + KerbalKonstructs.newInstancePath); } instance.configPath = KerbalKonstructs.newInstancePath + "/" + sourceInstance.model.name + "-instances.cfg"; instance.configUrl = null; instance.SpawnObject(); InstanceUtil.SetActiveRecursively(instance, true); } }
void OnMouseEnter() { if (HighLogic.LoadedScene == GameScenes.SPACECENTER) { try { if (this.gameObject == null) { Destroy(this); } if (staticInstance == null) { staticInstance = InstanceUtil.GetStaticInstanceForGameObject(this.gameObject); } if (staticInstance == null) { Log.UserInfo("Cound not determin instance for mouse selector"); Destroy(this); } if (staticInstance.launchSite.isOpen) { staticInstance.HighlightObject(new Color(0.4f, 0.9f, 0.4f, 0.5f)); } else { staticInstance.HighlightObject(new Color(0.9f, 0.4f, 0.4f, 0.5f)); } } catch { Destroy(this); } } }
/// <summary> /// toggles the visiblility for all Instances at once /// </summary> /// <param name="bActive"></param> internal static void ToggleActiveAllStatics(bool bActive = true) { Log.Debug("StaticDatabase.ToggleActiveAllStatics"); foreach (StaticInstance obj in allStaticInstances) { InstanceUtil.SetActiveRecursively(obj, bActive); } }
/// <summary> /// Returns the Color for the Instance Position /// </summary> /// <param name="instance"></param> /// <returns></returns> public Color GetCameraColor(StaticInstance instance) { SetupCameraForVessel(instance); // Move the current object out of the cams view InstanceUtil.SetLayerRecursively(instance, 0); grasCamera.targetTexture = cameraRenderTexture; grasCamera.enabled = true; //Light light = grasCamera.gameObject.AddOrGetComponent<Light>(); //light.type = LightType.Point; //light.intensity = 1; //light.color = Color.white; //light.enabled = true; grasCamera.Render(); //light.enabled = false; Ray myRay = new Ray(cameraObject.transform.position, instance.CelestialBody.transform.position); RaycastHit castHit = new RaycastHit(); if (!Physics.Raycast(myRay, out castHit, float.PositiveInfinity, 1 << 15)) { Log.Normal("NO raycast hit"); } else { Renderer rend = castHit.transform.GetComponent <Renderer>(); if (rend != null) { if (rend.materials.Length != 0) { foreach (string name in rend.material.GetTexturePropertyNames()) { Texture2D lowTex = (Texture2D)rend.material.GetTexture("_lowTex"); } } else { Log.Normal("No Raycast material found"); } } else { Log.Normal("No renderer found"); } } // bring it back to the normal scenery InstanceUtil.SetLayerRecursively(instance, 15); Color newColor = GrassColorUtils.AverageColor(cameraRenderTexture.ToTexture2D().GetPixels()); newColor.a = 1; return(newColor); }
/// <summary> /// Spawns a new Instance in the Gameworld and registers itself to the Static Database /// </summary> /// <param name="editing"></param> /// <param name="bPreview"></param> internal void Orientate() { // mangle Squads statics CelestialBody.CBUpdate(); InstanceUtil.CreateGroupCenterIfMissing(this); if (!StaticDatabase.HasGroupCenter(groupCenterName)) { Log.UserWarning("cannot load " + configPath); return; } groupCenter = StaticDatabase.GetGroupCenter(groupCenterName); if (RelativePosition.Equals(Vector3.zero)) { Log.Normal("LegacySpawnInstance called for " + groupCenterName + "_" + model.name); LegacySpawnInstance(); gameObject.transform.parent = groupCenter.gameObject.transform; RelativePosition = gameObject.transform.localPosition; Orientation = gameObject.transform.localEulerAngles; } else { gameObject.transform.position = groupCenter.gameObject.transform.position + RelativePosition;; gameObject.transform.parent = groupCenter.gameObject.transform; gameObject.transform.localEulerAngles = Orientation; gameObject.transform.localPosition = RelativePosition; } RefLatitude = (float)CelestialBody.GetLatitudeAndLongitude(gameObject.transform.position).x; RefLongitude = (float)(CelestialBody.GetLatitudeAndLongitude(gameObject.transform.position).y); RadialPosition = radialPosition; StaticDatabase.AddStatic(this); // Add them to the bodys objectlist, so they show up as anomalies // After we got a new Name from StaticDatabase.AddStatic() if (isScanable) { var pqsObjectList = CelestialBody.pqsSurfaceObjects.ToList(); if (!pqsObjectList.Contains((PQSSurfaceObject)groupCenter.pqsCity)) { Log.Normal("Added " + groupCenter.Group + " to scanable Objects"); pqsObjectList.Add(groupCenter.pqsCity as PQSSurfaceObject); } CelestialBody.pqsSurfaceObjects = pqsObjectList.ToArray(); } }
public Texture2D GetCameraTexture(StaticInstance instance) { Texture2D MidTex2 = null; SetupCameraForVessel(instance); Ray myRay = new Ray(cameraObject.transform.position, instance.CelestialBody.transform.position); RaycastHit castHit = new RaycastHit(); if (!Physics.Raycast(myRay, out castHit, float.PositiveInfinity, 1 << 15)) { Log.Normal("NO raycast hit"); } else { Renderer rend = castHit.transform.GetComponent <Renderer>(); if (rend != null) { if (rend.materials.Length != 0) { Texture midTex = rend.material.GetTexture("_lowTex"); if (midTex != null) { MidTex2 = midTex.ToTexture2D(64); //rend.material.GetTexture("_midTex").ToTexture2D().WritePNG("Test/MidTex"); //rend.material.GetTexture("_highTex").ToTexture2D().WritePNG("Test/HighTex"); } else { Log.Normal("No LowTex found"); } } else { Log.Normal("No Raycast material found"); } } else { Log.Normal("No renderer found"); } } InstanceUtil.SetLayerRecursively(instance, 15); return(MidTex2); }
/// <summary> /// toggles the visiblility of all statics in a group /// </summary> /// <param name="sGroup"></param> /// <param name="bActive"></param> /// <param name="bOpposite"></param> internal static void ToggleActiveStaticsInGroup(string sGroup, bool bActive = true, bool bOpposite = false) { Log.Debug("StaticDatabase.ToggleActiveStaticsInGroup"); foreach (StaticInstance instance in allStaticInstances) { if (instance.Group == sGroup) { InstanceUtil.SetActiveRecursively(instance, bActive); } else if (bOpposite) { InstanceUtil.SetActiveRecursively(instance, !bActive); } } }
/// <summary> /// toggles the visiblility of all statics on a planet /// </summary> /// <param name="cBody"></param> /// <param name="bActive"></param> /// <param name="bOpposite"></param> internal static void ToggleActiveStaticsOnPlanet(CelestialBody cBody, bool bActive = true, bool bOpposite = false) { Log.Debug("StaticDatabase.ToggleActiveStaticsOnPlanet " + cBody.bodyName); foreach (StaticInstance instance in allStaticInstances) { if (instance.CelestialBody == cBody) { InstanceUtil.SetActiveRecursively(instance, bActive); } else if (bOpposite) { InstanceUtil.SetActiveRecursively(instance, !bActive); } } }
internal override KKFacility ParseConfig(ConfigNode node) { LaunchSite launchSite = base.ParseConfig(node) as LaunchSite; launchSite.lsGameObject = launchSite.gameObject; // this is might be slow launchSite.parentInstance = InstanceUtil.GetStaticInstanceForGameObject(lsGameObject); launchSite.body = parentInstance.CelestialBody; if (!string.IsNullOrEmpty(LaunchSiteLogo)) { logo = GameDatabase.Instance.GetTexture(LaunchSiteLogo, false); if (logo == null) { logo = GameDatabase.Instance.GetTexture(launchSite.parentInstance.model.path + "/" + launchSite.LaunchSiteLogo, false); } } // use default logo if (logo == null) { logo = GameDatabase.Instance.GetTexture("KerbalKonstructs/Assets/DefaultSiteLogo", false); } if (!string.IsNullOrEmpty(LaunchSiteIcon)) { icon = GameDatabase.Instance.GetTexture(LaunchSiteIcon, false); if (icon == null) { icon = GameDatabase.Instance.GetTexture(launchSite.parentInstance.model.path + "/" + launchSite.LaunchSiteIcon, false); } } refLon = (float)Math.Round(KKMath.GetLongitudeInDeg(launchSite.parentInstance.RadialPosition), 2); refLat = (float)Math.Round(KKMath.GetLatitudeInDeg(launchSite.parentInstance.RadialPosition), 2); refAlt = launchSite.parentInstance.RadiusOffset; return(launchSite); }
internal void Initialize() { staticInstance = facility.staticInstance; if (this.gameObject == null) { Destroy(this); } if (staticInstance == null) { staticInstance = InstanceUtil.GetStaticInstanceForGameObject(this.gameObject); } if (staticInstance == null) { Log.UserInfo("Cound not determin instance for mouse selector"); Destroy(this); } facType = facility.facType; initialized = true; }
/// <summary> /// gets called every second, when in flight by KerbalKonsructs.updateCache (InvokeRepeating) and through StaticDatabase.UpdateCache /// </summary> /// <param name="playerPos"></param> public void ActivateGroupMembers() { if (isActive) { return; } isActive = true; Log.Normal("Activate calles for group: " + name); foreach (StaticInstance instance in groupInstances) { string sFacType = instance.FacilityType; if (sFacType == "Hangar") { HangarGUI.CacheHangaredCraft(instance); } if (sFacType == "LandingGuide") { LandingGuideUI.instance.drawLandingGuide(instance); } if (sFacType == "TouchdownGuideL") { LandingGuideUI.instance.drawTouchDownGuideL(instance); } if (sFacType == "TouchdownGuideR") { LandingGuideUI.instance.drawTouchDownGuideR(instance); } InstanceUtil.SetActiveRecursively(instance, true); } groupCenter.gameObject.SetActive(true); }
/// <summary> /// Deactivates the Statics of an Group /// </summary> public void DeactivateGroupMembers() { if (!isActive) { return; } Log.Normal("Deactivate calles for group: " + name); isActive = false; foreach (StaticInstance instance in groupInstances) { string sFacType = instance.FacilityType; if (sFacType == "Hangar") { HangarGUI.CacheHangaredCraft(instance); } if (sFacType == "LandingGuide") { LandingGuideUI.instance.drawLandingGuide(null); } if (sFacType == "TouchdownGuideL") { LandingGuideUI.instance.drawTouchDownGuideL(null); } if (sFacType == "TouchdownGuideR") { LandingGuideUI.instance.drawTouchDownGuideR(null); } InstanceUtil.SetActiveRecursively(instance, false); } }
// Returns the StaticObject of a site. Can provide a sitename or a GameObject public static StaticInstance getSiteStaticObject(string siteName, GameObject go = null) { StaticInstance soSite = null; if (go != null) { soSite = InstanceUtil.GetStaticInstanceForGameObject(go); if (soSite == null) { return(null); } return(soSite); } string sName = ""; object oName = null; foreach (StaticInstance instance in StaticDatabase.allStaticInstances.Where(inst => inst.hasLauchSites == true)) { oName = instance.launchSite.LaunchSiteName; if (oName == null) { continue; } oName = null; sName = instance.launchSite.LaunchSiteName; if (sName == siteName) { return(instance); } } return(null); }
/// <summary> /// Returns the Color for the Instance Position /// </summary> /// <param name="instance"></param> /// <returns></returns> public Color GetCameraColor(StaticInstance instance) { SetupCameraForVessel(instance); // Move the current object out of the cams view InstanceUtil.SetLayerRecursively(instance, 0); grasCamera.targetTexture = cameraRenderTexture; grasCamera.enabled = true; grasCamera.Render(); //Ray myRay = new Ray(cameraObject.transform.position, instance.CelestialBody.transform.position); //RaycastHit castHit = new RaycastHit(); //if (!Physics.Raycast(myRay, out castHit, float.PositiveInfinity, 1 << 15)) //{ // Log.Normal("NO raycast hit"); //} //else //{ // Renderer rend = castHit.transform.GetComponentsInChildren<Renderer>(true).FirstOrDefault(); // if (rend == null) // { // Log.Normal("No renderer found"); // } // if (rend.materials.Length == 0) // { // Log.Normal("No Raycast material found"); // } // if (rend.material.shader == null) // { // Log.Normal("No shader found"); // } // else // { // RenderTexture myTexture = new RenderTexture(20, 20, 24); // Graphics.Blit(null, myTexture, rend.material); // myTexture. // } //} // bring it back to the normal scenery InstanceUtil.SetLayerRecursively(instance, 15); RenderTexture.active = cameraRenderTexture; cameraTexture.ReadPixels(new Rect(0, 0, frameWidth, frameHeight), 0, 0); grasCamera.targetTexture = null; grasCamera.enabled = false; RenderTexture.active = null; Color[] cols = cameraTexture.GetPixels(); float r = 0, g = 0, b = 0; int len = cols.Length; for (int i = 0; i < len; i++) { r += cols[i].r; g += cols[i].g; b += cols[i].b; } Color outColor = new Color(); outColor.r = r / len; outColor.g = g / len; outColor.b = b / len; //outColor.a = 0.014f; return(outColor); }
/// <summary> /// Spawns a new Instance in the Gameworld and registers itself to the Static Database /// </summary> /// <param name="editing"></param> /// <param name="bPreview"></param> internal void SpawnObject(Boolean editing = false, Boolean bPreview = false) { // mangle Squads statics if (model.isSquad) { InstanceUtil.MangleSquadStatic(this); } // Objects spawned at runtime should be active, ones spawned at loading not InstanceUtil.SetActiveRecursively(this, editing); Transform[] gameObjectList = gameObject.GetComponentsInChildren <Transform>(); List <GameObject> rendererList = (from t in gameObjectList where t.gameObject.GetComponent <Renderer>() != null select t.gameObject).ToList(); InstanceUtil.SetLayerRecursively(this, 15); if (bPreview && editing) { this.ToggleAllColliders(false); } this.preview = bPreview; if (editing) { KerbalKonstructs.instance.selectObject(this, true, true, bPreview); } InstanceUtil.CreateGroupCenterIfMissing(this); groupCenter = StaticDatabase.allCenters[groupCenterName]; if (RelativePosition.Equals(Vector3.zero)) { Log.Normal("LegacySpawnInstance called for " + configPath); LegacySpawnInstance(); gameObject.transform.parent = groupCenter.gameObject.transform; pqsCity.enabled = false; pqsCity.sphere = null; pqsCity = null; RelativePosition = gameObject.transform.localPosition; Orientation = gameObject.transform.localEulerAngles; } else { gameObject.transform.position = groupCenter.gameObject.transform.position; gameObject.transform.parent = groupCenter.gameObject.transform; gameObject.transform.localPosition = RelativePosition; gameObject.transform.localEulerAngles = Orientation; } //Scaling origScale = gameObject.transform.localScale; // save the original scale for later use gameObject.transform.localScale *= ModelScale; RefLatitude = (float)CelestialBody.GetLatitudeAndLongitude(gameObject.transform.position).x; RefLongitude = (float)(CelestialBody.GetLatitudeAndLongitude(gameObject.transform.position).y); RadialPosition = radialPosition; foreach (StaticModule module in model.modules) { Type moduleType = AssemblyLoader.loadedAssemblies.SelectMany(asm => asm.assembly.GetTypes()).FirstOrDefault(t => t.Namespace == module.moduleNamespace && t.Name == module.moduleClassname); StaticModule mod = gameObject.AddComponent(moduleType) as StaticModule; if (mod != null) { mod.staticInstance = this; foreach (string fieldName in module.moduleFields.Keys) { FieldInfo field = mod.GetType().GetField(fieldName); if (field != null) { field.SetValue(mod, Convert.ChangeType(module.moduleFields[fieldName], field.FieldType)); } else { Log.UserWarning("Field " + fieldName + " does not exist in " + module.moduleClassname); } } } else { Log.UserError("Module " + module.moduleClassname + " could not be loaded in " + gameObject.name); } } foreach (GameObject gorenderer in rendererList) { gorenderer.GetComponent <Renderer>().enabled = true; } StaticDatabase.AddStatic(this); // Add them to the bodys objectlist, so they show up as anomalies // After we got a new Name from StaticDatabase.AddStatic() if (isScanable) { Log.Normal("Added " + gameObject.name + " to scanable Objects"); var pqsObjectList = CelestialBody.pqsSurfaceObjects.ToList(); if (!pqsObjectList.Contains((PQSSurfaceObject)groupCenter.pqsCity)) { pqsObjectList.Add(groupCenter.pqsCity as PQSSurfaceObject); } CelestialBody.pqsSurfaceObjects = pqsObjectList.ToArray(); } }
private void Spawn() { CelestialBody.CBUpdate(); isSpawned = true; mesh = ModelVariant.SpawnVariant(this); { if (_mesh == null) { Log.UserError("Cannot spawn 3dModel of Instance: " + model.name); Destroy(); return; } } if (model.isSquad) { InstanceUtil.MangleSquadStatic(this); } InstanceUtil.SetLayerRecursively(this, 15); mesh.SetActive(true); //Scaling origScale = gameObject.transform.localScale; // save the original scale for later use gameObject.transform.localScale *= ModelScale; foreach (StaticModule module in model.modules) { moduleKey = (module.moduleNamespace + "_" + module.moduleClassname); Type moduleType; if (staticModules.ContainsKey(moduleKey)) { moduleType = staticModules[moduleKey]; } else { moduleType = AssemblyLoader.loadedAssemblies.SelectMany(asm => asm.assembly.GetTypes()).FirstOrDefault(t => t.Namespace == module.moduleNamespace && t.Name == module.moduleClassname); staticModules.Add(moduleKey, moduleType); } StaticModule mod = mesh.AddComponent(moduleType) as StaticModule; if (mod != null) { mod.enabled = false; mod.staticInstance = this; foreach (string fieldName in module.moduleFields.Keys) { FieldInfo field = mod.GetType().GetField(fieldName); if (field != null) { field.SetValue(mod, Convert.ChangeType(module.moduleFields[fieldName], field.FieldType)); } else { Log.UserWarning("Field " + fieldName + " does not exist in " + module.moduleClassname); } } //myStaticModules.Add(mod); } else { Log.UserError("Module " + module.moduleClassname + " could not be loaded in " + gameObject.name); } } foreach (Renderer renderer in gameObject.GetComponentsInChildren <Renderer>(true)) { renderer.enabled = true; AdvancedTextures.CheckForExistingMaterial(renderer); } ModelVariant.ApplyVariant(this); //Make LaunchSites more sturdy if (!model.isSquad) { Destructable.MakeDestructable(this); if (hasLauchSites) { destructible.impactMomentumThreshold = Math.Max(destructible.impactMomentumThreshold, 3000f); launchSite.AttachSelector(); } } foreach (var facility in myFacilities) { facility.AttachSelector(); } }
/// <summary> /// gets called every second, when in flight by KerbalKonsructs.updateCache (InvokeRepeating) and through StaticDatabase.UpdateCache /// </summary> /// <param name="playerPos"></param> public void CheckUngrouped(Vector3 playerPos) { //Log.Normal("Check ungrouped assets"); foreach (StaticInstance instance in groupInstances) { float dist = Vector3.Distance(instance.gameObject.transform.position, playerPos); bool visible = (dist < visibilityRange); string sFacType = instance.FacilityType; if (sFacType == "Hangar") { HangarGUI.CacheHangaredCraft(instance); } if (sFacType == "LandingGuide") { if (visible) { LandingGuideUI.instance.drawLandingGuide(instance); } else { LandingGuideUI.instance.drawLandingGuide(null); } } if (sFacType == "TouchdownGuideL") { if (visible) { LandingGuideUI.instance.drawTouchDownGuideL(instance); } else { LandingGuideUI.instance.drawTouchDownGuideL(null); } } if (sFacType == "TouchdownGuideR") { if (visible) { LandingGuideUI.instance.drawTouchDownGuideR(instance); } else { LandingGuideUI.instance.drawTouchDownGuideR(null); } } if (sFacType == "CityLights") { if (dist < 65000f) { InstanceUtil.SetActiveRecursively(instance, false); return; } } if (visible) { InstanceUtil.SetActiveRecursively(instance, true); } else { InstanceUtil.SetActiveRecursively(instance, false); } } }
/// <summary> /// Spawns a new Instance in the Gameworld and registers itself to the Static Database /// </summary> /// <param name="editing"></param> /// <param name="bPreview"></param> internal void spawnObject(Boolean editing, Boolean bPreview) { // mangle Squads statics if (model.isSquad) { InstanceUtil.MangleSquadStatic(gameObject); } // Objects spawned at runtime should be active, ones spawned at loading not InstanceUtil.SetActiveRecursively(this, editing); Transform[] gameObjectList = gameObject.GetComponentsInChildren <Transform>(); List <GameObject> rendererList = (from t in gameObjectList where t.gameObject.GetComponent <Renderer>() != null select t.gameObject).ToList(); setLayerRecursively(gameObject, 15); if (bPreview) { this.ToggleAllColliders(false); } this.preview = bPreview; if (editing) { KerbalKonstructs.instance.selectObject(this, true, true, bPreview); } float objvisibleRange = VisibilityRange; if (objvisibleRange < 1) { objvisibleRange = 25000f; } PQSCity.LODRange range = new PQSCity.LODRange { renderers = new GameObject[0], objects = new GameObject[0], visibleRange = objvisibleRange }; pqsCity = gameObject.AddComponent <PQSCity>(); pqsCity.lod = new[] { range }; pqsCity.frameDelta = 10000; //update interval for its own visiblility range checking. unused by KK, so set this to a high value pqsCity.repositionRadial = RadialPosition; //position pqsCity.repositionRadiusOffset = RadiusOffset; //height pqsCity.reorientInitialUp = Orientation; //orientation pqsCity.reorientFinalAngle = RotationAngle; //rotation x axis pqsCity.reorientToSphere = true; //adjust rotations to match the direction of gravity gameObject.transform.parent = CelestialBody.pqsController.transform; pqsCity.sphere = CelestialBody.pqsController; origScale = pqsCity.transform.localScale; // save the original scale for later use pqsCity.transform.localScale *= ModelScale; pqsCity.order = 100; pqsCity.modEnabled = true; pqsCity.repositionToSphere = true; //enable repositioning pqsCity.repositionToSphereSurface = false; //Snap to surface? CelestialBody.pqsController.GetSurfaceHeight(RadialPosition); pqsCity.OnSetup(); pqsCity.Orientate(); //PQSCity2.LodObject lodObject = new PQSCity2.LodObject(); //lodObject.visibleRange = VisibilityRange; //lodObject.objects = new GameObject[] { }; //pqsCity2 = gameObject.AddComponent<PQSCity2>(); //pqsCity2.objects = new [] { lodObject } ; //pqsCity2.objectName = ""; //pqsCity2.lat = RefLatitude; //pqsCity2.lon = RefLongitude; //pqsCity2.alt = RadiusOffset; //pqsCity2.up = Orientation; //pqsCity2.rotation = RotationAngle; //pqsCity2.sphere = CelestialBody.pqsController; //pqsCity2.OnSetup(); //pqsCity2.Orientate(); foreach (StaticModule module in model.modules) { Type moduleType = AssemblyLoader.loadedAssemblies.SelectMany(asm => asm.assembly.GetTypes()).FirstOrDefault(t => t.Namespace == module.moduleNamespace && t.Name == module.moduleClassname); MonoBehaviour mod = gameObject.AddComponent(moduleType) as MonoBehaviour; if (mod != null) { foreach (string fieldName in module.moduleFields.Keys) { FieldInfo field = mod.GetType().GetField(fieldName); if (field != null) { field.SetValue(mod, Convert.ChangeType(module.moduleFields[fieldName], field.FieldType)); } else { Log.UserWarning("Field " + fieldName + " does not exist in " + module.moduleClassname); } } } else { Log.UserError("Module " + module.moduleClassname + " could not be loaded in " + gameObject.name); } } foreach (GameObject gorenderer in rendererList) { gorenderer.GetComponent <Renderer>().enabled = true; } StaticDatabase.AddStatic(this); // Add them to the bodys objectlist, so they show up as anomalies // After we got a new Name from StaticDatabase.AddStatic() if (isScanable) { Log.Normal("Added " + gameObject.name + " to scanable Objects"); var pqsObjectList = CelestialBody.pqsSurfaceObjects.ToList(); pqsObjectList.Add(pqsCity as PQSSurfaceObject); CelestialBody.pqsSurfaceObjects = pqsObjectList.ToArray(); } }