public void RegularChange() { TestObject[] obj = new TestObject[] { new TestObject { Foo = 42, Bar = "Hello" }, new TestObject { Foo = 10, Bar = "World" }, new TestObject { Foo = 0, Bar = "Not" } }; ObjectPropertyChangedEventArgs args = new ObjectPropertyChangedEventArgs( new ObjectSelection(obj.Take(2)), new PropertyInfo[] { TestObject.FooProperty }); Assert.IsTrue(args.HasObject(obj[0])); Assert.IsTrue(args.HasObject(obj[1])); Assert.IsFalse(args.HasObject(obj[2])); Assert.IsTrue(args.HasAnyObject(obj)); Assert.IsTrue(args.HasAnyObject(obj.Skip(1))); Assert.IsFalse(args.HasAnyObject(obj.Skip(2))); Assert.IsTrue(args.HasProperty(TestObject.FooProperty)); Assert.IsFalse(args.HasProperty(TestObject.BarProperty)); Assert.IsFalse(args.HasProperty(UnrelatedObject.NotProperty)); Assert.IsTrue(args.HasAnyProperty(TestObject.FooProperty)); Assert.IsTrue(args.HasAnyProperty(TestObject.FooProperty, TestObject.BarProperty)); Assert.IsFalse(args.HasAnyProperty(TestObject.BarProperty)); Assert.IsFalse(args.HasAnyProperty(UnrelatedObject.NotProperty)); Assert.IsFalse(args.CompleteChange); }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (e.Objects.ResourceCount > 0) { foreach (var r in e.Objects.Resources) this.OnResourceModified(r); } }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { // Ignore changes to objects we're not previewing if (!e.HasObject(this.prevImageValue)) return; // Ignore changes to AssetInfo data, as this doesn't directly affect us until Re-Import if (!e.CompleteChange && e.HasProperty(ReflectionInfo.Property_Resource_AssetInfo)) return; // Update the preview to reflect changes. this.InvalidatePreview(); this.PerformGetValue(); }
private void EditorForm_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (!(e is PrefabAppliedEventArgs) && (sender is PropertyEditor) && (sender as PropertyEditor).ParentGrid == this.propertyGrid) return; if (!(e is PrefabAppliedEventArgs) && sender is PropertyGrid) return; // Update values if anything changed that relates to the grids current selection if (e.Objects.Components.GameObject().Any(o => this.propertyGrid.Selection.Contains(o)) || e.Objects.Any(o => this.propertyGrid.Selection.Contains(o)) || (e.Objects.Contains(Scene.Current) && this.propertyGrid.Selection.Any(o => o is GameObject || o is Component))) this.propertyGrid.UpdateFromObjects(100); }
private void EditorForm_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { // If a Resources modified state changes, invalidate if (e.Objects.Resources.Any()) { this.folderView.Invalidate(); foreach (Prefab prefab in e.Objects.Resources.OfType<Prefab>()) { ResourceNode resNode = this.NodeFromPath(prefab.Path) as ResourceNode; if (resNode == null) continue; resNode.UpdateImage(); } } }
private void EditorForm_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { // If a Resources modified state changes, invalidate if (e.Objects.Resources.Any()) { // Since every "current Scene" change will be a Resource change, // we'd redraw all the time, which can decrease editor performance. // Instead, keep track of the Resources that have been marked unsaved // to avoid duplicate redraws. bool anyVisibleStateChange = false; foreach (Resource res in e.Objects.Resources) { if (DualityEditorApp.IsResourceUnsaved(res) && this.unsavedResRedrawCache.Add(res.Path)) anyVisibleStateChange = true; } // Did we encounter any visible state change? Redraw if that's the case. if (anyVisibleStateChange) { this.folderView.Invalidate(); } } }
private void EditorForm_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (this.selectedBody != null) { if (this.selectedBody.Disposed || this.selectedBody.GameObj == null || this.selectedBody.GameObj.Disposed) { this.ClearSelection(); return; } } if (e.Objects.Any(o => o is Transform || o is RigidBody || o is ShapeInfo)) { // Applying its Prefab invalidates a Collider's ShapeInfos: Deselect them. if (e is PrefabAppliedEventArgs) DualityEditorApp.Deselect(this, ObjectSelection.Category.Other); else { foreach (SelPolyShape sps in this.allObjSel.OfType<SelPolyShape>()) sps.UpdatePolyStats(); foreach (SelLoopShape sps in this.allObjSel.OfType<SelLoopShape>()) sps.UpdateLoopStats(); this.InvalidateSelectionStats(); this.Invalidate(); } this.UpdateToolbar(); } }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (e is PrefabAppliedEventArgs || (e.HasProperty(ReflectionInfo.Property_GameObject_PrefabLink) && e.HasAnyObject(Scene.Current.AllObjects)) || (e.CompleteChange && e.HasObject(Scene.Current))) this.UpdatePrefabLinkStatus(false); if (e.HasProperty(ReflectionInfo.Property_GameObject_Name)) { foreach (GameObjectNode node in e.Objects.GameObjects.Select(g => this.FindNode(g))) if (node != null) node.Text = node.Obj.Name; } }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (e.HasAnyProperty(ReflectionInfo.Property_Transform_RelativePos, ReflectionInfo.Property_Transform_RelativeAngle) && e.Objects.Components.Any(c => c.GameObj == this.CameraObj)) { if (!this.camBeginDragScene) this.OnMouseMove(); } }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (e.HasObject(this.prevImageValue)) { this.InvalidatePreview(); this.PerformGetValue(); } }
private void EditorForm_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (e.Objects.Components.Any(c => c is Transform || c is ICmpRenderer)) this.InvalidateSelectionStats(); }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { if (!e.Objects.Resources.Any() && !e.Objects.OfType<DesignTimeObjectData>().Any()) return; this.RenderableControl.Invalidate(); }
private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e) { // If something Prefab-related changed, update the display state of all objects // to indicate new, removed or broken prefab links. if (e is PrefabAppliedEventArgs || (e.HasProperty(ReflectionInfo.Property_GameObject_PrefabLink) && e.HasAnyObject(Scene.Current.AllObjects))) { this.UpdatePrefabLinkStatus(false); } // Update the displayed names of objects if (e.HasProperty(ReflectionInfo.Property_GameObject_Name)) { foreach (GameObjectNode node in e.Objects.GameObjects.Select(g => this.FindNode(g))) if (node != null) node.Text = node.Obj.Name; } }