Example #1
0
        private static void GenerateNewProjectAssets(
            DirectoryInfo projectDirectory,
            string name,
            IWorldManager worldManager,
            IArchetypeManager archetypeManager,
            IPersistenceManager persistenceManager
            )
        {
            // Create config entity
            var configEntity = worldManager.CreateEntity(archetypeManager.Config);

            worldManager.EntityManager.SetComponentData(configEntity, DisplayInfo.Default);

            // Generate main scene
            var cameraEntity = worldManager.CreateEntity("Camera", archetypeManager.Camera);

            worldManager.EntityManager.SetComponentData(cameraEntity, Camera2D.Default);
            worldManager.EntityManager.SetComponentData(cameraEntity, DomainCache.GetDefaultValue <Camera2D>());
            worldManager.EntityManager.SetComponentData(cameraEntity, DomainCache.GetDefaultValue <Rotation>());
            worldManager.EntityManager.SetComponentData(cameraEntity, DomainCache.GetDefaultValue <NonUniformScale>());

            using (var entities = new NativeArray <Entity>(cameraEntity.AsArray(), Allocator.Temp))
            {
                var scene     = SceneManager.Create(worldManager.EntityManager, entities, Guid.NewGuid());
                var sceneFile = projectDirectory.Combine("Scenes").GetFile("MainScene.scene");
                sceneFile.Directory.EnsureExists();
                persistenceManager.SaveScene(worldManager.EntityManager, scene, sceneFile.FullName);

                var sceneReference = new SceneReference {
                    SceneGuid = scene.SceneGuid.Guid
                };

                AddScene(worldManager.EntityManager, worldManager.GetConfigEntity(), sceneReference);
                AddStartupScene(worldManager.EntityManager, worldManager.GetConfigEntity(), sceneReference);
            }

            // Generate configuration scene
            using (var entities = new NativeArray <Entity>(configEntity.AsArray(), Allocator.Temp))
            {
                var configurationScene = SceneManager.Create(worldManager.EntityManager, entities, ConfigurationScene.Guid);
                var configurationFile  = projectDirectory.GetFile(name).ChangeExtension("configuration");
                configurationFile.Directory.EnsureExists();
                persistenceManager.SaveScene(worldManager.EntityManager, configurationScene, configurationFile.FullName);

                // Hack: remove scene guid/instance id and persistence id
                worldManager.EntityManager.RemoveComponent <SceneGuid>(configEntity);
                worldManager.EntityManager.RemoveComponent <SceneInstanceId>(configEntity);
            }
        }
Example #2
0
        public override void Load()
        {
            m_BindingsContext            = new BindingContext(Session);
            m_Undo                       = Session.GetManager <IEditorUndoManager>();
            m_Undo.UndoRedoBatchStarted += HandleUndoRedoBatchStarted;
            m_Undo.UndoRedoBatchEnded   += HandleUndoRedoBatchEnded;

            m_WorldManager     = Session.GetManager <IWorldManagerInternal>();
            m_ArchetypeManager = Session.GetManager <IArchetypeManager>();
            m_SceneManager     = Session.GetManager <IEditorSceneManagerInternal>();
            m_ComponentCache   = Session.GetManager <UnityComponentCacheManager>();
            Session.GetManager <IChangeManager>().RegisterChangeCallback(HandleChanges, int.MaxValue);
            UnityEditor.Undo.postprocessModifications += HandleInvertedChanges;
            EditorApplication.hierarchyChanged        += HandleHierarchyChanges;
            m_TransferMap = new NativeHashMap <EntityGuid, EntityGuid>(1024, Allocator.Persistent);
        }
 public ArchetypeController(IAzureTableStorage tableStorage, IArchetypeManager archetypeManager)
 {
     _tableStorage     = tableStorage;
     _archetypeManager = archetypeManager;
 }