public void UpdateSurfaceLocation(TrackedEntity pm) { //log.Debug("initial location to save: "+ pm.AttackPoint); var point = new PointOfInterest(pm.AttackPoint, pm.EntityID); //log.Debug(pm.AttackPoint+""); PlanetaryData planet = KnownPlanets.FirstOrDefault(x => x.PlanetCenter == pm.Location); Region region = null; region = new Region(pm.EntityID, pm.Location, point, iscmd, cubeGrid.GetPosition(), log); if (planet != null) { planet.UpdatePlanetaryData(region, cubeGrid.GetPosition()); } //if no planet if (planet == null) { planet = CreateNewPlanet(pm.EntityID, pm.Location, region, point, cubeGrid.GetPosition()); //if point is in current region, update region if (currentRegion.EntityId == pm.EntityID) { currentRegion.UpdatePoints(point); } //if point in another region, increase its scan density //log.Debug("Number of regions: " + nearestPlanet.Regions.Count); } if (KnownPlanets.Count > 1) { nearestPlanet = KnownPlanets.OrderBy(x => (x.PlanetCenter - pm.Location).Length()).FirstOrDefault(); } }
public void UpdatePlanetData() { nearestPlanet = GetNearestPlanet(); if (nearestPlanet != null) { altitude = Math.Abs((cubeGrid.GetPosition() - nearestPlanet.GetNearestPoint(cubeGrid.GetPosition())).Length()); } }
protected void UpdateTrackedTargets() { try { trackingSystems.Update(); NearestPlanet = trackingSystems.GetNearestPlanet(); } catch (Exception e) { log.Error("UpdateTrackedTargets " + e.Message); } }
private PlanetaryData CreateNewPlanet(long id, Vector3D loc, Region newregion, PointOfInterest point, Vector3D cubegridLoc) { PlanetaryData planet = null; //log.Debug("Logging new planet: "+ KnownPlanets.Count); planet = new PlanetaryData(log, loc, newregion, cubegridLoc); currentRegion = newregion; nearestPlanet = planet; KnownPlanets.Add(planet); return(planet); }