public void AddOpenedEntityGroup(UTinyEntityGroup.Reference entityGroup)
 {
     if (!s_OpenedEntityGroupsProperty.Contains(this, entityGroup))
     {
         s_OpenedEntityGroupsProperty.Add(this, entityGroup);
     }
 }
 public void RemoveEntityGroup(UTinyEntityGroup.Reference entityGroupRef)
 {
     if (m_EntityGroups.Remove(entityGroupRef))
     {
         Invalidate();
     }
 }
 public void AddEntityGroup(UTinyEntityGroup.Reference entityGroupRef)
 {
     if (!m_EntityGroups.Contains(entityGroupRef))
     {
         m_EntityGroups.Add(entityGroupRef);
         Invalidate();
     }
 }
Example #4
0
 private static void RemoveFromTrees(UTinyEntityGroup.Reference entityGroupRef)
 {
     foreach (var window in s_ActiveWindows)
     {
         window.m_TreeView.RemoveEntityGroup(entityGroupRef);
         window.Repaint();
     }
 }
Example #5
0
 private static void AddToTrees(UTinyEntityGroup.Reference entityGroupRef)
 {
     EntityGroupManager?.RecreateEntityGroupGraph(entityGroupRef);
     foreach (var window in s_ActiveWindows)
     {
         window.m_TreeView.AddEntityGroup(entityGroupRef);
         window.Repaint();
     }
 }
Example #6
0
        public void AddEntityGroupReference(UTinyEntityGroup.Reference entityGroup)
        {
            s_EntityGroupsProperty.Add(this, entityGroup);

            if (StartupEntityGroup.Equals(UTinyEntityGroup.Reference.None))
            {
                StartupEntityGroup = entityGroup;
            }
        }
Example #7
0
 private static void AddToTrees(UTinyEntityGroup.Reference entityGroupRef)
 {
     foreach (var window in s_ActiveWindows)
     {
         window.m_TreeView.AddEntityGroup(entityGroupRef);
         window.Repaint();
     }
     InvalidateSceneGraph();
 }
        public void RecreateEntityGroupGraph(UTinyEntityGroup.Reference entityGroupRef)
        {
            var entityGroup = entityGroupRef.Dereference(Registry);

            if (null == entityGroup)
            {
                return;
            }
            m_EntityGroupToGraph[entityGroupRef] = EntityGroupGraph.CreateFromEntityGroup(entityGroup);
        }
Example #9
0
 public void SetActiveEntityGroup(UTinyEntityGroup.Reference entityGroupRef, bool rebuildWorkspace = true)
 {
     if (m_ActiveEntityGroup.Equals(entityGroupRef))
     {
         return;
     }
     m_ActiveEntityGroup = entityGroupRef;
     if (rebuildWorkspace)
     {
         RebuildWorkspace();
     }
 }
Example #10
0
        public void RemoveEntityGroupReference(UTinyEntityGroup.Reference entityGroup)
        {
            if (s_EntityGroupsProperty.Contains(this, entityGroup))
            {
                s_EntityGroupsProperty.Remove(this, entityGroup);
            }

            if (StartupEntityGroup.Equals(entityGroup))
            {
                StartupEntityGroup = m_EntityGroups.FirstOrDefault();
            }
        }
Example #11
0
        public void MoveUp(UTinyEntityGroup.Reference entityGroupRef)
        {
            var index = LoadedEntityGroups.IndexOf(entityGroupRef);

            if (index < 0 || index == 0)
            {
                return;
            }

            m_LoadedEntityGroups.Swap(index, index - 1);
            RebuildWorkspace();
            OnEntityGroupsReordered?.Invoke(LoadedEntityGroups);
        }
        public UTinyEntity.Reference CreateEntity(UTinyEntityGroup.Reference entityGroupRef, bool addTransform)
        {
            var graph = UTinyHierarchyWindow.GetSceneGraph(entityGroupRef);

            if (null == graph)
            {
                return(UTinyEntity.Reference.None);
            }
            var node = addTransform ? graph.Create() : graph.CreateStatic();

            var ids = AsInstanceIds(node);

            Selection.instanceIDs = ids;
            IdsToExpand           = ids;

            UTinyHierarchyWindow.InvalidateSceneGraph();
            return(node.Entity);
        }
Example #13
0
        public UTinyEntity.Reference CreateEntity(UTinyEntityGroup.Reference entityGroupRef, bool addTransform)
        {
            var graph = EntityGroupManager.GetSceneGraph(entityGroupRef);

            if (null == graph)
            {
                return(UTinyEntity.Reference.None);
            }
            var node = addTransform ? graph.Create() : graph.CreateStatic();

            var ids = AsInstanceIds(node);

            Selection.instanceIDs = ids;
            IdsToExpand           = ids;

            UTinyEventDispatcher <ChangeSource> .Dispatch(ChangeSource.SceneGraph);

            return(node.Entity);
        }
