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);
        }
Esempio n. 2
0
		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();
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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();
         }
     }
 }
Esempio n. 6
0
        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();
     }
 }
Esempio n. 8
0
        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;
            }
        }
Esempio n. 9
0
		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();
			}
		}
Esempio n. 10
0
		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();
 }
Esempio n. 12
0
		private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
		{
			if (!e.Objects.Resources.Any() && !e.Objects.OfType<DesignTimeObjectData>().Any()) return;
			this.RenderableControl.Invalidate();
		}
Esempio n. 13
0
        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;
            }
        }