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); } }
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; } } }
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; } } }
public void Run() { foreach (var i in _filter) { _filter.Get3(i).Value += (_filter.Get1(i).Value + _filter.Get2(i).Value) * Time; } }
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>(); } } } } }
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; }
public void Run() { foreach (var i in _actors) { ref var rotation = ref _actors.Get3(i); rotation.Value = rotation.Value.Rotate(_time.DeltaTime * RotationSpeed); }
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);
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); } }
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; } }
public void Run() { foreach (int player in _playerEntities) { PlayerControl(ref _playerEntities.Get1(player), _playerEntities.Get2(player), ref _playerEntities.Get3(player)); } }
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; } } }
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); } }
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); }
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); }
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>(); }
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>(); }
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; } }
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>(); } } }
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); } }
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"); } }
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);
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); } }
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);