void Start() { // void can be switched to IEnumerator for support coroutines. _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif var gameState = new GameState(); _systems // register your systems here: .Add(new InitializeFieldSystem()) .Add(new CreateCellViewSystem()) .Add(new SetCameraSystem()) .Add(new ControlSystem()) .Add(new AnalyzeClickSystem()) .Add(new CreateTakenViewSystem()) //»спользует компоент 1 кадр, после чего удал¤ет компонент .OneFrame <UpdateCameraEvent> () .OneFrame <Clicked> () // .OneFrame<TestComponent2> () // внедрение внешних данных .Inject(Configuration) .Inject(SceneData) .Inject(gameState) // .Inject (new NavMeshSupport ()) .Init(); }
void Start() { _world = new EcsWorld(); #if UNITY_EDITOR UnityIntegration.EcsWorldObserver.Create(_world); #endif _systems = new EcsSystems(_world); _systems #if !LEOECS_DISABLE_INJECT .Add(_uiEmitter) .Add(new TestUiClickEventSystem()) .Add(new TestUiDragEventSystem()) .Add(new TestUiEnterExitEventSystem()) .Add(new TestUiInputEventSystem()) .Add(new TestUiScrollViewEventSystem()) #else .Add(_uiEmitter.SetWorld(_world)) .Add(new TestUiClickEventSystem(_world)) .Add(new TestUiDragEventSystem(_world)) .Add(new TestUiEnterExitEventSystem(_world)) .Add(new TestUiInputEventSystem(_world)) .Add(new TestUiScrollViewEventSystem(_world)) #endif .Initialize(); #if UNITY_EDITOR UnityIntegration.EcsSystemsObserver.Create(_systems); #endif }
void OnDisable() { _systems.Destroy(); _systems = null; _world.Destroy(); _world = null; }
private void OnEnable() { _ecsWorld = new EcsWorld(); _systems = new EcsSystems(_ecsWorld); _gameState = new GameState(); _tilesPool = gameObject.GetComponentInChildren <TilesPool>(); _tilesPool.Prewarm(20, configuration.tileView); _audioSource = GetComponent <AudioSource>(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_ecsWorld); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems .Add(new TempoEmitSystem()) .Add(new TempoTileSpawnerSystem()) .Add(new TempoTilesMoveSystem()) .Add(new TempoHitSystem()) .Inject(_gameState) .Inject(configuration) .Inject(_tilesPool) .Inject(_audioSource) .OneFrame <TempoEvent>() .OneFrame <TempoHitEvent>() .Init(); }
public void Run(EcsSystems systems) { foreach (var entity in _filter) { _pool.Del(entity); } }
void Awake() { world = new EcsWorld(); systems = new EcsSystems(world); var random = new Random(); var resourceIds = configuration.resourceElementDefinitions.Select(o => o.uid).ToArray(); dependencyContainer = new DependencyContainer { Random = random, Configuration = configuration, ServerStubConfiguration = serverStubConfiguration, ResourceIds = resourceIds, Server = new ServerStub(serverStubConfiguration, random, resourceIds) }; systems.Add(new InitializeResourcesProcessing(world, dependencyContainer)) .Add(new UserInputProcessing(world, dependencyContainer)) .Add(new PlayerMovementProcessing(dependencyContainer)) .Add(new ResourceItemSpawnProcessing(world, dependencyContainer)) .Add(new ServerResourceChangedEventProcessing(world, dependencyContainer)) .Add(new UpdateResourcesProcessing()) .OneFrame <ResourceAmountChangedEventComponent>() .Inject(dependencyContainer) .Init(); }
void Start() { _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif var _runtime = new RuntimeData(); Service <RuntimeData> .Set(_runtime); UI _ui = GetOrSetUI(_config); Service <EcsWorld> .Set(_world); Service <StaticData> .Set(_config); Service <SceneData> .Set(_scene); _systems .Add(new InitializeSystem()) .Add(new ChangeGameStateSystem()) .Add(new WinSystem()) .Add(new LoseSystem()) .Inject(_runtime) .Inject(_config) .Inject(_scene) .Inject(_ui) .Init(); }
void Start() { // void can be switched to IEnumerator for support coroutines. _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems .Add(new InputSystem()) .Add(LogicSystems()) .Add(ViewSystems()) .Add(new DestroySystem()) // register one-frame components (order is important): .OneFrame <PositionUpdatedFlag>() .OneFrame <Ecs.Input>() .OneFrame <Drag>() .OneFrame <PlaceItemFlag>() //.OneFrame<ThreadChunk>() .OneFrame <DestroyedFlag>() // inject service instances here (order doesn't important): .Inject(GetComponent <IInputService>()) .Inject(GetComponent <IViewService>()) .Inject(GetComponent <IInventoryService>()) .Inject(new GameWorld()) .Inject(new Random()) .Init(); }
public void Destroy() { _systems?.Destroy(_worlds); _systems = null; _worlds?.Destroy(); _worlds = null; }
public void Init() { systems = new EcsSystems(world); systems .Add(new StartGameSystem()) .Add(new ClearLevelSystem()) .Add(new LevelGenerationSystem()) .Add(new EndGameSystem()) .Add(new DoomSystem()) .Add(new LevelTimerSystem()) .Add(new EndGameTimerUpdaterSystem()) .Add(new CameraControllerSystem()) .Add(new MapsExploringSystem()) .Add(new DebugLogErrorsSystem()) .Add(new ChangeDebugUIState()) .Add(new MapObjectsExploringSystem()) .Add(new WallsExploringSystem()) .Add(new WallDestroyingSystem()) .Add(new LookToCameraSystem()) .Add(new DirectionArrowsSystem()) .Add(new ObjectsRotationSystem()) .Add(new ObjectMovingSystem()) .Add(new CameraZoomSystem()) .Inject(gameData) .Inject(levelData) .Inject(runtimeData) .OneFrame <MessageComponent>() .OneFrame <ExploreComponent>() .Init(); }
public void Dispose() { Systems.Destroy(); Systems = null; World.Destroy(); World = null; }
public void Init() { systems = new EcsSystems(world); systems .Add(new PlayerSpawnSystem()) .Add(new PlayerTargetSystem()) .Add(new PlayerMiningSystem()) .Add(new PlayerMovingSystem()) .Add(new PlayerStopMiningSystem()) .Add(new PlayerStopMovingSystem()) .Add(new SpawnEscapedPlayersSystem()) .Add(new PlayerExitSystem()) .Add(new HeadSizeChangingSystem()) .Add(new PlayerMiningCompleteSystem()) .Add(new PlayerMovingCompleteSystem()) .Add(new MinigProgressSystem()) .Add(new SkinColorChangingSystem()) .Add(new PlayerRemovingSystem()) .Add(new EnableNavmeshAgentDelaySystem()) .Add(new PlayerHudRemovingSystem()) .Add(new LeaderBoardSystem()) .Add(new PlayerUsingSystem()) .Add(new ChangeHatSystem()) .Add(new SavePlayersSystem()) .Add(new LoadPlayersSystem()) .Inject(gameData) .Inject(levelData) .Inject(runtimeData); systems.Init(); }
public void Init() { systems = new EcsSystems(world); systems .Add(new PlayerEnterSystem()) .Add(new DirectionCommandsSystem()) .Add(new StatsMessagesSystem()) .Add(new HelpMessagesSystem()) .Add(new ColorCommandSystem()) .Add(new HeadSizeCommandSystem()) .Add(new ExitCommandSystem()) .Add(new UpgradeSystem()) .Add(new TasksBreakSystem()) .Add(new TaskCompleteSystems()) .Add(new UseCommandSystem()) .Add(new HatCommandSystem()) .Inject(gameData.TwitchCommands) .Inject(runtimeData) .Inject(gameData) .OneFrame <MessageComponent>() .Init(); }
void Start() { World = new EcsWorld(); _systems = new EcsSystems(World) //InitSystems .Add(new LevelSetupSystem()) //RunSystems .Add(new PlaySystem()) .Add(new GameStateProcessSystem()) .Add(new UpgradeSystem()) .Add(new IncomeProcessSystem()) .Add(new GameStateProcessSystem()) .Add(new GameSaveSystem()) //DestroySystems .Add(new EndGameSystem(0)) //TODO: manage scene idx in convenient readable form .Inject(_currentLevel) .Inject(_root) .Inject(_configuration) .Inject(_game) .Inject(_saveService) .OneFrame <PlayModeEvent>() .OneFrame <IncomeEvent>() .OneFrame <UpgradeCharacterEvent>(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(World); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems?.Init(); }
void Start() { // void can be switched to IEnumerator for support coroutines. _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems // register your systems here, for example: .Add(new GameInitSystems()) .Add(new InputSystem()) .Add(new MoveObjectSystem()) .Add(new CreateViewSystem()) .Add(new MoveViewSystem()) // register one-frame components (order is important), for example: .OneFrame <EcsInput>() .OneFrame <UpdatePositionFlag>() // inject service instances here (order doesn't important), for example: .Inject(GetComponent <IViewService>()) .Inject(GetComponent <IInputService>()) .Inject(new Rnd(0)) .Init(); }
public void Init(EcsSystems systems) { var worldConstraints = systems.GetWorld(PhysicsWorldNames.Constraints); springsBodyBody = worldConstraints.Filter <SpringBodyBody>().End(); springsBodySpace = worldConstraints.Filter <SpringBodySpace>().End(); }
void Start() { // create ecs environment. _world = new EcsWorld(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); #endif _systems = new EcsSystems(_world) .Add(new DemoInitSystem()) .Add(new InputSystem()) .Add(new PlayerMoveSystem()) .Add(new PlayerViewCreateSystem()) .Add(new PlayerViewUpdatePositionSystem()) .Inject(GetComponent <IViewService>()) .Inject(GetComponent <IInputService>()) .OneFrame <Ecs.Input>() .OneFrame <PositionUpdated>() ; _systems.Init(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif }
void Start() { _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems .Add(new GameInitSystem()) .Add(new GridViewSystem()) .Add(new GamePauseSystem()) .Add(new SnakeViewSystem()) .Add(new InputSystem()) .Add(new MoveSystem()) .Add(new SnakeTailSystem()) .Add(new FoodSystem()) .Add(new LevelProgresSystem()) .Add(new ColorPaletteSystem()) .Add(new GameOverSystem()) .Add(new UISystem()) .Add(new CameraPositionSystem()) .OneFrame <TailComponent>() .OneFrame <LevelProgressEvent>() .OneFrame <ColorUpdateComponent>() .Inject(new LevelProgress()) .Inject(Configuration) .Inject(SceneData) .Inject(UIData) .Inject(UIDataStart) .Init(); }
private void Start() { _world = new EcsWorld(); // Инициализация окружения _world _systems = new EcsSystems(_world); // Инициализация систем окружения _systems //Добавление систем к инициализации в окружении _systems .Add(new GameInitSystem()) .Add(new EnemyInitSystem()) .Add(new PlayerInputSystem()) .Add(new MoveSystem()) .Add(new CameraSystem()) .Add(new ShotSystem()) .Add(new BonusInitSystem()) //Внедрение зависимостей со сцены во все системы //Отлов зависимостей внутри систем => ECSFilter<T>, where T [anyAllowed]Component .Inject(playerStartPoint) .Inject(weaponController) .Inject(startButton) .Inject(waypoints) .Inject(spawnerContainer) /* * .Inject(levelSpawners)*/; //Инициализация систем _systems.Init(); }
void IEcsSystemsDebugListener.OnSystemsDestroyed(EcsSystems systems) { // for immediate unregistering this MonoBehaviour from ECS. OnDestroy(); // for delayed destroying GameObject. Destroy(gameObject); }
/// <summary> /// Click LMB to choose start point, click LMB another time to choose end point and create segment. /// Next LMB clicks will create segments with end point = current mouse position, start point = previous end point. /// Click RMB to stop. /// </summary> public void Run(EcsSystems systems) { var factory = sharedData.ObjectsFactory; var keys = sharedData.Keys; var mousePositionWorld = keys.GetMousePosition() * sharedData.RenderData.PixelsToMeters; if (keys.IsKeyPressed(MouseButtons.Left)) { if (!started) { start = mousePositionWorld; started = true; } else { factory.CreateSegment(start, mousePositionWorld, 0.9f); start = mousePositionWorld; } } if (keys.IsKeyPressed(MouseButtons.Right)) { started = false; } }
void Start() { // void can be switched to IEnumerator for support coroutines. _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems // register your systems here, for example: .Add(new GameInitSystem()) .Add(new CarInputSystem()) .Add(new MoveCarSystem()) .Add(new DragSystem()) .Add(new VictimDamaginSystem()) .Add(new VictimAISystem()) // register one-frame components (order is important), for example: // .OneFrame<TestComponent1> () // .OneFrame<TestComponent2> () // inject service instances here (order doesn't important), for example: .Inject(_gameData) .Init(); }
public void Init(EcsSystems systems) { var world = systems.GetWorld(worldName); _filter = world.Filter <T> ().End(); _pool = world.GetPool <T> (); }
void OnRunSystemsGUI(EcsSystems systems) { var runList = _runList.Count > 0 ? _runList.Pop() : null; var count = systems.GetRunSystems(ref runList); if (count > 0) { EditorGUI.indentLevel++; for (var i = 0; i < count; i++) { var asSystems = runList[i] as EcsSystems; var name = asSystems != null ? asSystems.Name : runList[i].GetType().Name; systems.DisabledInDebugSystems[i] = !EditorGUILayout.ToggleLeft(name, !systems.DisabledInDebugSystems[i]); if (asSystems != null) { GUI.enabled = !systems.DisabledInDebugSystems[i]; OnRunSystemsGUI(asSystems); if (systems.DisabledInDebugSystems[i]) { GUI.enabled = true; } } runList[i] = null; } EditorGUI.indentLevel--; } _runList.Push(runList); }
public Game(EcsWorld world, EcsSystems systems, MapGenerator mapGenerator, ILogger logger) { World = world; Systems = systems; Logger = logger; MapGenerator = mapGenerator; }
public override void InitSystems(out EcsSystems update, out EcsSystems draw, out EcsSystems systems) { if (game == null) { throw new Exception(); } sheets = new(new GenIdxAllocator()); tilesets = new(new GenIdxAllocator()); levels = new(new GenIdxAllocator()); update = new EcsSystems(world) .Add(new SheetLoader()) .Add(new TilesetLoader()) .Add(new LevelLoader()) .Add(new AABBs()) .Add(new Animated()); draw = new EcsSystems(world) .Add(new Renderer()); systems = new EcsSystems(world) .Inject(sheets) .Inject(tilesets) .Inject(levels); }
void OnDisable() { _systems.Dispose(); _systems = null; _world.Dispose(); _world = null; }
void Start() { _world = new EcsWorld(); _systems = new EcsSystems(_world); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_systems); #endif _systems .Add(new GameInitSystems()) .Add(new InputSystem()) .Add(new UpdatePlayerMoveTimerSystem()) .Add(new MovePlayerSystem()) .Add(new CreateViewSystem()) .Add(new MoveViewSystem()) .OneFrame <Ecs.Input>() .OneFrame <UpdatePositionFlag>() .Inject(GetComponent <IViewService>()) .Inject(GetComponent <IInputService>()) .Init(); }
// The constructor initializes all the fields public Game(MainWindow mainWindow) { this.mainWindow = mainWindow; // Create new ecs world instance Logger.Info("Creating world instance."); world = new EcsWorld(); // Create the ecs systems Logger.Info("Creating systems."); systems = new EcsSystems(world) .Add(new SnakeSystem(this)) .Add(new FoodSystem(this)); // Initialize systems Logger.Info("Initializing systems."); systems.Initialize(); // Set initial score Logger.Info("Setting initial score."); SetScore(0); // Setup game Logger.Info("Setting up game entities."); GameSetup(); }
void OnEnable() { _world = new EcsWorld(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(_world); #endif _gameplaySystems = new EcsSystems(_world) //.Add(jitEmitter) .Add(new InitializePlayerSystem()) .Add(new InitializeCameraSystem()) .Add(new InputSystem(joystick, jumpButton)) //.Add(new FrameSelectionSystem()) //.Add(new RecorderSystem()) //.Add(new ReplaySystem()) .Add(new CameraFollowSystem()) .Add(new PlayerDieSystem()); _gameplaySystems.Initialize(); _physicsSystems = new EcsSystems(_world) .Add(new PlayerMoveSystem()) .Add(new PlayerJumpSystem()); _physicsSystems.Initialize(); #if UNITY_EDITOR Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(_gameplaySystems); #endif }