public void Initialize()
        {
            if (_uidDict.IsEmpty())
            {
                throw new Exception("UidSystem was not init!");
            }

            Dictionary <string, EcsEntity> uidDict = _uidDict.Components1[0].UidToEntityDict;

            foreach (int i in _loadedItems)
            {
                XElement itemRoot         = _loadedItems.Components1[i].ElementRoot;
                XElement woundListElement = null;
                string   elementKey       = null;

                foreach (XElement child in itemRoot.Elements())
                {
                    string name      = child.Name.LocalName;
                    int    trimIndex = name.IndexOf("WoundList", StringComparison.Ordinal);
                    if (trimIndex < 0)
                    {
                        continue;
                    }

                    elementKey       = name.Substring(0, trimIndex);
                    woundListElement = child;
                }

                if (string.IsNullOrEmpty(elementKey) || !woundListElement.HasElements)
                {
                    continue;
                }
                string woundElementName = elementKey + "Wound";

                EcsEntity itemEntity = _loadedItems.Entities[i];
                var       randomizer = _ecsWorld.AddComponent <WoundRandomizerComponent>(itemEntity);
                foreach (XElement woundElement in woundListElement.Elements(woundElementName))
                {
                    string woundUid = woundElement.GetAttributeValue("Uid");
                    if (!uidDict.ContainsKey(woundUid))
                    {
                        throw new Exception($"Entity with Uid {woundUid} not found!");
                    }

                    EcsEntity woundEntity = uidDict[woundUid];
                    var       wound       = _ecsWorld.GetComponent <WoundComponent>(woundEntity);
                    if (wound == null)
                    {
                        throw new Exception($"Entity with Uid {woundUid} is not wound!");
                    }

                    int woundWeight = woundElement.GetInt("Weight");
                    randomizer.WoundRandomizer.Add(woundEntity, woundWeight);
                }
            }
        }
        void IEcsRunSystem.Run()
        {
            foreach (var i in _barrierCreateEventFilter)
            {
                EcsEntity barrierAreaEntity = _barrierCreateEventFilter.Components1[i].parentBarrierAreaEntity;
                var       targetBarrierList =
                    _world.GetComponent <BarrierListComponent>(barrierAreaEntity).barriers;

                var barrierBehaviours = _world.GetComponent <TransformComponent>(barrierAreaEntity)
                                        .transform
                                        .gameObject
                                        .GetComponentsInChildren <BarrierBehaviour>();

                foreach (var behaviour in barrierBehaviours)
                {
                    targetBarrierList.Add(behaviour);
                }
            }
        }
        public void Run()
        {
            for (int teleportIndex = 0; teleportIndex < _components.EntitiesCount; teleportIndex++)
            {
                var teleportComponent = _components.Components1[teleportIndex];
                var moveEntity        = teleportComponent.MoveEntity;

                var moveComponent     = _ecsWorld.GetComponent <MoveComponent>(moveEntity);
                var positionComponent = _ecsWorld.GetComponent <PositionComponent>(moveEntity);
                if (moveComponent != null && positionComponent != null)
                {
                    positionComponent.Position       = teleportComponent.TargetPosition.ToVector2Int();
                    moveComponent.DesiredPosition    = teleportComponent.TargetPosition;
                    moveComponent.Transform.position = teleportComponent.TargetPosition;
                }

                _ecsWorld.RemoveEntity(_components.Entities[teleportIndex]);
            }
        }
