// Memorizza in _editingProperties tutte le proprietà editable private void InitializeEditingProperties() { // Per ogni proprietà pubblica di EditingObject alla quale è stato associato l’attributo Editable: // se la proprietà è write-only, sollevare un’eccezione; // creare una nuova EditingProperty sulla proprietà e aggiungerla alla collezione _editingProperties; // visualizzare nella finestra di output del debugger la descrizione completa dell'EditingProperty // ad esempio: "Add EditingProperty Titolo {Label = Titolo, Width = 100} OriginalValue = TitoloLibro_1" Type type = EditingObject.GetType(); foreach (PropertyInfo propertyInfo in type.GetProperties()) { EditableAttribute[] attributes = (EditableAttribute[])propertyInfo.GetCustomAttributes(typeof(EditableAttribute), false); if (attributes.Length == 0) { continue; } if (!propertyInfo.CanRead) { throw new ApplicationException("Attributo editable non applicabile"); } EditingProperty editingProperty = new EditingProperty(propertyInfo, attributes[0], EditingObject); _editingProperties.Add(editingProperty); Console.WriteLine("Add EditingProperty " + editingProperty.ToString()); } }
/// <summary> /// 클릭 위치에 Object 제거 /// </summary> public void DestroyObject(GameObject target) { if (target.name == _gridAreaObjectName) { return; } EditingObject customObject = target.GetComponent <EditingObject>(); Vector3 key = Vector3.zero; foreach (var ob in _objectDic) { if (ob.Value == customObject) { key = ob.Key; break; } } if (key != Vector3.zero) { _objectDic.Remove(key); } DestroyImmediate(target); EditorUtility.SetDirty(this); }
async Task QUpdateUserAsync() { try { await UIService.Execute(() => { Commands ic = new Commands(); HIOStaticValues.CheckingData(EditingObject); bool res = ic.UpdateUser(EditingObject.UserID, EditingObject.Url, EditingObject.AppID, EditingObject.Name, EditingObject.Username, EditingObject.Password, flagPass); if (res) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { IsSaving = true; EditingObject.EndEdit(); if (_Form?.Owner == null) /*from extension*/ { try { HIOStaticValues.tmain?.AccountManager?.LoadData(); HIOStaticValues.tmain?.AccountManager?.OnPropertyChanged(nameof(TAccountManagerViewModel.IsAllChecked)); } catch { /*TODO: remove try catch*/ } } if (_Form.IsVisible) { _Form.Close(); } })); } }); } finally { IsSaving = false; } }
// Memorizza in _editingProperties tutte le proprietà editable private void InitializeEditingProperties() { // Per ogni proprietà pubblica di EditingObject alla quale è stato associato l’attributo Editable: // se la proprietà è write-only, sollevare un’eccezione; // creare una nuova EditingProperty sulla proprietà e aggiungerla alla collezione _editingProperties; // visualizzare nella finestra di output del debugger la descrizione completa dell'EditingProperty // ad esempio: "Add EditingProperty Titolo {Label = Titolo, Width = 100} OriginalValue = TitoloLibro_1" Type t = EditingObject.GetType(); foreach (PropertyInfo p in t.GetProperties()) { if ((p.GetCustomAttributes(typeof(Model.EditableAttribute), false).Length > 0)) { if (p.CanWrite && !p.CanRead) { throw new ArgumentException("public editable property can not be write only"); } EditingProperty ep = new EditingProperty(p, (Model.EditableAttribute)p.GetCustomAttributes(typeof(Model.EditableAttribute), false)[0], EditingObject); _editingProperties.Add(ep); Console.WriteLine(ep.ToString()); } } }
/// <summary> /// 클릭 위치에 Object 생성 /// </summary> public void InstantiateObject(Vector3 newPos, GameObject target) { if (_objectDic.ContainsKey(newPos) || target.GetComponent <EditingObject>() == null) { return; } // 오브젝트 생성 GameObject newObject = Instantiate(target, _objectContainer.transform); // 오브젝트 위치 지정 float height = (newObject.GetComponent <Collider>()?.bounds.size.y ?? 0) * _cellSize * 0.5f; newObject.transform.position = new Vector3(newPos.x, newPos.y + height, newPos.z); newObject.transform.localScale = new Vector3(_cellSize, _cellSize, _cellSize); // 오브젝트 캐싱 EditingObject customObject = newObject.GetComponent <EditingObject>(); _objectDic.Add(newObject.transform.position, customObject); EditorUtility.SetDirty(this); }
private void _Form_Closed(object sender, EventArgs e) { EditingObject.CancelEdit(); IsSaving = false; EditingObject.Password = ""; }