Esempio n. 1
0
    private void AddRayPoint(Vector3 outside, Vector3 direction, int pointIndex)
    {
        if (pointIndex > 100)
        {
            return;
        }

        RaycastHit hit;

        if (Physics.Raycast(outside, direction, out hit, 50f))
        {
            player.Get3(0).lineRenderer.positionCount = pointIndex + 1;
            player.Get3(0).lineRenderer.SetPosition(pointIndex, hit.point);

            Vector3 firstVector = outside - hit.point;
            float   angle       = Vector3.Angle(Quaternion.AngleAxis(-90, Vector3.up) * hit.normal, firstVector);

            AddRayPoint(hit.point, Quaternion.AngleAxis(90 - angle, Vector3.up) * hit.normal, pointIndex + 1);
        }
        else
        {
            player.Get3(0).lineRenderer.positionCount = pointIndex + 1;
            player.Get3(0).lineRenderer.SetPosition(pointIndex, outside + direction * 50);
        }
    }
Esempio n. 2
0
        void IEcsRunSystem.Run()
        {
            if (_tank.Get2(0)[email protected])
            {
                _health.transform.position = _sceneInfo._cam.WorldToScreenPoint(_tank.Get2(0).transform.position + new Vector3(0, 0, 2.5f));
                _health.value = _tank.Get3(0).health.Remap(0, _tank.Get3(0).startHealth, 0, 1);
            }
            else
            {
                _health.gameObject.SetActive(false);
            }

            foreach (var i in _state)
            {
                switch (_state.Get1(i).gameState)
                {
                case GameState.Play:
                    break;

                case GameState.Pause:
                    break;

                case GameState.End:
                    _endGame.SetActive(true);
                    break;

                case GameState.Quit:
                    break;
                }
            }
        }
