Beispiel #1
0
        public static void UpdateLeoSystems()
        {
            var gameSystemAsset  = AssetEditorTools.LoadOrCreate <LeoEcsSettingsAsset>(AssetPath);
            var systems          = GetAllSystems();
            var data             = gameSystemAsset.systemsData;
            var systemsContainer = data.systems;

            foreach (var ecsSystem in systems)
            {
                if (systemsContainer.Any(x => x.system?.GetType() == ecsSystem.GetType()))
                {
                    continue;
                }

                var updateType            = PlayerLoopTiming.Update;
                var systemType            = ecsSystem.GetType();
                var updateTimingAttribute = systemType.GetCustomAttribute <UpdateTimingAttribute>();
                updateType = updateTimingAttribute == null ? updateType : updateTimingAttribute.updateType;

                systemsContainer.Add(new EcsSystemData()
                {
                    system     = ecsSystem,
                    systemData = new LeoSystemData()
                    {
                        updateType = updateType,
                    }
                });
            }

            gameSystemAsset.MarkDirty();
            AssetDatabase.Refresh();
        }