Example #14
0
        private void UnloadEntityGroup(UTinyEntityGroup.Reference entityGroupRef, bool rebuildWorkspace = true)
        {
            if (!m_LoadedEntityGroups.Contains(entityGroupRef))
            {
                Debug.Log($"{UTinyConstants.ApplicationName}: Cannot unload the group named '{entityGroupRef.Name}'. It is not loaded");
                return;
            }

            if (m_EntityGroupToGraph.ContainsKey(entityGroupRef))
            {
                OnWillUnloadEntityGroup?.Invoke(entityGroupRef);
                m_EntityGroupToGraph[entityGroupRef].Unlink();
                m_EntityGroupToGraph.Remove(entityGroupRef);
            }
            m_LoadedEntityGroups.Remove(entityGroupRef);

            var entityGroup = entityGroupRef.Dereference(Registry);

            if (null != entityGroup)
            {
                Undo.FlushChanges(entityGroup);
                Undo.FlushChanges(entityGroup.Entities.Deref(entityGroup.Registry));
            }

            if (m_LoadedEntityGroups.Count == 0)
            {
                SetActiveEntityGroup(UTinyEntityGroup.Reference.None, rebuildWorkspace);
            }
            else
            {
                if (entityGroupRef.Id == ActiveEntityGroup.Id)
                {
                    SetActiveEntityGroup(m_LoadedEntityGroups[0]);
                }
            }

            if (rebuildWorkspace)
            {
                RebuildWorkspace();
            }

            OnEntityGroupUnloaded?.Invoke(entityGroupRef);
        }
Example #15
0
        private void LoadEntityGroup(UTinyEntityGroup.Reference entityGroupRef, int index, bool rebuildWorkspace)
        {
            var entityGroup = entityGroupRef.Dereference(Registry);

            if (null == entityGroup)
            {
                Debug.Log($"{UTinyConstants.ApplicationName}: Could not load group named '{entityGroupRef.Name}' as the reference could not be resolved.");
                return;
            }

            if (m_LoadedEntityGroups.Contains(entityGroupRef))
            {
                Debug.Log($"{UTinyConstants.ApplicationName}: Cannot load the group named '{entityGroupRef.Name}'. It is already loaded");
                return;
            }

            if (HierarchyHelper.GetOrGenerateScratchPad(m_Context))
            {
                OnWillLoadEntityGroup?.Invoke(entityGroupRef);
                if (index >= 0 && index < m_LoadedEntityGroups.Count)
                {
                    m_LoadedEntityGroups.Insert(index, entityGroupRef);
                }
                else
                {
                    m_LoadedEntityGroups.Add(entityGroupRef);
                }
                m_EntityGroupToGraph[entityGroupRef] = EntityGroupGraph.CreateFromEntityGroup(entityGroup);
            }

            if (rebuildWorkspace)
            {
                RebuildWorkspace();
            }
            SetActiveEntityGroup(entityGroupRef, rebuildWorkspace);

            OnEntityGroupLoaded?.Invoke(entityGroupRef);
        }
Example #16
0
        public void UnloadAllEntityGroupsExcept(UTinyEntityGroup.Reference entityGroupRef)
        {
            var entityGroupList = Pooling.ListPool <UTinyEntityGroup.Reference> .Get();

            try
            {
                foreach (var entityGroup in LoadedEntityGroups)
                {
                    if (!entityGroup.Equals(entityGroupRef))
                    {
                        entityGroupList.Add(entityGroup);
                    }
                }
                foreach (var entityGroup in entityGroupList)
                {
                    UnloadEntityGroup(entityGroup);
                }
            }
            finally
            {
                Pooling.ListPool <UTinyEntityGroup.Reference> .Release(entityGroupList);
            }
        }