Exemple #4
0
        protected override void RunReactive()
        {
            for (int i = 0; i < ReactedEntitiesCount; i++)
            {
                var entity   = ReactedEntities[i];
                var roomData = _world.GetComponent <RoomData> (entity);
                if (roomData.value.ContainsKey(RoomDataConstants.PlayerRole))
                {
                    var roles = Extensions.DeserializeToPlayerRoles(roomData.value[RoomDataConstants.PlayerRole] as byte[]);
                    _gameState.UpdateRoles(roles);

                    foreach (var playerRole in roles)
                    {
                        var actorNumber = playerRole.Key;
                        var role        = playerRole.Value;
                        if (_playerCache.Entities.TryGetValue(actorNumber, out var playerEntity))
                        {
                            var roleComponent = _world.EnsureComponent <Role> (playerEntity, out var isNew);
                            if (!isNew)
                            {
                                if (roleComponent.value != role)
                                {
                                    _world.MarkComponentAsUpdated <Role> (playerEntity);
                                }
                            }
                            else
                            {
                                _world.MarkComponentAsUpdated <Role> (playerEntity);
                            }
                            roleComponent.value = role;
                        }
                    }

                    stringBuilder.Clear();
                    stringBuilder.AppendLine("Roles");

                    var values = Enum.GetValues(typeof(PlayerRole)) as PlayerRole[];
                    for (int j = 1; j < values.Length; j++)
                    {
                        var role           = values[j];
                        var playerWithRole = _gameState.GetPlayerWithRole(role);

                        stringBuilder.Append($"{role} = {( playerWithRole == -1 ? "-" : playerWithRole.ToString() )}");
                        if (playerWithRole == _photonServer.LocalPlayer.ID)
                        {
                            stringBuilder.Append("(me)");
                        }

                        stringBuilder.AppendLine();
                    }

                    SceneDescription.UI.GameUI.Roles.text = stringBuilder.ToString();
                }
            }
        }
        protected override void RunReactive()
        {
            var entity   = ReactedEntities[0];
            var target   = _world.GetComponent <ChangeShootTarget> (entity);
            var shipView = SceneDescription.Ship;

            foreach (var cannon in shipView.Cannons)
            {
                cannon.Root.LookAt(target.value);
            }
        }
Exemple #6
0
        protected override void RunReactive()
        {
            for (var i = 0; i < ReactedEntitiesCount; i++)
            {
                var go = GameObject.CreatePrimitive(PrimitiveType.Sphere);

                var entity = ReactedEntities[i];
                _world.AddComponent <TransformRef>(entity).value = go.transform;
                go.transform.position = new Vector3(2 * _world.GetComponent <GamePlayer>(ReactedEntities[i]).number, 0, 0);
            }
        }
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            var permanent = EcsWorld.GetComponent <PermanentFacialAnimationComponent>(pedEntity);

            if (permanent == null)
            {
                return;
            }

            EcsWorld.RemoveComponent <PermanentFacialAnimationComponent>(pedEntity);
        }
Exemple #8
0
    void IEcsUpdateSystem.Update()
    {
        _snakeCollider = _world.GetComponent <ColliderComponent> (_snakeObjects.Entities[0], _colliderComponentId);
        SnakeComponent snakeComponent = _world.GetComponent <SnakeComponent> (_snakeObjects.Entities[0], _snakeComponentId);

        foreach (var entity in _collisionObjects.Entities)
        {
            var eCollider = _world.GetComponent <ColliderComponent> (entity, _colliderComponentId);
            if (eCollider.Collider.bounds.Intersects(_snakeCollider.Collider.bounds))
            {
                snakeComponent.Length++;
                _world.PublishEvent <int> (snakeComponent.Length);
                var dData = new DestroyEvent();
                dData.Index = entity;
                _world.PublishEvent <DestroyEvent> (dData);
                var sData = new SpawnEvent();
                sData.Length = snakeComponent.Length;
                _world.PublishEvent <SpawnEvent> (sData);
            }
        }
    }
Exemple #9
0
    void IEcsRunSystem.Run()
    {
        foreach (var resEntity in _resFilter.Entities)
        {
            var res = _world.GetComponent <ResComponent>(resEntity, _resId);
            if (res.type == ResType.none)
            {
                _world.RemoveComponent <ResViewComponent>(resEntity, _viewId);
                _world.RemoveComponent <ResMoveComponent>(resEntity, _moveId);
            }
        }

        foreach (var moveEntity in _moveFilter.Entities)
        {
            var move = _world.GetComponent <ResMoveComponent>(moveEntity, _moveId);
            if (move.curcycle > move.cyclemove)
            {
                _world.RemoveComponent <ResMoveComponent>(moveEntity, _moveId);
            }
        }
    }
Exemple #10
0
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            bool isPlayer = EcsWorld.GetComponent <PlayerMarkComponent>(pedEntity) != null;

            if (!isPlayer)
            {
                return;
            }

            NativeFunction.Natives.xB4EDDC19532BFB85();
            EcsWorld.RemoveComponent <MainScreenEffectComponent>(pedEntity, true);
        }
