void CityFixer(PQSCity city) { Debug.Log("SigmaDimensions.CityFixer", " > PQSCity: " + city.name); // Resize the Building city.transform.localScale *= (float)resizeBuildings; // Fix PQSCity Groups if (body.Has("PQSCityGroups")) { Dictionary <object, Vector3> PQSList = body.Get <Dictionary <object, Vector3> >("PQSCityGroups"); if (PQSList.ContainsKey(city)) { GroupFixer(city, PQSList[city]); } } // Add PQSCityFixer Component PQSCityFixer fixer = city.gameObject.AddOrGetComponent <PQSCityFixer>(); // Terrain double groundLevel = body.pqsController.GetSurfaceHeight(city.repositionRadial) - body.Radius; Debug.Log("SigmaDimensions.CityFixer", " > Ground Level at Mod (GETSURFACE) = " + groundLevel); double oceanOffset = body.ocean && groundLevel < 0 ? groundLevel : 0d; Debug.Log("SigmaDimensions.CityFixer", " > Ocean Offset at Mod = " + oceanOffset); groundLevel = body.ocean && groundLevel < 0 ? 0d : groundLevel; Debug.Log("SigmaDimensions.CityFixer", " > Ground Level at Mod (WITH OCEAN) = " + groundLevel); // Fix Altitude if (!city.repositionToSphere && !city.repositionToSphereSurface) { // Offset = Distance from the center of the planet // THIS IS NOT POSSIBLE AS OF KSP 1.7.1 Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Original Center Offset = " + city.repositionRadiusOffset); double builtInOffset = city.repositionRadiusOffset - (groundLevel + oceanOffset) / (resize * landscape) - body.Radius / resize; Debug.Log("SigmaDimensions.CityFixer", " > Builtin Offset = " + builtInOffset); city.repositionRadiusOffset = body.Radius + groundLevel + oceanOffset + builtInOffset * resizeBuildings; Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Fixed Center Offset = " + city.repositionRadiusOffset); } else if (city.repositionToSphere && !city.repositionToSphereSurface) { // Offset = Distance from the radius of the planet Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Original Radius Offset = " + city.repositionRadiusOffset); double builtInOffset = city.repositionRadiusOffset - groundLevel / (resize * landscape); Debug.Log("SigmaDimensions.CityFixer", " > Builtin Offset = " + builtInOffset); city.repositionRadiusOffset = groundLevel + builtInOffset * resizeBuildings; Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Fixed Radius Offset = " + city.repositionRadiusOffset); } else { // Offset = Distance from the surface of the planet if (!city.repositionToSphereSurfaceAddHeight) { city.repositionToSphereSurfaceAddHeight = true; city.repositionRadiusOffset = 0; } Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Original Surface Offset = " + city.repositionRadiusOffset); city.repositionRadiusOffset *= resizeBuildings; Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Fixed Surface Offset = " + city.repositionRadiusOffset); } }
void CityFixer(PQSCity city) { Debug.Log("SigmaDimensions.CityFixer", " > PQSCity: " + city.name); // Resize the Building city.transform.localScale *= (float)resizeBuildings; // Fix PQSCity Groups if (body.Has("PQSCityGroups")) { Dictionary <object, Vector3> PQSList = body.Get <Dictionary <object, Vector3> >("PQSCityGroups"); if (PQSList.ContainsKey(city)) { GroupFixer(city, PQSList[city]); } } // Add PQSCityFixer Component PQSCityFixer fixer = city.GetComponent <PQSCityFixer>() ?? city.gameObject.AddComponent <PQSCityFixer>(); // Terrain double groundLevel = body.pqsController.GetSurfaceHeight(city.repositionRadial) - body.Radius; double oceanDepth = body.ocean && groundLevel < 0 ? -groundLevel : 0d; groundLevel = body.ocean && groundLevel < 0 ? 0d : groundLevel; // Fix Altitude if (city.repositionToSphere && !city.repositionToSphereSurface) { double builtInOffset = city.repositionRadiusOffset - groundLevel / (resize * landscape); Debug.Log("SigmaDimensions.CityFixer", " > Builtuin Offset = " + builtInOffset); // Offset = Distance from the radius of the planet Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Original Radius Offset = " + city.repositionRadiusOffset); city.repositionRadiusOffset = groundLevel + builtInOffset * resizeBuildings; Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Fixed Radius Offset = " + city.repositionRadiusOffset); } else { if (!city.repositionToSphereSurface) { city.repositionToSphereSurface = true; city.repositionRadiusOffset = 0; } if (!city.repositionToSphereSurfaceAddHeight) { city.repositionToSphereSurfaceAddHeight = true; city.repositionRadiusOffset = 0; } double builtInOffset = city.repositionRadiusOffset - oceanDepth / (resize * landscape); Debug.Log("SigmaDimensions.CityFixer", " > Builtuin Offset = " + builtInOffset); // Offset = Distance from the surface of the planet Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Original Surface Offset = " + city.repositionRadiusOffset); city.repositionRadiusOffset = oceanDepth + builtInOffset * resizeBuildings; Debug.Log("SigmaDimensions.CityFixer", " > PQSCity Fixed Surface Offset = " + city.repositionRadiusOffset); } }