Example #17
0
 public static EntityGroupGraph GetSceneGraph(UTinyEntityGroup.Reference entityGroupRef)
 {
     return(EntityGroupManager?.GetSceneGraph(entityGroupRef));
 }
 public void RemoveOpenedEntityGroup(UTinyEntityGroup.Reference entityGroup)
 {
     s_OpenedEntityGroupsProperty.Remove(this, entityGroup);
 }
        public static IEnumerable <UTinyModule> GetModules(IRegistry registry, UTinyEntityGroup.Reference reference)
        {
            var modules = registry.FindAllByType <UTinyModule>();

            return(modules.Where(module => module.EntityGroups.Contains(reference)));
        }
 private static void SetEntityGroupActive(UTinyEntityGroup.Reference entityGroupRef)
 {
     EntityGroupManager.SetActiveEntityGroup(entityGroupRef, true);
 }
 public UTinyEntity.Reference CreateEntity(UTinyEntityGroup.Reference entityGroupRef)
 {
     return(CreateEntity(entityGroupRef, true));
 }
        public static void ShowEntityGroupContextMenu(this HierarchyTree tree, UTinyEntityGroup.Reference entityGroupRef)
        {
            if (UTinyEntityGroup.Reference.None.Id == entityGroupRef.Id)
            {
                entityGroupRef = EntityGroupManager.ActiveEntityGroup;
            }

            var menu = new GenericMenu();

            if (IsEntityGroupActive(entityGroupRef))
            {
                menu.AddDisabledItem(new GUIContent("Set Active EntityGroup"));
            }
            else
            {
                menu.AddItem(new GUIContent("Set Active EntityGroup"), false, () =>
                {
                    SetEntityGroupActive(entityGroupRef);
                });
            }

            if (EntityGroupManager.LoadedEntityGroups.IndexOf(entityGroupRef) > 0)
            {
                menu.AddItem(new GUIContent("Move EntityGroup Up"), false, () =>
                {
                    EntityGroupManager.MoveUp(entityGroupRef);
                });
            }
            else
            {
                menu.AddDisabledItem(new GUIContent("Move EntityGroup Up"));
            }

            if (EntityGroupManager.LoadedEntityGroups.IndexOf(entityGroupRef) < EntityGroupManager.LoadedEntityGroupCount - 1)
            {
                menu.AddItem(new GUIContent("Move EntityGroup Down"), false, () =>
                {
                    EntityGroupManager.MoveDown(entityGroupRef);
                });
            }
            else
            {
                menu.AddDisabledItem(new GUIContent("Move EntityGroup Down"));
            }

            menu.AddSeparator("");

            if (EntityGroupManager.LoadedEntityGroupCount == 1)
            {
                menu.AddDisabledItem(new GUIContent("Unload EntityGroup"));
                menu.AddDisabledItem(new GUIContent("Unload Other EntityGroups"));
            }
            else
            {
                menu.AddItem(new GUIContent("Unload EntityGroup"), false, () =>
                {
                    EntityGroupManager.UnloadEntityGroup(entityGroupRef);
                });
                menu.AddItem(new GUIContent("Unload Other EntityGroups"), false, () =>
                {
                    EntityGroupManager.UnloadAllEntityGroupsExcept(entityGroupRef);
                });
            }

            menu.AddItem(new GUIContent("New EntityGroup"), false, () =>
            {
                var context = EditorContext;
                if (null == context)
                {
                    return;
                }
                var registry = context.Registry;
                var project  = context.Project;
                CreateNewEntityGroup(project.Module.Dereference(registry));
            });

            menu.AddSeparator("");

            menu.AddItem(new GUIContent("Create Entity"), false, () =>
            {
                tree.CreateEntity(entityGroupRef);
            });

            menu.AddItem(new GUIContent("Create Static Entity"), false, () =>
            {
                tree.CreateStaticEntity(entityGroupRef);
            });

            menu.ShowAsContext();
        }
Example #23
0
 public void LoadEntityGroup(UTinyEntityGroup.Reference entityGroupRef, int index = -1)
 {
     LoadEntityGroup(entityGroupRef, index, true);
 }
Example #24
0
 public void UnloadEntityGroup(UTinyEntityGroup.Reference entityGroupRef)
 {
     UnloadEntityGroup(entityGroupRef, true);
 }
Example #25
0
 public void LoadSingleEntityGroup(UTinyEntityGroup.Reference entityGroupRef)
 {
     LoadEntityGroup(entityGroupRef);
     UnloadAllEntityGroupsExcept(entityGroupRef);
 }
 public UTinyEntity.Reference CreateStaticEntity(UTinyEntityGroup.Reference entityGroupRef)
 {
     return(CreateEntity(entityGroupRef, false));
 }
 private static void HandleEntityGroupWillUnload(UTinyEntityGroup.Reference entityGroupRef)
 {
     UnloadingEntityGroups.Add(entityGroupRef);
 }
 private static bool IsEntityGroupActive(UTinyEntityGroup.Reference entityGroupRef)
 {
     return(EntityGroupManager.ActiveEntityGroup.Equals(entityGroupRef));
 }
 private static void HandleEntityGroupUnloaded(UTinyEntityGroup.Reference entityGroupRef)
 {
     UnloadingEntityGroups.Remove(entityGroupRef);
 }
Example #30
0
 public void SetActiveEntityGroup(UTinyEntityGroup.Reference entityGroupRef)
 {
     SetActiveEntityGroup(entityGroupRef, true);
 }