Exemple #11
0
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            bool isPlayer = EcsWorld.GetComponent <PlayerMarkComponent>(pedEntity) != null;

            if (!isPlayer)
            {
                return;
            }

            NativeFunction.Natives.STOP_GAMEPLAY_CAM_SHAKING(true);
            EcsWorld.RemoveComponent <PermanentCameraShakeComponent>(pedEntity, true);
        }
 public void Run()
 {
     foreach (var component in filter)
     {
         var destructableComponent = filter.Components1[component];
         if (destructableComponent.ToDestroy)
         {
             var droppableComponent      = filter.Components2[component];
             var parentPositionComponent = world.GetComponent <PositionComponent>(droppableComponent.Entity);
             var spriteComponent         = world.GetComponent <SpriteComponent>(droppableComponent.Entity);
             var size  = spriteComponent.Texture.GetLocalBounds();
             var scale = spriteComponent.Scale;
             droppableComponent.SpawnChildComponent(
                 world,
                 droppableComponent.DropObject,
                 new Vector2f(
                     parentPositionComponent.Position.X + size.Width / 2 * scale,
                     parentPositionComponent.Position.Y + size.Height / 2 * scale));
         }
     }
 }
Exemple #13
0
 protected override void RunReactive()
 {
     for (int i = 0; i < ReactedEntitiesCount; i++)
     {
         var entity       = ReactedEntities[i];
         var transformRef = _world.GetComponent <TransformRef> (entity);
         if (transformRef != null)
         {
             UnityEngine.Object.Destroy(transformRef.value.gameObject);
         }
         _world.RemoveEntity(entity);
     }
 }
Exemple #14
0
 void IEcsUpdateSystem.Update()
 {
     foreach (var entity in _destroyObjects.Entities)
     {
         var      eDestroy = _world.GetComponent <DestroyComponent> (entity, _destroyComponentId);
         TimeSpan diff     = DateTime.Now - eDestroy.SpawnTime;
         if (diff.TotalSeconds >= _lifeTime)
         {
             Debug.Log("Destroy uneaten food");
             _world.RemoveEntity(entity);
         }
     }
 }
        protected override void RunReactive()
        {
            for (int i = 0; i < ReactedEntitiesCount; i++)
            {
                var entity = ReactedEntities[i];
                var kill   = _world.GetComponent <KillAsteroids> (entity);
                foreach (var id in kill.value)
                {
                    if (_gameState.Asteroids.TryGetValue(id, out var asteroidEntity))
                    {
                        _world.EnsureComponent <Destroy> (asteroidEntity, out _);
                        if (kill.WithEffect)
                        {
                            var position = _world.GetComponent <Position> (asteroidEntity);
                            UnityEngine.Object.Instantiate(_gameConfig.AsteroidDeathEffect, position.value, Quaternion.identity);
                        }

                        _gameState.Asteroids.Remove(id);
                    }
                }
            }
        }
Exemple #16
0
        public void Run()
        {
            WorldComponent world = _world.Components1[0];

            foreach (int i in _moveableObjects)
            {
                Vector2Int newPosition   = _moveableObjects.Components1[i].NewPosition;
                int        movableEntity = _moveableObjects.Entities[i];

                foreach (int entity in world.WorldField[newPosition.x][newPosition.y])
                {
                    var portal = _ecsWorld.GetComponent <PortalComponent>(entity);
                    if (portal == null || portal.EstimateReloadTime > 0)
                    {
                        continue;
                    }

                    int otherPortalEntity = portal.OtherPortalEntity;
                    var otherPortal       = _ecsWorld.GetComponent <PortalComponent>(otherPortalEntity);

                    Vector2Int otherPortalPosition = _ecsWorld
                                                     .GetComponent <PositionComponent>(otherPortalEntity)
                                                     .Position;
                    _ecsWorld.AddComponent <TeleportingComponent>(movableEntity).NewPosition = otherPortalPosition;

                    portal.EstimateReloadTime      = PORTAL_RELOAD_TIME;
                    otherPortal.EstimateReloadTime = PORTAL_RELOAD_TIME;
                }
            }

            foreach (int i in _portals)
            {
                PortalComponent portalComponent = _portals.Components1[i];
                if (portalComponent.EstimateReloadTime > 0)
                {
                    portalComponent.EstimateReloadTime -= Time.deltaTime;
                }
            }
        }
Exemple #17
0
 public override void RunReact(List <int> entities)
 {
     foreach (var scoreEntity in _scoreFilter.Entities)
     {
         var score = _world.GetComponent <ScoreComponent>(scoreEntity, _scoreId);
         scoreCount  += score.score;
         scoreui.text = FormatText();
     }
     // and remove all received events.
     foreach (var entity in entities)
     {
         _world.RemoveEntity(entity);
     }
 }
