示例#1
0
        public void Init()
        {
            HeadFeature?.Init(RootSystems);
            MainFeature?.Init(RootSystems);
            TailFeature?.Init(RootSystems);

            _debugger?.Init(RootSystems, World);

            RootSystems.ProcessInjects();
            RootSystems.Init();
        }
示例#2
0
        public void Start()
        {
            erosionShader          = Resources.Load <ComputeShader>("ComputeShaders/Erosion");
            heightMapComputeShader = Resources.Load <ComputeShader>("ComputeShaders/HeightMap");
            world = new EcsWorld();

            systems = new EcsSystems(world)
                      .Add(new GenerateHeightMapSystem())
                      .Add(new ErodeSystem())
                      .Add(new ConstructMeshSystem());

            systems.ProcessInjects();
            systems.Init();
        }
示例#3
0
        private void Start()
        {
            // Bind models to view models
            FindObjectOfType <StaminaViewModel>().Bind(_staminaModel);
            FindObjectOfType <HealthViewModel>().Bind(_healthModel);

#if UNITY_EDITOR
            CreateInspector();
#endif
            // Prepare systems
            PrepareUpdateSystems();
            PrepareFixedUpdateSystems();
            // Merge systems
            _update.ProcessInjects();
            _fixedUpdate.ProcessInjects();
            // Init systems
            _fixedUpdate.Init();
            _update.Init();
        }
示例#4
0
    private void Start()
    {
        ecsWorld    = new EcsWorld();
        initSystems = new EcsSystems(ecsWorld)
                      .Add(new PlayerInitSystem())
                      .Add(new TubeInitSystem())
                      .Add(new TriggerInitSystem());
        updateSystems = new EcsSystems(ecsWorld)
                        .Add(new PlayerJumpSystem())
                        .Add(new TubeMoveSystem())
                        .Add(new HitSystem())
                        .OneFrame <Hit>();

        initSystems.ProcessInjects();
        updateSystems.ProcessInjects();

        initSystems.Init();
        updateSystems.Init();
    }
示例#5
0
        protected virtual void FinalizeSystems()
        {
            fixedUpdateSystems.ProcessInjects();
            updateSystems.ProcessInjects();
            lateUpdateSystems.ProcessInjects();

                        #if UNITY_EDITOR
            gizmosSystems.ProcessInjects();
                        #endif

            fixedUpdateSystems.Init();
            updateSystems.Init();
            lateUpdateSystems.Init();

                        #if UNITY_EDITOR
            gizmosSystems.Init();
                        #endif

            isRunning = true;
        }
示例#6
0
    private void StartDistinct()
    {
        _world = new EcsWorld();
        var ecsSystems = new EcsSystems(_world)
                         .Add(new MotionTargetInitSystem()
        {
            prefab = _prefab,
            amount = _amount,
            radius = _radius
        });

        ecsSystems.ProcessInjects();
        ecsSystems.Init();

        _systems.Add(ecsSystems);

        ecsSystems = new EcsSystems(_world)
                     .Add(new MotionTargetInitSystem()
        {
            prefab = _prefab,
            amount = _amount,
            radius = _radius
        });
        ecsSystems.ProcessInjects();
        ecsSystems.Init();

        _systems.Add(ecsSystems);

        ecsSystems = new EcsSystems(_world)
                     .Add(new MotionTargetInitSystem()
        {
            prefab = _prefab,
            amount = _amount,
            radius = _radius
        });
        ecsSystems.ProcessInjects();
        ecsSystems.Init();

        _systems.Add(ecsSystems);
    }
        public void Start()
        {
            var lss = new LocalSharedState();

            lss.Count = _options.ComponentsCount;

            var worldCfg = new EcsWorldConfig()
            {
                FilterEntitiesCacheSize = lss.Count,
                WorldEntitiesCacheSize  = lss.Count,
            };

            _world   = new EcsWorld(worldCfg);
            _systems = new EcsSystems(_world);
            _systems
            .Add(new InitSystem())
            .Add(new MoveSystem())
            .Inject(lss)
            ;
            _systems.ProcessInjects();
            _systems.Init();
        }
