public static void updatePlanetaryResourceMap() { if (FlightGlobals.currentMainBody.flightGlobalsIndex != current_body) { loadPlanetaryResourceData(FlightGlobals.currentMainBody.flightGlobalsIndex); } if (body_resource_maps.ContainsKey(displayed_resource) && (FlightGlobals.currentMainBody.flightGlobalsIndex != map_body || displayed_resource != map_resource)) { foreach (ORSHeatMapOverlay abundance_marker in abundance_markers) { removeAbundanceSphere(abundance_marker.getPlanetarySphere()); removeAbundanceSphere(abundance_marker.getScaledSphere()); } abundance_markers.Clear(); CelestialBody celbody = FlightGlobals.currentMainBody; sphere_texture = body_resource_maps[displayed_resource].getDisplayTexturePath(); Vector2d[] abundance_points_list = body_abudnance_angles[displayed_resource]; if (abundance_points_list != null && celbody.pqsController != null) { foreach (Vector2d abundance_point in abundance_points_list) { //double theta = abundance_point.x; //double phi = abundance_point.y; Vector3d up = celbody.GetSurfaceNVector(0, 0).normalized; //double surface_height = celbody.pqsController.GetSurfaceHeight(QuaternionD.AngleAxis(0, Vector3d.down) * QuaternionD.AngleAxis(0, Vector3d.forward) * Vector3d.right); GameObject resource_prim = createAbundanceSphere(); GameObject resource_prim_scaled = createAbundanceSphere(); //Vector3d center = celbody.position + surface_height * up; Vector3d center = celbody.position; //Vector3d scaledcenter = ScaledSpace.LocalToScaledSpace(celbody.position) + surface_height * up * ScaledSpace.InverseScaleFactor; Vector3d scaledcenter = ScaledSpace.LocalToScaledSpace(celbody.position); Transform scaled_trans = ScaledSpace.Instance.scaledSpaceTransforms.Single(t => t.name == celbody.name); resource_prim_scaled.transform.position = scaledcenter; resource_prim_scaled.transform.localScale = sphere_scale_scaled * (FlightGlobals.currentMainBody.Radius / FlightGlobals.Bodies[ORSGameConstants.REF_BODY_KERBIN].Radius); resource_prim_scaled.transform.localRotation = Quaternion.identity; resource_prim_scaled.transform.parent = scaled_trans; resource_prim_scaled.layer = 10; resource_prim.transform.position = center; resource_prim.transform.parent = celbody.transform; resource_prim.transform.localScale = sphere_scale * (FlightGlobals.currentMainBody.Radius / FlightGlobals.Bodies[ORSGameConstants.REF_BODY_KERBIN].Radius); resource_prim.transform.localRotation = Quaternion.identity; ORSHeatMapOverlay abundance_marker = new ORSHeatMapOverlay(resource_prim_scaled); abundance_markers.Add(abundance_marker); } map_body = current_body; map_resource = displayed_resource; stored_scale = ScaledSpace.ScaleFactor; } } else { if (body_resource_maps.ContainsKey(displayed_resource) && FlightGlobals.currentMainBody.flightGlobalsIndex == map_body && displayed_resource == map_resource) { CelestialBody celbody = FlightGlobals.currentMainBody; foreach (ORSHeatMapOverlay abundance_marker in abundance_markers) { //if (lineOfSightToPosition(abundance_marker.getPlanetarySphere().transform.position, celbody)) //{ if (MapView.MapIsEnabled) { abundance_marker.getScaledSphere().renderer.enabled = true; abundance_marker.getPlanetarySphere().renderer.enabled = false; } else { abundance_marker.getScaledSphere().renderer.enabled = false; abundance_marker.getPlanetarySphere().renderer.enabled = true; } //} //else //{ // abundance_marker.getScaledSphere().renderer.enabled = false; // //abundance_marker.getPlanetarySphere().renderer.enabled = false; //} } } } }
public static void updatePlanetaryResourceMap() { if (FlightGlobals.currentMainBody.flightGlobalsIndex != current_body) { loadPlanetaryResourceData(FlightGlobals.currentMainBody.flightGlobalsIndex); } if (body_resource_maps.ContainsKey(displayed_resource) && (FlightGlobals.currentMainBody.flightGlobalsIndex != map_body || displayed_resource != map_resource)) { foreach (ORSHeatMapOverlay abundance_marker in abundance_markers) { removeAbundanceSphere(abundance_marker.getPlanetarySphere()); removeAbundanceSphere(abundance_marker.getScaledSphere()); } abundance_markers.Clear(); CelestialBody celbody = FlightGlobals.currentMainBody; sphere_texture = body_resource_maps[displayed_resource].getDisplayTexturePath(); Vector2d[] abundance_points_list = body_abudnance_angles[displayed_resource]; if (abundance_points_list != null && celbody.pqsController != null) { foreach (Vector2d abundance_point in abundance_points_list) { //double theta = abundance_point.x; //double phi = abundance_point.y; Vector3d up = celbody.GetSurfaceNVector(0,0).normalized; //double surface_height = celbody.pqsController.GetSurfaceHeight(QuaternionD.AngleAxis(0, Vector3d.down) * QuaternionD.AngleAxis(0, Vector3d.forward) * Vector3d.right); GameObject resource_prim = createAbundanceSphere(); GameObject resource_prim_scaled = createAbundanceSphere(); //Vector3d center = celbody.position + surface_height * up; Vector3d center = celbody.position; //Vector3d scaledcenter = ScaledSpace.LocalToScaledSpace(celbody.position) + surface_height * up * ScaledSpace.InverseScaleFactor; Vector3d scaledcenter = ScaledSpace.LocalToScaledSpace(celbody.position); Transform scaled_trans = ScaledSpace.Instance.scaledSpaceTransforms.Single(t => t.name == celbody.name); resource_prim_scaled.transform.position = scaledcenter; resource_prim_scaled.transform.localScale = sphere_scale_scaled * (FlightGlobals.currentMainBody.Radius / FlightGlobals.Bodies[ORSGameConstants.REF_BODY_KERBIN].Radius); resource_prim_scaled.transform.localRotation = Quaternion.identity; resource_prim_scaled.transform.parent = scaled_trans; resource_prim_scaled.layer = 10; resource_prim.transform.position = center; resource_prim.transform.parent = celbody.transform; resource_prim.transform.localScale = sphere_scale * (FlightGlobals.currentMainBody.Radius / FlightGlobals.Bodies[ORSGameConstants.REF_BODY_KERBIN].Radius); resource_prim.transform.localRotation = Quaternion.identity; ORSHeatMapOverlay abundance_marker = new ORSHeatMapOverlay(resource_prim_scaled); abundance_markers.Add(abundance_marker); } map_body = current_body; map_resource = displayed_resource; stored_scale = ScaledSpace.ScaleFactor; } } else { if (body_resource_maps.ContainsKey(displayed_resource) && FlightGlobals.currentMainBody.flightGlobalsIndex == map_body && displayed_resource == map_resource) { CelestialBody celbody = FlightGlobals.currentMainBody; foreach (ORSHeatMapOverlay abundance_marker in abundance_markers) { //if (lineOfSightToPosition(abundance_marker.getPlanetarySphere().transform.position, celbody)) //{ if (MapView.MapIsEnabled) { abundance_marker.getScaledSphere().renderer.enabled = true; abundance_marker.getPlanetarySphere().renderer.enabled = false; } else { abundance_marker.getScaledSphere().renderer.enabled = false; abundance_marker.getPlanetarySphere().renderer.enabled = true; } //} //else //{ // abundance_marker.getScaledSphere().renderer.enabled = false; // //abundance_marker.getPlanetarySphere().renderer.enabled = false; //} } } } }