Exemple #18
0
        public void Run()
        {
            if (_photonServer.CurrentRoom != null)
            {
                if (_player.EntitiesCount > 0)
                {
                    var playerEntity = _player.Entities[0];
                    var role         = _world.GetComponent <Role> (playerEntity);
                    if (role != null)
                    {
                        if (role.value == PlayerRole.Fly)
                        {
                            _hashtable.Clear();
                            var transform = _world.GetComponent <TransformRef> (_gameState.ShipEntity).value;
                            _hashtable[RoomDataConstants.ShipPosition] = transform.position;
                            _hashtable[RoomDataConstants.ShipRotation] = transform.rotation;

                            _photonServer.CurrentRoom.SetCustomProperties(_hashtable);
                        }
                    }
                }
            }
        }
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(InstantHealSystem);

            for (int i = 0; i < _components.EntitiesCount; i++)
            {
                int pedEntity  = _components.Components1[i].PedEntity;
                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);

                if (woundedPed != null)
                {
                    if (woundedPed.IsPlayer)
                    {
                        Function.Call(Hash._SET_CAM_EFFECT, 0);
                        Function.Call(Hash.SET_PLAYER_SPRINT, Game.Player, true);
                        Function.Call(Hash._STOP_ALL_SCREEN_EFFECTS);
                        woundedPed.Health = _mainConfig.Data.PlayerConfig.MaximalHealth;
                        _ecsWorld.CreateEntityWith <AdrenalineComponent>().Revert = true;
                        Game.Player.IgnoredByEveryone = false;
                    }
                    else
                    {
                        woundedPed.Health           = _random.Next(50, _mainConfig.Data.NpcConfig.MaximalStartHealth);
                        woundedPed.ThisPed.Accuracy = woundedPed.DefaultAccuracy;
                    }

                    woundedPed.IsDead       = false;
                    woundedPed.DamagedParts = 0;
                    woundedPed.PainMeter    = 0;
                    Function.Call(Hash.CLEAR_PED_BLOOD_DAMAGE, woundedPed.ThisPed);
                    Function.Call(Hash.SET_PED_MOVE_RATE_OVERRIDE, woundedPed.ThisPed, 1f);
                    woundedPed.ThisPed.Health = (int)woundedPed.Health;
                    woundedPed.Armor          = woundedPed.ThisPed.Armor;

                    _ecsWorld.CreateEntityWith <NoPainStateComponent>().PedEntity = pedEntity;
                }

                for (int bleedIndex = 0; bleedIndex < _bleedingComponents.EntitiesCount; bleedIndex++)
                {
                    if (_bleedingComponents.Components1[bleedIndex].PedEntity != pedEntity)
                    {
                        continue;
                    }

                    _ecsWorld.RemoveEntity(_bleedingComponents.Entities[bleedIndex]);
                }

                _ecsWorld.RemoveEntity(_components.Entities[i]);
            }
        }
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            bool isPlayer = EcsWorld.GetComponent <PlayerMarkComponent>(pedEntity) != null;

            if (!isPlayer)
            {
                return;
            }

            NativeFunction.Natives.SPECIAL_ABILITY_UNLOCK(ped.Model.Hash);
#if DEBUG
            Logger.MakeLog("Special Ability unlocked");
#endif
        }
        void IEcsRunSystem.Run()
        {
            var map = _barrierAreaMapFilter.Components1[0].map;
            List <LinkedList <EcsEntity> > rowsToDelete = new List <LinkedList <EcsEntity> >();

            foreach (var row in map)
            {
                // Find barrier areas out view radius
                var barrierAreasToDelete = row.Where(barrierAreaEntity =>
                {
                    TransformComponent barrierAreaTransformComponent =
                        _world.GetComponent <TransformComponent>(barrierAreaEntity);
                    SizeComponent barrierAreaSizeComponent = _world.GetComponent <SizeComponent>(barrierAreaEntity);

                    float viewDiameter = _beatshipFilter.Components3[0].viewRadius * 2;

                    Bounds barrierAreaBounds = new Bounds(barrierAreaTransformComponent.transform.position,
                                                          barrierAreaSizeComponent.size);
                    Bounds viewAreaBounds = new Bounds(_beatshipFilter.Components2[0].transform.position,
                                                       new Vector3(viewDiameter,
                                                                   viewDiameter,
                                                                   viewDiameter));

                    return(!IsRectangleOverlapRectangle(barrierAreaBounds, viewAreaBounds));
                });

                // Destroy barrier areas out view radius
                foreach (var barrierAreaEntity in barrierAreasToDelete)
                {
                    EntityBuilder.Instance(_world)
                    .CreateEntity()
                    .AddComponent <BarrierAreaDestroyEvent>(out BarrierAreaDestroyEvent destroyEvent);

                    destroyEvent.barrierAreaEntity = barrierAreaEntity;
                }
            }
        }