Esempio n. 3
0
        public void Run()
        {
            foreach (int level in _levelEntities)
            {
                ref var levelState = ref _levelEntities.Get1(level).LevelState;
                if (levelState == LevelState.GameEnded)
                {
                    // update win/loose text
                    foreach (int finish in _finishedEnitites)
                    {
                        var  playerComponent = _finishedEnitites.Get1(finish);
                        bool win             = _finishedEnitites.Get3(finish).Win;
                        Debug.Log($"Player {playerComponent.Id} {(win ? "win" : "loose")}");

                        _sceneData.finishText.GetComponent <TextMeshProUGUI>().text =
                            $"Player {playerComponent.Id} {(win ? "win" : "loose")}";
                        _inputManager.RestartButton.gameObject.SetActive(true);
                    }

                    // update score text
                    if (!_finishedEnitites.IsEmpty())
                    {
                        string scoreText = "";
                        foreach (int player in _playerEnitites)
                        {
                            var playerComponent = _playerEnitites.Get1(player);
                            scoreText += $"Player {playerComponent.Id}: {playerComponent.Score} {Environment.NewLine}";
                        }
                        _sceneData.scoreText.GetComponent <TextMeshProUGUI>().text = scoreText;
                    }
                }
            }
Esempio n. 4
0
 public void Run()
 {
     foreach (var i in _filter)
     {
         _filter.Get3(i).Value += (_filter.Get1(i).Value + _filter.Get2(i).Value) * Time;
     }
 }
Esempio n. 5
0
        void IEcsRunSystem.Run()
        {
            _lookup.Clear();

            foreach (var i in _otherPositions)
            {
                _lookup[_otherPositions.Get1(i).Value] = _otherPositions.GetEntity(i);
            }

            foreach (var i in _takenPositions)
            {
                _takenPositions.GetEntity(i).Del <Vacant>();

                var position = _takenPositions.Get3(i).Value;

                MarkNeighbours(TileGridUtils.TopNeigbours);
                MarkNeighbours(TileGridUtils.LeftNeighbours);
                MarkNeighbours(TileGridUtils.RightNeigbours);

                void MarkNeighbours(Int3[] neigbours)
                {
                    foreach (var coord in neigbours)
                    {
                        if (_lookup.TryGetValue(position + coord, out var entity))
                        {
                            entity.Get <Vacant>();
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        public void Run()
        {
            foreach (var i in entities)
            {
                ref var movement        = ref entities.Get2(i);
                var     currentPosition = entities.Get1(i).position;
                var     targetPosition  = entities.Get3(i).target;

                Directions?newHeading       = null;
                Directions?alternateHeading = null;
                var        sqrMagnitude     = (targetPosition - currentPosition).sqrMagnitude;
                foreach (var direction in DirectionUtils.availableDirections)
                {
                    var possiblePosition = direction.GetPosition(currentPosition);
                    if (WallOnPosition(possiblePosition))
                    {
                        continue;
                    }

                    var possibleSqrMagnitude = (targetPosition - possiblePosition).sqrMagnitude;
                    if (possibleSqrMagnitude <= sqrMagnitude)
                    {
                        newHeading   = direction;
                        sqrMagnitude = possibleSqrMagnitude;
                    }
                    else
                    {
                        alternateHeading = direction;
                    }
                }

                movement.heading = newHeading ?? alternateHeading ?? movement.heading;
            }
Esempio n. 7
0
 public void Run()
 {
     foreach (var i in _actors)
     {
         ref var rotation = ref _actors.Get3(i);
         rotation.Value = rotation.Value.Rotate(_time.DeltaTime * RotationSpeed);
     }
Esempio n. 8
0
        public void Run()
        {
            foreach (var id in turretFilter)
            {
                ref var turret = ref turretFilter.Get1(id);
                var     tankRB = turretFilter.Get2(id).RB;
                var     aiming = turretFilter.Get3(id);

                //назначаем поворот по умолчанию, как у танка
                var newTurretRotation = tankRB.rotation;
                var newBarrelRotation = tankRB.rotation;
                var speed             = turret.RotateSpeed * Time.deltaTime;

                if (aiming.IsTargetExist)
                {
                    //получаем поворот к цели, если она есть и она не слишком близко
                    if (Vector3.Distance(aiming.AimPosition, turret.TurretTransform.position) > turret.MaxDistanceToTarget)
                    {
                        //поворачиваем башню вокруг вертикальной оси танка
                        TurretRotation(ref turret, tankRB, aiming.AimPosition, speed);

                        //поворачиваем дуло танка
                        BarrelRorartion(ref turret, aiming.AimPosition, speed);
                    }
                    else
                    {
                        DefaultRotation(ref turret, newBarrelRotation, newBarrelRotation, speed);
                    }
                }
                else
                {
                    DefaultRotation(ref turret, newBarrelRotation, newBarrelRotation, speed);
                }
            }
 void IEcsRunSystem.Run()
 {
     // add your run code here.
     foreach (var index in _filterMovingEnemy)
     {
         ref TransformRef  TransformRefComponent  = ref _filterMovingEnemy.Get3(index);
         ref GameEntityRef GameEntityRefComponent = ref _filterMovingEnemy.Get2(index);
Esempio n. 10
0
        void IEcsRunSystem.Run()
        {
            if (_gameState.Score % 10 != 0 || _newCubeFilter.IsEmpty() || !NewCubeIsOnTop())
            {
                return;
            }

            _scene.Camera.transform.DOLocalMove(new Vector3(0, 10f, 10f), 1f).SetRelative(true);

            bool NewCubeIsOnTop()
            {
                var maxCubeY = 0;

                foreach (var i in _cubeFilter)
                {
                    var cubeY = _cubeFilter.Get2(i).Value.y;
                    if (cubeY > maxCubeY)
                    {
                        maxCubeY = cubeY;
                    }
                }
                var newCubeY = _newCubeFilter.Get3(0).Value.y;

                return(newCubeY > maxCubeY);
            }
        }
Esempio n. 11
0
 public void Run()
 {
     for (int i = 0, iMax = _filter.GetEntitiesCount(); i < iMax; i++)
     {
         _filter.Get3(i).Value += (_filter.Get1(i).Value + _filter.Get2(i).Value) * Time;
     }
 }
Esempio n. 12
0
 public void Run()
 {
     foreach (int player in _playerEntities)
     {
         PlayerControl(ref _playerEntities.Get1(player), _playerEntities.Get2(player),
                       ref _playerEntities.Get3(player));
     }
 }
Esempio n. 13
0
        void IEcsRunSystem.Run()
        {
            foreach (var i in _enemies)
            {
                if (_enemies.Get2(i)[email protected])
                {
                    _enemies.Get1(i).agent.SetDestination(_tank.Get2(0).transform.position);
                }

                if (!_enemies.Get2(i)[email protected]&& Time.time - startTime >= _sceneInfo._gameProfile.spawnDelay)
                {
                    _enemies.Get2(i).transform.position = NavMeshExtentions.GetRandomPoint(Vector3.zero, 70, 8);
                    _enemies.Get3(i).health             = _enemies.Get3(i).startHealth;
                    _enemies.Get2(i)[email protected](true);
                    startTime = Time.time;
                    break;
                }
            }
        }
Esempio n. 14
0
 void IEcsRunSystem.Run()
 {
     foreach (var i in _filter)
     {
         var direction = (Vector3)_filter.Get2(i).Value;
         var position  = _filter.Get3(i).Value.position;
         var body      = _filter.Get1(i).Value;
         body.MovePosition(position + direction);
     }
 }
 public void Run()
 {
     foreach (var index in _obstacles)
     {
         var worldObjectComponent = _obstacles.Get1(index);
         if (NeedToBePooled(worldObjectComponent))
         {
             ref var obstacleViewRef = ref _obstacles.Get3(index);
             _sceneData.ObsaclesPool.ReturnToPool(obstacleViewRef.Value);
         }
     }
Esempio n. 16
0
        public void Run()
        {
            foreach (var id in filter)
            {
                ref var moveComponent = ref filter.Get1(id);
                var     input         = filter.Get2(id);
                var     engine        = filter.Get3(id);

                Rotate(ref moveComponent, input, engine);
                MoveForce(ref moveComponent, input, engine);
            }
Esempio n. 17
0
        public void Run()
        {
            if (!_keepHealthChangeFilter.IsEmpty())
            {
                foreach (var keepViewIdx in _keepViewFilter)
                {
                    ref var healthCurrent = ref _keepViewFilter.Get2(keepViewIdx);
                    ref var keepView      = ref _keepViewFilter.Get3(keepViewIdx);

                    keepView.Value.text = FormatText(healthCurrent.Value);
                }
Esempio n. 18
0
        void IEcsRunSystem.Run()
        {
            foreach (var index in _filter)
            {
                var timerRef        = _filter.Get1(index);
                var timeChangeEvent = _filter.Get3(index);

                var     entity          = _filter.GetEntity(index);
                ref var updateTextEvent = ref entity.Get <UpdateTextEvent>();
                updateTextEvent.Text = timerRef.TimerFormat.GetFormattedTime(timeChangeEvent.CurrentTime);
            }
        public void Run()
        {
            foreach (int index in _filter)
            {
                ref Cell cell = ref _filter.Get1(index);
                CellView view = _objectPool.Get(cell.Configuration.ViewExample);
                view.Entity = _filter.GetEntity(index);

                cell.View = view;
                view.transform.position = new Vector2(_filter.Get3(index).x, _configuration.LevelHeight);
                view.Entity.Set <AnimateCreatedViewRequest>();
            }
Esempio n. 20
0
        public void Run()
        {
            foreach (var i in requests)
            {
                ref var moveComponent  = ref requests.Get1(i);
                var     transform      = requests.Get2(i).transform;
                var     targetPosition = requests.Get3(i).newPosition;

                moveComponent.desiredPosition = targetPosition;
                transform.position            = targetPosition.ToVector3(transform.position.y);

                requests.GetEntity(i).Get <WorldObjectNewPositionRequest>().newPosition = targetPosition;
            }
        void IEcsRunSystem.Run()
        {
            // add your run code here.
            foreach (var index in _filterBullet)
            {
                ref GameEntityRef gameEntityRefComponent = ref _filterBullet.Get3(index);

                Bullet bullet = (Bullet)gameEntityRefComponent.value;

                bullet.MoveToPool();

                _filterBullet.GetEntity(index).Del <Collided>();
            }
Esempio n. 22
0
 public void Run()
 {
     if (_gameState.State == State.Game)
     {
         foreach (int index in _filter)
         {
             ref var moveComponent = ref _filter.Get2(index);
             moveComponent.Speed = _gameState.CurrentSpeed;
             var position = _filter.Get3(index).Transform.position;
             var distance = Vector3.Distance(position, Vector3.zero);
             _gameState.CurrentDistance = distance;
             return;
         }
     }
Esempio n. 23
0
 void IEcsRunSystem.Run()
 {
     foreach (var i in _filter)
     {
         var view = _filter.Get3(i).Value;
         if (view.transform.position.y < _borderY)
         {
             var entity = _filter.GetEntity(i);
             entity.Get <Destroyed>();
             entity.Del <Falling>();
             entity.Del <Bubble>();
         }
     }
 }
Esempio n. 24
0
        public void Run()
        {
            foreach (int player in _botEntities)
            {
                Vector2 finishPosition = new Vector2();
                if (!_finishEntities.IsEmpty())
                {
                    finishPosition = _finishEntities.Get1(0).Position;
                }

                BotControl(ref _botEntities.Get1(player), _botEntities.Get2(player),
                           ref _botEntities.Get3(player), finishPosition);
            }
        }
Esempio n. 25
0
        void IEcsRunSystem.Run()
        {
            if (_inputFilter.IsEmpty() || !_movingFilter.IsEmpty())
            {
                return;
            }

            _trajectory.Clear();

            var position  = _origin;
            var direction = _inputFilter.Get2(0).Value - position;

            var hitBubbleView = HitTest(position, direction, _trajectory);

            if (!hitBubbleView)
            {
                return;
            }

            Vector2Int hitBubblePosition = Vector2Int.zero;

            foreach (var i in _bubbleFilter)
            {
                if (_bubbleFilter.Get3(i).Value == hitBubbleView)
                {
                    hitBubblePosition = _bubbleFilter.Get2(i).Value;
                    break;
                }
            }

            var newBubblePosition =
                NewBubblePosition(hitBubblePosition, hitBubbleView.transform.position, _trajectory.Last());

            if (!newBubblePosition.HasValue)
            {
                return;
            }

            foreach (var point in _trajectory)
            {
                var trajectory = _world.NewEntity();
                trajectory.Get <Trajectory>();
                trajectory.Get <WorldPosition>().Value = point;
            }

            var prediction = _world.NewEntity();

            prediction.Get <Prediction>();
            prediction.Get <Position>().Value = newBubblePosition.Value;
        }
        public void Run()
        {
            foreach (var id in playerTankFilter)
            {
                var poolGO   = playerTankFilter.Get2(id).PoolGO;
                var tankType = playerTankFilter.Get3(id).TankType;
                ReturnTankToPool(tankType, poolGO);

                var entity = playerTankFilter.GetEntity(id);
                entity.Destroy();

                Debug.Log("Destroy Player Tank");
            }
        }
Esempio n. 27
0
        public void Run()
        {
            foreach (var item in _quads)
            {
                if (item >= _quadInfoService.QuadCount)
                {
                    ref var sc = ref _quads.Get3(item);
                    sc.SpriteData.Dispose();
                    sc.Material.Dispose();
                    _quads.GetEntity(item).Destroy();
                    instanceCount--;
                    continue;
                }

                ref var sprite = ref _quads.Get3(item);
Esempio n. 28
0
        private void AutoMerge()
        {
            var mergedCubes = new List <EcsEntity>();

            foreach (var i in _cubes)
            {
                foreach (var j in _cubes)
                {
                    ref var cubeEntity1  = ref _cubes.GetEntity(i);
                    ref var cubeEntity2  = ref _cubes.GetEntity(j);
                    var     scoreNumber1 = _cubes.Get3(i).Value;
                    var     scoreNumber2 = _cubes.Get3(j).Value;

                    if (cubeEntity1 == _cubes.GetEntity(j) || scoreNumber1 != scoreNumber2 ||
                        mergedCubes.Contains(cubeEntity1) || mergedCubes.Contains(cubeEntity2))
                    {
                        continue;
                    }

                    cubeEntity1.Get <OnMergeEvent>().Target = cubeEntity2;
                    mergedCubes.Add(cubeEntity1);
                    mergedCubes.Add(cubeEntity2);
                    break;
                }
        void IEcsRunSystem.Run()
        {
            foreach (var i in _filter)
            {
                var position = _filter.Get3(i).Value;

                var emitParams = new ParticleSystem.EmitParams
                {
                    position             = position,
                    applyShapeToPosition = true
                };

                _scene.PlaceParticles.Emit(emitParams, 10);
            }
        }
Esempio n. 30
0
        public void Run()
        {
            foreach (var index in _filter)
            {
                if (_gameState.State == State.Game)
                {
                    ref var timeSinceLastSpawnComponent = ref _filter.Get2(index);
                    timeSinceLastSpawnComponent.Value += Time.deltaTime;

                    ref var coinCooldown   = ref _filter.Get4(index);
                    var     coinsSpeedCoef = Mathf.Clamp01(_gameState.CoinsCount * _configuration.SpeedUpPerCoin / _configuration.MaxSpeedUp);
                    coinCooldown.Value = (coinCooldown.Value - (coinCooldown.Value * coinsSpeedCoef)) - Time.deltaTime;

                    var timeTillNextSpawn = _filter.Get3(index).Value;

                    ref var entity = ref _filter.GetEntity(index);