private void updateSavedIglooMetaData(long layoutId, SceneLayout savedSceneLayout) { SavedIgloosMetaData savedIgloosMetaData = getSavedIgloosMetaData(); List <SavedIglooMetaData> list = new List <SavedIglooMetaData>(savedIgloosMetaData.SavedIgloos); bool flag = false; foreach (SavedIglooMetaData item in list) { if (layoutId == item.LayoutId) { SceneLayoutToSavedIglooMetaData(layoutId, savedSceneLayout, item); item.SceneLayout = savedSceneLayout; flag = true; break; } } if (!flag) { SavedIglooMetaData current = CreateSavedIglooMetaDataFromSceneLayout(layoutId, savedSceneLayout); current.SceneLayout = savedSceneLayout; list.Add(current); if (!savedIgloosMetaData.ActiveIglooId.HasValue) { savedIgloosMetaData.ActiveIglooId = layoutId; } } savedIgloosMetaData.SavedIgloos = list; savedIgloosMetaData.IsDirty = false; }
private void SelectLayout(SceneLayout layout) { if (_selectedLayout == layout) { return; } if (_selectedLayout != null) { _selectedLayout.Dispose(); } layout.ActivateLayout(SceneViewsGrid); _selectedLayout = layout; foreach (var toggleButton in LayoutsPanel.Children.OfType <ToggleButton>()) { if (toggleButton.Tag != _selectedLayout) { toggleButton.IsChecked = false; } } ShowModel(_loadedModel3D); }
public void LoadIglooLayout(long layoutId, Action <bool, SceneLayoutData, SceneLayoutData> callback) { loadLayoutCallback = callback; SceneLayout sceneLayout = null; if (layoutId != savedIgloosMetaData.ActiveIglooId) { for (int i = 0; i < savedIgloosMetaData.SavedIgloos.Count; i++) { if (savedIgloosMetaData.SavedIgloos[i].LayoutId == layoutId) { sceneLayout = savedIgloosMetaData.SavedIgloos[i].SceneLayout; break; } } } if (sceneLayout != null) { SceneLayoutData sceneLayoutData = new SceneLayoutData(); layoutManager.UpdateSceneLayoutData(layoutId, sceneLayout, sceneLayoutData); if (loadLayoutCallback != null) { loadLayoutCallback.InvokeSafe(arg1: true, sceneLayoutData, null); loadLayoutCallback = null; } } else { eventChannel.AddListener <IglooServiceEvents.IglooLayoutLoaded>(onIglooLayoutLoaded); iglooService.GetIglooLayout(layoutId); } }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { SceneLayoutEntity value = offlineDatabase.Read <SceneLayoutEntity>(); SceneLayout sceneLayout = value[SceneLayoutId]; sceneLayout.lastModifiedDate = DateTime.UtcNow.GetTimeInMilliseconds(); if (RequestBody.zoneId != null) { sceneLayout.zoneId = RequestBody.zoneId; } if (RequestBody.name != null) { sceneLayout.name = RequestBody.name; } sceneLayout.lightingId = RequestBody.lightingId; sceneLayout.musicId = RequestBody.musicId; if (RequestBody.decorationsLayout != null) { sceneLayout.decorationsLayout = RequestBody.decorationsLayout; } if (RequestBody.extraInfo != null) { sceneLayout.extraInfo = RequestBody.extraInfo; } offlineDatabase.Write(value); ResponseBody = SavedSceneLayout.FromSceneLayout(sceneLayout, SceneLayoutId); }
public static void SceneLayoutToSavedIglooMetaData(long layoutId, SceneLayout sceneLayout, SavedIglooMetaData savedIglooMetaData) { savedIglooMetaData.LayoutId = layoutId; savedIglooMetaData.CreatedDate = (sceneLayout.createdDate.HasValue ? sceneLayout.createdDate.Value : 0); savedIglooMetaData.LastModifiedDate = (sceneLayout.lastModifiedDate.HasValue ? sceneLayout.lastModifiedDate.Value : 0); savedIglooMetaData.MemberOnly = sceneLayout.memberOnly; savedIglooMetaData.LotZoneName = sceneLayout.zoneId; }
private bool onIglooUpdated(IglooServiceEvents.IglooUpdated evt) { newLayout = null; eventChannel.AddListenerOneShot <IglooServiceEvents.IglooActiveLayoutLoaded>(onActiveLayoutLoaded); Service.Get <INetworkServicesManager>().IglooService.GetActiveIglooLayout(evt.IglooId); sendNotification(UpdateNotice, UpdateCountDown); CoroutineRunner.Start(reloadScene(), this, "Reload igloo scene"); return(false); }
public SelfRoomJoinedEvent(long sessionId, string name, RoomIdentifier room, SceneLayout extraLayoutData, string roomOwnerName, bool isRoomOwner) { SessionId = sessionId; Name = name; Room = room; ExtraLayoutData = extraLayoutData; RoomOwnerName = roomOwnerName; IsRoomOwner = isRoomOwner; }
public void UpdateSceneLayoutData(long layoutId, SceneLayout sceneLayout, SceneLayoutData sceneLayoutData) { long createdDate = (sceneLayout.createdDate.HasValue ? sceneLayout.createdDate.Value : 0); long lastModifiedDate = (sceneLayout.lastModifiedDate.HasValue ? sceneLayout.lastModifiedDate.Value : 0); List <DecorationLayoutData> layout = ToDecorationLayoutData(sceneLayout.decorationsLayout); sceneLayoutData.UpdateData(layoutId, sceneLayout.zoneId, createdDate, lastModifiedDate, sceneLayout.memberOnly, sceneLayout.lightingId, sceneLayout.musicId, sceneLayout.extraInfo, layout); sceneLayoutData.IsDirty = false; }
public bool UpdateActiveLayoutFromData(long layoutId, SceneLayout sceneLayout) { try { SceneLayoutData activeSceneLayoutData = GetActiveSceneLayoutData(); UpdateSceneLayoutData(layoutId, sceneLayout, activeSceneLayoutData); } catch (Exception) { return(false); } return(true); }
private SceneLayoutData checkForUnpublishedLayout(long layoutId, SceneLayout sceneLayout) { SceneLayoutData sceneLayoutData = null; for (int i = 0; i < savedIgloosMetaData.SavedIgloos.Count; i++) { if (savedIgloosMetaData.SavedIgloos[i].LayoutId == layoutId && sceneLayout.lastModifiedDate > savedIgloosMetaData.SavedIgloos[i].LastModifiedDate) { sceneLayoutData = new SceneLayoutData(); layoutManager.UpdateSceneLayoutData(layoutId, sceneLayout, sceneLayoutData); break; } } return(sceneLayoutData); }
private bool onActiveLayoutLoaded(IglooServiceEvents.IglooActiveLayoutLoaded evt) { newLayout = evt.Layout; return(false); }
public static SavedIglooMetaData CreateSavedIglooMetaDataFromSceneLayout(long layoutId, SceneLayout sceneLayout) { SavedIglooMetaData savedIglooMetaData = new SavedIglooMetaData(); SceneLayoutToSavedIglooMetaData(layoutId, sceneLayout, savedIglooMetaData); return(savedIglooMetaData); }
private void onGetActiveIglooLayout(GetActiveIglooLayoutOperation operation, HttpResponse httpResponse) { SceneLayout responseBody = operation.ResponseBody; Service.Get <EventDispatcher>().DispatchEvent(new IglooServiceEvents.IglooActiveLayoutLoaded(responseBody)); }
public IglooActiveLayoutLoaded(SceneLayout layout) { Layout = layout; }
private SceneLayoutData addLayoutToEntity(DataEntityHandle handle, long layoutId, SceneLayout sceneLayout) { if (dataEntityCollection.HasComponent <SceneLayoutData>(handle)) { Log.LogErrorFormatted(this, "Cannot add SceneLayoutData to {0} as one already exists. Remove the exiting one first.", handle); return(null); } SceneLayoutData sceneLayoutData = new SceneLayoutData(); try { UpdateSceneLayoutData(layoutId, sceneLayout, sceneLayoutData); dataEntityCollection.AddComponent(handle, sceneLayoutData); } catch (Exception ex) { Log.LogErrorFormatted(this, "Problem creating scene layout from cached data. Message: {0}", ex.Message); } return(sceneLayoutData); }
public SceneLayoutData CacheLayoutFromSceneLayout(long layoutId, SceneLayout sceneLayout) { return(addLayoutToEntity(GetCacheHandle(), layoutId, sceneLayout)); }
public ReloadLayout(SceneLayout newLayout) { NewLayout = newLayout; }
/// <summary> /// Excel -> 二进制文件 /// </summary> /// <param name="inPath"></param> /// <param name="inFolderName"></param> /// <returns></returns> public bool Bin(string inPath, string inFolderName) { Assist.CheckFolderExist(inFolderName); PBData data = new PBData(); Assist.GetObjPaths(".xls", inPath).ForEach(delegate(string path) { DataSet ds = Assist.ExcelToData(path); DataTable dt = ds.Tables[0]; string classname = Stringer.FirstLetterUp(dt.TableName); Type classType = Type.GetType(classname); FieldInfo fieldInfo = typeof(PBData).GetField(classname + "Dic"); IDictionary fieldValue = fieldInfo.GetValue(data) as IDictionary; if (classType != null) { for (int i = 4; i < dt.Rows.Count; i++) { string key = ""; // key List<string> ls = new List<string>(); for (int x = 0; x < dt.Columns.Count; x++) { ls.Add(dt.Rows[i][x].ToString()); if (dt.Rows[2][x].ToString().Split('+')[2] == "1")// 当前值为Key值的一部分 { key += dt.Rows[i][x].ToString() + "_"; } } key = key.Remove(key.Length - 1, 1); IProtoBufable value = Activator.CreateInstance(classType) as IProtoBufable;// value value.Set(ls); fieldValue.Add(key, value); } fieldInfo.SetValue(data, fieldValue); } }); #region SceneLayout 读取同级目录下的“Excel/SceneLayout/”内的所有 xml 文件,并将其数据写入 PBData Dictionary<string, XmlDocument> doc = Assist.GetXml(Assist.RootPath + "Excel/SceneLayout/"); foreach (KeyValuePair<string, XmlDocument> item in doc) { SceneLayout sl = new SceneLayout(); XmlNodeList xcc = item.Value.SelectSingleNode("Config").ChildNodes; for (int i = 0; i < xcc.Count; i++) { SceneLayoutItem sli = new SceneLayoutItem(); IProtoBufable xmlItemValue = new SceneLayoutItem() as IProtoBufable;// value List<string> xls = new List<string>(); for (int x = 0; x < xcc[i].Attributes.Count; x++) { xls.Add(xcc[i].Attributes[x].Value); } xmlItemValue.Set(xls); sl.item.Add(xmlItemValue as SceneLayoutItem); } data.SceneLayoutDic.Add(item.Key, sl); } #endregion using (var file = System.IO.File.Create("PBData")) { try { ProtoBuf.Serializer.Serialize(file, data); } catch (Exception e) { MainWindow.Show(e.ToString()); } } return true; }
/// <summary> /// Excel -> 二进制文件 /// </summary> /// <param name="inPath"></param> /// <param name="inFolderName"></param> /// <returns></returns> public bool Bin(string inPath, string inFolderName) { Assist.CheckFolderExist(inFolderName); PBData data = new PBData(); Assist.GetObjPaths(".xls", inPath).ForEach(delegate(string path) { DataSet ds = Assist.ExcelToData(path); DataTable dt = ds.Tables[0]; string classname = Stringer.FirstLetterUp(dt.TableName); Type classType = Type.GetType(classname); FieldInfo fieldInfo = typeof(PBData).GetField(classname + "Dic"); IDictionary fieldValue = fieldInfo.GetValue(data) as IDictionary; if (classType != null) { for (int i = 4; i < dt.Rows.Count; i++) { string key = ""; // key List <string> ls = new List <string>(); for (int x = 0; x < dt.Columns.Count; x++) { ls.Add(dt.Rows[i][x].ToString()); if (dt.Rows[2][x].ToString().Split('+')[2] == "1")// 当前值为Key值的一部分 { key += dt.Rows[i][x].ToString() + "_"; } } key = key.Remove(key.Length - 1, 1); IProtoBufable value = Activator.CreateInstance(classType) as IProtoBufable;// value value.Set(ls); fieldValue.Add(key, value); } fieldInfo.SetValue(data, fieldValue); } }); #region SceneLayout 读取同级目录下的“Excel/SceneLayout/”内的所有 xml 文件,并将其数据写入 PBData Dictionary <string, XmlDocument> doc = Assist.GetXml(Assist.RootPath + "Excel/SceneLayout/"); foreach (KeyValuePair <string, XmlDocument> item in doc) { SceneLayout sl = new SceneLayout(); XmlNodeList xcc = item.Value.SelectSingleNode("Config").ChildNodes; for (int i = 0; i < xcc.Count; i++) { SceneLayoutItem sli = new SceneLayoutItem(); IProtoBufable xmlItemValue = new SceneLayoutItem() as IProtoBufable;// value List <string> xls = new List <string>(); for (int x = 0; x < xcc[i].Attributes.Count; x++) { xls.Add(xcc[i].Attributes[x].Value); } xmlItemValue.Set(xls); sl.item.Add(xmlItemValue as SceneLayoutItem); } data.SceneLayoutDic.Add(item.Key, sl); } #endregion using (var file = System.IO.File.Create("PBData")) { try { ProtoBuf.Serializer.Serialize(file, data); } catch (Exception e) { MainWindow.Show(e.ToString()); } } return(true); }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { IglooEntity iglooEntity = offlineDatabase.Read <IglooEntity>(); ResponseBody = iglooEntity.Data.activeLayout; }