Exemple #22
0
        private IList <int> CreateRope(Texture2D ropeTexture, int segmentCount, float totalLength, Vector2 startPosition, Vector2 endPosition)
        {
            // TODO: spec
            float stiffness = 30f;
            float damping   = 10f;
            float mass      = 1f;

            var currentPosition = startPosition;
            var segmentOffset   = (endPosition - startPosition) / (segmentCount - 1);
            var segmentLength   = totalLength / segmentCount;

            var segments = new int[segmentCount];

            for (int i = 0; i < segmentCount; ++i)
            {
                var segmentEntity = world.CreateEntity(currentPosition);

                var sprite = world.AddComponent <Sprite>(segmentEntity);
                sprite.Texture    = ropeTexture;
                sprite.Origin     = new Vector2(ropeTexture.Bounds.Right, ropeTexture.Bounds.Center.Y);
                sprite.LayerDepth = 0.8f;

                var rope = world.AddComponent <Rope>(segmentEntity);
                rope.Index = i;

                segments[i]      = segmentEntity;
                currentPosition += segmentOffset;
            }

            for (int i = segmentCount - 1; i > 0; --i)
            {
                var currentEntity  = segments[i];
                var previousEntity = segments[i - 1];

                // Connect the segment to its previous and next segments.
                var rope = world.GetComponent <Rope>(currentEntity);
                rope.PreviousEntity = previousEntity;

                var previousRope = world.GetComponent <Rope>(previousEntity);
                previousRope.NextEntity = currentEntity;

                // Physically connect the segment to its previous segment with a rigidbody and a spring.
                var physics = world.AddComponent <Physics>(currentEntity);
                physics.Mass          = mass;
                physics.Drag          = Vector2.One * 0.1f;
                physics.ConstantForce = Gravity * mass;

                var spring = world.AddComponent <Spring>(currentEntity);
                spring.ConnectedEntity = rope.PreviousEntity;
                spring.Stiffness       = stiffness;
                spring.Damping         = damping;
                spring.RestDistance    = segmentLength;
            }

            return(segments);
        }
Exemple #23
0
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            var changedFlags = EcsWorld.GetComponent <ChangedPedFlagsComponent>(pedEntity);

            if (changedFlags == null)
            {
                return;
            }

            foreach (int changedFlag in changedFlags.ChangedFlags)
            {
                NativeFunction.Natives.SET_PED_RESET_FLAG(ped, changedFlag, true);
            }
            changedFlags.ChangedFlags.Clear();
        }
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(HitCleanSystem);

            for (int i = 0; i < _requestsToClean.EntitiesCount; i++)
            {
                int pedEntity = _requestsToClean.Components1[i].PedEntity;
                var ped       = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity).ThisPed;

                Function.Call(Hash.CLEAR_PED_LAST_WEAPON_DAMAGE, ped);
                Function.Call(Hash.CLEAR_PED_LAST_DAMAGE_BONE, ped);

                _ecsWorld.RemoveEntity(_requestsToClean.Entities[i]);
            }
        }
