Esempio n. 1
0
        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;
                        //}
                    }
                }
            }
        }
Esempio n. 2
0
        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;
                        //}
                    }
                }
            }
        }