示例#8
0
    private void OnEnable()
    {
        ecsWorld       = new EcsWorld();
        systems        = new EcsSystems(ecsWorld);
        systemsPhysics = new EcsSystems(ecsWorld);
        random         = new System.Random();

#if UNITY_EDITOR
        Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create(ecsWorld);
        Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create(systems);
#endif

        systems
        .Add(new InputControllerSystem())
        .Add(new MovementSystem())
        .Add(new RotationSystem())
        .Add(new CooldownRateSystem())
        .Add(new FireSystem())
        .Add(new ProjectileMoveSystem())
        .Add(new DamageSystem())
        .Add(new HpShowSystem())
        .Add(new PhotonHealthPointSystem())
        .Add(new PlayerSpawnSystems())
        .Add(new DestroySystem())
        .Add(new SpawnCaptureSystem())
        .Add(new SpawnInitSystem())
        .Add(new CrossCaptureSystem())
        .Add(new ProjectileLifetimeSystem())
        .Add(new DestroyedCounter())
        .Add(new PerkInitSystem())
        .Add(new ProgressSystem())
        .Add(new PerkSystem())

        .Add(new AIControllerSystem())
        .Add(new AIMoveDirectionSystem())
        .Add(new AIRotationSystem())
        .Add(new AIFireSystem())
        .Add(new AIPerkSystem())



        .Add(new Perk1System())
        .Add(new Perk2System())
        .Add(new Perk3System())
        //.Add(new AIMoveDirectionSystem())
        //.Add(new AIMoveDirectionSystem())
        .OneFrame <PhotonHealthPointEvent>()
        .OneFrame <ProjectileCollisionEvent>()
        .OneFrame <PlayerSpawnEvent>()
        .OneFrame <DestroyEvent>()
        .OneFrame <ProgressEvent>()

        .OneFrame <Perk1>()
        .OneFrame <Perk2>()
        .OneFrame <Perk3>()

        .Inject(gameManager)
        .Inject(joystick);


        systemsPhysics
        //.Add(new CarAccelerationSystem())
        //.Add(new CarDecelerationSystem())
        .Inject(gameManager);

        systems.ProcessInjects();
        systemsPhysics.ProcessInjects();
    }
示例#9
0
        public void Start()
        {
            var ss       = CreateSharedState(_options);
            var worldCfg = new EcsWorldConfig()
            {
                FilterEntitiesCacheSize = _options.EntitiesMax,
                WorldEntitiesCacheSize  = _options.EntitiesMax,
            };

            _world = new EcsWorld(worldCfg);

            _systems = new EcsSystems(_world, "RUN SYSTEMS");

            _systems
            .Add(new InitSystem())
            .Add(new TimeSystem())
            .Add(new ShootSystem())
            .Add(new BulletSystem())
            .Add(new MoveSystem())
            ;

            AddActorTypeSystemsByTypeCount();

            if (_isRendering)
            {
                _systems
                .Add(new ActorViewUpdateSystem())
                .Add(new BulletViewDeleteSystem())
                .Add(new BulletViewUpdateSystem())
                ;
            }

            _systems
            .Add(new BulletDeleteSystem())
            ;

            _systems
            .Inject(ss)
            .Inject(new TimeService())
            .Inject(new ActorService())
            .Inject(new BulletService())
            ;

            if (_isRendering)
            {
                var bullet            = _options.BulletPrefab;
                var bulletViewService = new BulletViewService()
                {
                    Pool = new Pool <Transform>(
                        () =>
                    {
                        var tr = Object.Instantiate(bullet).transform;
                        tr.gameObject.SetActive(false);
                        return(tr);
                    }, 2),
                    Views = new Dictionary <int, Transform>()
                };
                var actor = _options.ShooterPrefab;

                var actorViewService = new ActorViewService()
                {
                    Pool = new Pool <Transform>(
                        () =>
                    {
                        var tr = Object.Instantiate(actor).transform;
                        tr.gameObject.SetActive(false);
                        return(tr);
                    }, 2),
                    Views = new Dictionary <int, Transform>()
                };

                _systems
                .Inject(bulletViewService)
                .Inject(actorViewService)
                ;
            }

            _systems.ProcessInjects();
            _systems.Init();
        }