Exemple #25
0
        protected override void RunReactive()
        {
            if (_localPlayer.EntitiesCount == 0 || _localPlayer.Components2[0].value == PlayerRole.Fly)
            {
                return;
            }

            for (int i = 0; i < ReactedEntitiesCount; i++)
            {
                var entity       = ReactedEntities[i];
                var shipPosition = World.GetComponent <ShipPosition> (entity);
                SceneDescription.Ship.transform.position = shipPosition.position;
                SceneDescription.Ship.transform.rotation = shipPosition.rotation;
            }
        }
        public void Initialize()
        {
            var playerGo        = GameObject.Find("Player");
            var playerComponent = new Player();
            var player          = world.CreateEntityWith(out playerComponent);

            playerComponent.gameObject = playerGo;
            playerComponent.transform  = playerGo.transform;
            world.AddComponent <Dynamic>(player).rigidbody = playerGo.GetComponent <Rigidbody2D>();
            world.GetComponent <Dynamic>(player).collider  = playerGo.GetComponent <Collider2D>();
            var recordable = world.AddComponent <Recordable>(player);

            recordable.positions  = new Vector2[300];
            recordable.velocities = new Vector2[300];
            world.AddComponent <Controllable>(player);
        }
        protected override void ProcessWound(Ped ped, EcsEntity pedEntity, EcsEntity woundEntity)
        {
            var play = EcsWorld.GetComponent <PlayPainComponent>(woundEntity);

            if (play == null)
            {
                return;
            }

            bool isPlayer = EcsWorld.GetComponent <PlayerMarkComponent>(pedEntity) != null;
            bool isMale   = ped.IsMale;

            if (isPlayer)
            {
                if (play.Player < 0)
                {
                    return;
                }
                NativeFunction.Natives.PLAY_PAIN(ped, play.Player, 0, 0);
#if DEBUG
                Logger.MakeLog($"Play pain {play.Player} for player");
#endif
            }
            else if (isMale)
            {
                if (play.Male < 0)
                {
                    return;
                }
                NativeFunction.Natives.PLAY_PAIN(ped, play.Male, 0, 0);
#if DEBUG
                Logger.MakeLog($"Play pain {play.Male} for male");
#endif
            }
            else
            {
                if (play.Female < 0)
                {
                    return;
                }
                NativeFunction.Natives.PLAY_PAIN(ped, play.Female, 0, 0);
#if DEBUG
                Logger.MakeLog($"Play pain {play.Female} for female");
#endif
            }
        }
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(RagdollSystem);

            for (int i = 0; i < _requests.EntitiesCount; i++)
            {
                var pedEntity  = _requests.Components1[i].PedEntity;
                var woundedPed = _ecsWorld
                                 .GetComponent <WoundedPedComponent>(pedEntity);

                if (woundedPed == null)
                {
                    _ecsWorld.RemoveEntity(_requests.Entities[i]);
                    continue;
                }

                if (_requests.Components1[i].Enable)
                {
                    if (woundedPed.ThisPed.IsRagdoll)
                    {
                        continue;
                    }

                    SendDebug($"Set {pedEntity} to ragdoll");
                    Function.Call(Hash.SET_PED_TO_RAGDOLL, woundedPed.ThisPed, -1, -1, 0, 0, 0, 0);
                    woundedPed.GivesInToPain = true;

                    _ecsWorld.RemoveEntity(_requests.Entities[i]);
                }
                else
                {
                    if (woundedPed.GivesInToPain)
                    {
                        SendDebug($"Unset {pedEntity} from ragdoll");
                        Function.Call(Hash.SET_PED_TO_RAGDOLL, woundedPed.ThisPed, 1, 1, 1, 0, 0, 0);
                        woundedPed.GivesInToPain = false;
                        if (woundedPed.ThisPed.IsPlayer)
                        {
                            Game.Player.IgnoredByEveryone = false;
                        }
                    }

                    _ecsWorld.RemoveEntity(_requests.Entities[i]);
                }
            }
        }
        protected override void ProcessWound(Ped ped, EcsEntity pedEntity, EcsEntity woundEntity)
        {
            var ikComponent = EcsWorld.GetComponent <InstantKillComponent>(woundEntity);
            var health      = EcsWorld.GetComponent <HealthComponent>(pedEntity);

            if (ikComponent == null || health == null)
            {
                return;
            }

            int newHealth = (int)health.MinHealth - 2;

            ped.SetHealth(newHealth);
#if DEBUG
            Logger.MakeLog($"{pedEntity.GetEntityName()} was killed due {ikComponent.ReasonKey}!");
#endif
        }
Exemple #30
0
        protected override void ResetEffect(Ped ped, EcsEntity pedEntity)
        {
            var disabled = EcsWorld.GetComponent <DisabledVehicleControlComponent>(pedEntity);

            if (disabled == null)
            {
                return;
            }

            EcsWorld.RemoveComponent <DisabledVehicleControlComponent>(pedEntity);
            bool isPlayer = EcsWorld.GetComponent <PlayerMarkComponent>(pedEntity) != null;

            if (!isPlayer)
            {
                ped.BlockPermanentEvents = false;
            }
        }