public void Select(bool SelectChildren) { if (GetType().IsSubclassOf(typeof(SceneObject))) { SceneObject s = (SceneObject)this; s.AddSelected(this); } else { ParentScene.AddSelected(this); } if (SelectChildren) { foreach (GameObject g in HierarchyChildren) { g.Select(true); } } }
public GameObject Clone(GameObject Parent, SceneObject Scene) { bool DictionaryCreator = CloneDictionary == null; if (DictionaryCreator) { CloneDictionary = new Dictionary <GameObject, GameObject>(); } GameObject g = CreatorBasic.ReturnObjectOfType(GetType()); if (!CloneDictionary.ContainsKey(this)) { CloneDictionary.Add(this, g); } else { CloneDictionary[this] = g; } FillBlankClones(); ReferenceGameObject = g; ParentLevel.AddObject(g, Scene); Stream s = new MemoryStream(); WriteClone(new BinaryWriter(s)); Console.Write(s.Length); s.Position = 0; g.ReadClone(new BinaryReader(s)); s.Close(); if (Scene != null) { Scene.AddSelected(g); } SceneObject SceneParent = Scene; if (!g.GetType().IsSubclassOf(typeof(SceneObject))) { if (Parent == null) { hierarchyParent.AddHierarchyObject(g); } else { Parent.AddHierarchyObject(g); } } else { SceneParent = (SceneObject)g; } foreach (GameObject child in HierarchyChildren) { if (child != this) { child.Clone(g, SceneParent); } } g.PostRead(); if (ObjectListValue.LinkedObjects.ContainsKey(this)) { foreach (ObjectListValue l in ObjectListValue.LinkedObjects[this]) { if (!CloneDictionary.ContainsValue(l.Parent) && !CloneDictionary.ContainsKey(l.Parent)) { l.add(g); } } } if (DictionaryCreator) { CloneDictionary = null; } return(g); }
public override void Update(GameTime gameTime, Window Updater) { RelativeMouse = Updater.RelativeMousePoint; base.Update(gameTime, Updater); if (ContainsMouse) { GameObject MouseObject = ReturnMouseOver(Updater); HighlightedObject = MouseObject; if (MouseManager.MouseClicked) { if (MouseObject != null) { bool ShouldSelect = !MouseObject.HierarchyDragRectangle.Contains(Updater.RelativeMousePoint); if (KeyboardManager.ControlPressed()) { if (MouseObject.EditorSelected) { ParentScene.RemoveSelected(MouseObject); } else { ParentScene.AddSelected(MouseObject); MouseObject.LeftClick(gameTime); } } else if (KeyboardManager.ShiftPressed()) { ShiftSelect(MouseObject); MouseObject.LeftClick(gameTime); } else { if (ShouldSelect) { ParentScene.ClearSelected(); ParentScene.AddSelected(MouseObject); MouseObject.LeftClick(gameTime); } MouseManager.SetDraggedObject(MouseObject); } WorldViewer.self.NeedsToRedraw = true; ObjectProperties.self.NeedsToRedraw = true; } } if (MouseManager.DraggedObject == null && MouseManager.PreviousDraggedObject != null && MouseManager.PreviousDraggedObject.GetType().IsSubclassOf(typeof(GameObject))) { if (MouseObject != null && Updater.RelativeMousePoint.X < MouseObject.HierarchyBox.X + MouseObject.HierarchyBoxOutline.Width + 2) { MouseObject.HierarchyExpanded = !MouseObject.HierarchyExpanded; MouseObject.ModifyCollection(); } else if (MouseObject != null && MouseManager.PreviousDraggedObject != MouseObject) { GameObject g = MouseManager.PreviousDraggedObject as GameObject; if (!g.HierarchyObjectIschild(MouseObject)) { MouseObject.HierarchyExpanded = true; MouseObject.AddHierarchyObject(g); } } } if (MouseManager.mouseState.RightButton == ButtonState.Pressed && MouseManager.mouseStatePrevious.RightButton == ButtonState.Released) { if (MouseObject != null) { ParentScene.ClearSelected(); ParentScene.AddSelected(MouseObject); MouseObject.RightClick(gameTime); WorldViewer.self.NeedsToRedraw = true; ObjectProperties.self.NeedsToRedraw = true; HierarchyViewer.self.NeedsToRedraw = true; } } } else { HighlightedObject = null; } }