/// <summary> /// Adds a new gps persistent gps to all players /// </summary> /// <param name="name">Name of the gps</param> /// <param name="color">Color of the gps</param> /// <param name="pos">Position of the gps</param> /// <param name="id">The id of the gps</param> public void AddPersistentGps(string name, Color color, Vector3D pos, Guid id) { MyGpsData data = new MyGpsData() { Name = name, Color = color, Position = pos, Id = id, Players = new HashSet <long>() }; if (!m_globalGpss.ContainsKey(id)) { m_globalGpss[id] = data; } }
/// <summary> /// Loads persistent gps data /// </summary> public override void LoadData() { MyPluginLog.Log("Loading GPS manager data"); Static = this; MyObjectBuilder_WorldGpsData ob; if (MyFileUtils.FileExistsInWorldStorage(FILENAME)) { ob = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_WorldGpsData>(FILENAME); } else { ob = new MyObjectBuilder_WorldGpsData(); } m_globalGpss = new Dictionary <Guid, MyGpsData>(); m_dynamicGpss = new Dictionary <Tuple <Guid, long>, int>(); foreach (var item in ob.PersistentGpss) { var data = new MyGpsData(item.Name, item.Color, item.Position, item.Id, item.PlayerIds, item.Hidden); m_globalGpss[item.Id] = data; } MySession.Static.OnSavingCheckpoint += delegate { foreach (var key in m_dynamicGpss.Keys) { MySession.Static.Gpss.SendDelete(key.Item2, m_dynamicGpss[key]); } ; m_dynamicGpss.Clear(); }; MyPluginLog.Log("Loading GPS manager data completed"); }