コード例 #1
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    Util.ToggleDoor(door, open);

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));

                    if (open && BreakAndEnter.instance.Configuration.Instance.AutoCloseDoors)
                    {
                        BreakAndEnter.instance.AutoCloseDoor(door);
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
コード例 #2
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            Player     player = ((UnturnedPlayer)caller).Player;
            PlayerLook look   = player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableStorage storage = hit.transform.GetComponent <InteractableStorage>();

                if (storage != null)
                {
                    storage.isOpen                  = true;
                    storage.opener                  = player;
                    player.inventory.isStoring      = true;
                    player.inventory.isStorageTrunk = false;
                    player.inventory.storage        = storage;
                    player.inventory.updateItems(PlayerInventory.STORAGE, storage.items);
                    player.inventory.sendStorage();

                    UnturnedChat.Say(caller, Util.Translate("storage_open"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_storage"));
                }
            }
    void CollisionForPushBox()
    {
        foreach (PhysicsComponent physicsEntity in m_PhysicsEntities)
        {
            foreach (PhysicsComponent other in m_PhysicsEntities)
            {
                if (physicsEntity == other)
                {
                    continue;
                }

                BoxOverlap overlap = PhysicsUtility.GetOverlapOfBox(physicsEntity.PushBox, other.PushBox);

                if (PhysicsUtility.AreBoxesIntersecting(physicsEntity.PushBox, other.PushBox))
                {
                    physicsEntity.transform.Translate(new Vector3(overlap.x, 0) * 0.5f);
                    other.transform.Translate(new Vector3(overlap.x, 0) * -0.5f);
                }



                return;
            }
        }
    }
コード例 #4
0
ファイル: Ball.cs プロジェクト: ZeRandomTigre/Portfolio
        public Ball(PhysicsBody physicsBody)
        {
            m_physicsBody = physicsBody;

            this.TextureInfo = new TextureInfo(new Texture2D("Application/images/ball.png", false));
            this.Scale       = this.TextureInfo.TextureSizef;
            this.Pivot       = new Sce.PlayStation.Core.Vector2(0.5f, 0.5f);
            this.Position    = new Sce.PlayStation.Core.Vector2(
                Director.Instance.GL.Context.GetViewport().Width / 2 - Scale.X / 2,
                Director.Instance.GL.Context.GetViewport().Height / 2 - Scale.Y / 2);


            //Right angles are exceedingly boring, so make sure we dont start on one
            //So if our Random angle is between 90 +- 25 degrees or 270 +- 25 degrees
            //we add 25 degree to value, ie, making 90 into 115 instead
            System.Random rand  = new System.Random();
            float         angle = (float)rand.Next(0, 360);

            if ((angle % 90) <= 25)
            {
                angle += 25.0f;
            }
            this.m_physicsBody.Velocity = new Vector2(0.0f, BALL_VELOCITY).Rotate(PhysicsUtility.GetRadian(angle));

            Scheduler.Instance.ScheduleUpdateForTarget(this, 0, false);
        }
コード例 #5
0
ファイル: CommandDoor.cs プロジェクト: Kr4ken-9/BreakAndEnter
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    door.updateToggle(open);

                    BarricadeManager.instance.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index,
                        open
                    });

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
コード例 #6
0
        // Token: 0x06000093 RID: 147 RVA: 0x00006864 File Offset: 0x00004A64
        public static bool NoShootthroughthewalls(Transform transform)
        {
            Vector3    direction = AimbotCoroutines.GetAimPosition(transform, "Skull") - Player.player.look.aim.position;
            RaycastHit raycastHit;

            return(PhysicsUtility.raycast(new Ray(Player.player.look.aim.position, direction), out raycastHit, direction.magnitude, RayMasks.DAMAGE_CLIENT, QueryTriggerInteraction.UseGlobal) && raycastHit.transform.IsChildOf(transform));
        }
コード例 #7
0
ファイル: PlayerInput.cs プロジェクト: sky-xk-nge/Unturned
 public InputInfo getInput(bool doOcclusionCheck)
 {
     if (this.inputs != null && this.inputs.Count > 0)
     {
         InputInfo inputInfo = this.inputs.Dequeue();
         if (doOcclusionCheck && !this.hasDoneOcclusionCheck)
         {
             this.hasDoneOcclusionCheck = true;
             if (inputInfo != null)
             {
                 Vector3 vector    = inputInfo.point - base.player.look.aim.position;
                 float   magnitude = vector.magnitude;
                 Vector3 vector2   = vector / magnitude;
                 if (magnitude > 0.025f)
                 {
                     PhysicsUtility.raycast(new Ray(base.player.look.aim.position, vector2), out this.obstruction, magnitude - 0.025f, RayMasks.DAMAGE_SERVER, 0);
                     if (this.obstruction.transform != null)
                     {
                         return(null);
                     }
                     PhysicsUtility.raycast(new Ray(base.player.look.aim.position + vector2 * (magnitude - 0.025f), -vector2), out this.obstruction, magnitude - 0.025f, RayMasks.DAMAGE_SERVER, 0);
                     if (this.obstruction.transform != null)
                     {
                         return(null);
                     }
                 }
             }
         }
         return(inputInfo);
     }
     return(null);
 }
コード例 #8
0
 public override void tick()
 {
     if (!base.player.equipment.isEquipped)
     {
         return;
     }
     if ((base.channel.isOwner || Provider.isServer) && this.isSwinging && this.isThrowable)
     {
         Vector3    vector  = base.player.look.aim.position;
         Vector3    forward = base.player.look.aim.forward;
         RaycastHit raycastHit;
         if (!PhysicsUtility.raycast(new Ray(vector, forward), out raycastHit, 1f, RayMasks.DAMAGE_SERVER, 0))
         {
             vector += forward;
         }
         this.toss(vector, forward);
         if (base.channel.isOwner)
         {
             int num;
             if (Provider.provider.statisticsService.userStatisticsService.getStatistic("Found_Throwables", out num))
             {
                 Provider.provider.statisticsService.userStatisticsService.setStatistic("Found_Throwables", num + 1);
             }
         }
         else
         {
             base.channel.send("askToss", ESteamCall.NOT_OWNER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[]
             {
                 vector,
                 forward
             });
         }
         this.isSwinging = false;
     }
 }
コード例 #9
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();
            var look   = player.Look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE))
            {
                InteractableStorage storage = hit.transform.GetComponent <InteractableStorage>();

                if (storage != null)
                {
                    storage.isOpen                  = true;
                    storage.opener                  = player.UnturnedPlayer;
                    player.Inventory.isStoring      = true;
                    player.Inventory.isStorageTrunk = false;
                    player.Inventory.storage        = storage;
                    player.Inventory.updateItems(PlayerInventory.STORAGE, storage.items);
                    player.Inventory.sendStorage();

                    EssLang.Send(src, "STORAGE_OPEN");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("STORAGE_INVALID"));
                }
            }
コード例 #10
0
ファイル: OrbObject.cs プロジェクト: alkaitagi/Sharp
 private void Register()
 {
     barrier = PhysicsUtility.Overlap <BarrierObject>(Target, Constants.CellMask);
     if (barrier)
     {
         barrier.Charges++;
     }
 }
コード例 #11
0
 public void SetFireAtDirection(Vector2 fireAtDirection, int shotSpeed, int aimOffset)
 {
     vectorMagnitude = PhysicsUtility.VectorMagnitude(GetBoundingBox().X, fireAtDirection.X, GetBoundingBox().Y, fireAtDirection.Y);
     shotLenX        = Math.Max((int)fireAtDirection.X, GetBoundingBox().X) - Math.Min((int)fireAtDirection.X, GetBoundingBox().X);
     shotLenY        = Math.Max((int)fireAtDirection.Y, GetBoundingBox().Y) - Math.Min((int)fireAtDirection.Y, GetBoundingBox().Y);
     shotDirX        = (fireAtDirection.X - GetBoundingBox().X + aimOffset) / vectorMagnitude * shotSpeed;
     shotDirY        = (fireAtDirection.Y - GetBoundingBox().Y + aimOffset) / vectorMagnitude * shotSpeed;
 }
コード例 #12
0
 // Update is called once per frame
 private void Update()
 {
     if (Input.GetKeyDown(KeyCode.M))
     {
         int result = PhysicsUtility.OverlapSphereNonAlloc(m_point.position, 10f, ref m_cols, 1 << LayerMask.NameToLayer("Default"));
         Debug.Log(result);
     }
 }
コード例 #13
0
    Vector3 NormalSpawnPos()
    {
        Vector3 vector = this.LinearRand();

        if (this._spawnOnFloor)
        {
            PhysicsUtility.GetFloorPoint(vector, 10f, 20f, this._floorLayer.value, out vector);
        }
        return(vector);
    }
コード例 #14
0
    Vector3 FixedSpawnPos()
    {
        Vector3 position = base.transform.position;

        if (this._spawnOnFloor)
        {
            PhysicsUtility.GetFloorPoint(position, 10f, 20f, this._floorLayer.value, out position);
        }
        return(position);
    }
コード例 #15
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();
            var look   = player.Look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE | RayMasks.STRUCTURE))
            {
                Interactable2SalvageBarricade barri = hit.transform.GetComponent <Interactable2SalvageBarricade>();
                Interactable2SalvageStructure struc = hit.transform.GetComponent <Interactable2SalvageStructure>();

                if (barri != null)
                {
                    BarricadeManager.tryGetInfo(barri.root, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    region.barricades.RemoveAt(index);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeBarricade", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index
                    });

                    EssLang.Send(src, "BARRICADE_REMOVED");
                    return(CommandResult.Success());
                }
                else if (struc != null)
                {
                    StructureManager.tryGetInfo(struc.transform, out byte x, out byte y, out ushort index, out StructureRegion region);

                    region.structures.RemoveAt(index);

                    StructureManager manager = (StructureManager)typeof(StructureManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeStructure", ESteamCall.ALL, x, y, StructureManager.STRUCTURE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        index,
                        (region.drops[index].model.position - player.UnturnedPlayer.transform.position).normalized * 100f
                    });

                    EssLang.Send(src, "STRUCTURE_REMOVED");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("DESTROY_INVALID"));
                }
            }
コード例 #16
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (PhysicsUtility.raycast(new Ray(player.Player.look.aim.position, player.Player.look.aim.forward), out RaycastHit hit, 10f, RayMasks.BARRICADE_INTERACT))
            {
                byte x;
                byte y;

                ushort plant;
                ushort index;

                BarricadeRegion bRegion;
                StructureRegion sRegion;

                InteractableVehicle vehicle;

                ulong ownerId;

                var instance = ModerationPlugin.Instance;

                if (BarricadeManager.tryGetInfo(hit.transform, out x, out y, out plant, out index, out bRegion))
                {
                    ownerId = bRegion.barricades[index].owner;
                }
                else if (StructureManager.tryGetInfo(hit.transform, out x, out y, out index, out sRegion))
                {
                    ownerId = sRegion.structures[index].owner;
                }
                else if ((vehicle = hit.transform.GetComponent <InteractableVehicle>()) != null && vehicle.isLocked)
                {
                    ownerId = vehicle.lockedOwner.m_SteamID;
                }
                else
                {
                    UnturnedChat.Say(caller, instance.Translate("CheckownerFail"));
                    return;
                }

                ThreadPool.QueueUserWorkItem((i) =>
                {
                    var owner = instance.DatabaseManager.GetPlayer(ownerId);

                    if (owner == null)
                    {
                        owner = instance.DatabaseManager.CreatePlayer(new Models.Player(ownerId, ownerId.GetIP()));
                    }

                    TaskDispatcher.QueueOnMainThread(() =>
                    {
                        UnturnedChat.Say(caller, instance.Translate("CheckownerSuccess", owner.PlayerName, owner.PlayerId, owner.IsBanned(out var ban)));
                    });
                });
            }
        }
コード例 #17
0
ファイル: Ray.cs プロジェクト: Itorius/2D-Raytracer
        public Ray(Vector2 start, Vector2 direction, double wavelength)
        {
            this.start      = start;
            this.direction  = direction;
            this.wavelength = wavelength;
            color           = PhysicsUtility.GetColor(wavelength);

            collisionPoints = new List <Vector2> {
                start
            };
        }
コード例 #18
0
ファイル: LaserObject.cs プロジェクト: alkaitagi/Sharp
        private void Burst()
        {
            var from = (Vector2)transform.position + .5f * Constants.Directions[Direction];
            var to   = from + Distance * Constants.Directions[Direction];

            PhysicsUtility.OverlapArea(units, from, to, Constants.UnitMask);
            foreach (var unit in units)
            {
                unit.Kill();
            }
        }
コード例 #19
0
        protected override async UniTask OnExecuteAsync()
        {
            if (Context.Parameters.Length > 2)
            {
                throw new CommandWrongUsageException(Context);
            }

            await UniTask.SwitchToMainThread();

            float radius = 10f;

            if (Context.Parameters.Length > 0)
            {
                string radiusTerm = Context.Parameters[0];
                if (!float.TryParse(radiusTerm, out radius))
                {
                    throw new UserFriendlyException(m_StringLocalizer["explode:bad_radius", new { Radius = radiusTerm }]);
                }
            }

            float damage = 200f;

            if (Context.Parameters.Length > 1)
            {
                string damageTerm = Context.Parameters[1];
                if (!float.TryParse(damageTerm, out damage))
                {
                    throw new UserFriendlyException(m_StringLocalizer["explode:bad_damage", new { Damage = damageTerm }]);
                }
            }

            UnturnedUser uPlayer = (UnturnedUser)Context.Actor;
            Transform    aim     = uPlayer.Player.Player.look.aim;

            if (!PhysicsUtility.raycast(new Ray(aim.position, aim.forward), out RaycastHit hit, 512f,
                                        RayMasks.DAMAGE_SERVER))
            {
                throw new UserFriendlyException(m_StringLocalizer["explode:failure"]);
            }

            if (hit.transform == null)
            {
                throw new UserFriendlyException(m_StringLocalizer["explode:failure"]);
            }

            await UniTask.SwitchToMainThread();

            EffectManager.sendEffect(20, EffectManager.MEDIUM, hit.point);
            DamageTool.explode(hit.point, radius, EDeathCause.KILL, uPlayer.SteamId, damage, damage, damage, damage,
                               damage, damage, damage, damage, out List <EPlayerKill> kills);

            await Context.Actor.PrintMessageAsync(m_StringLocalizer["explode:success"]);
        }
コード例 #20
0
        public static RaycastInfo OriginalRaycast(Ray ray, float range, int mask)
        {
            RaycastHit hit;

            PhysicsUtility.raycast(ray, out hit, range, mask, QueryTriggerInteraction.UseGlobal);
            RaycastInfo raycastInfo = new RaycastInfo(hit);

            raycastInfo.direction = ray.direction;
            if (raycastInfo.transform != null)
            {
                if (raycastInfo.transform.CompareTag("Barricade"))
                {
                    raycastInfo.transform = DamageTool.getBarricadeRootTransform(raycastInfo.transform);
                }

                else if (raycastInfo.transform.CompareTag("Structure"))
                {
                    raycastInfo.transform = DamageTool.getStructureRootTransform(raycastInfo.transform);
                }

                if (raycastInfo.transform.CompareTag("Enemy"))
                {
                    raycastInfo.player = DamageTool.getPlayer(raycastInfo.transform);
                }

                if (raycastInfo.transform.CompareTag("Zombie"))
                {
                    raycastInfo.zombie = DamageTool.getZombie(raycastInfo.transform);
                }

                if (raycastInfo.transform.CompareTag("Animal"))
                {
                    raycastInfo.animal = DamageTool.getAnimal(raycastInfo.transform);
                }

                raycastInfo.limb = DamageTool.getLimb(raycastInfo.transform);

                if (raycastInfo.transform.CompareTag("Vehicle"))
                {
                    raycastInfo.vehicle = DamageTool.getVehicle(raycastInfo.transform);
                }

                if (raycastInfo.zombie != null && raycastInfo.zombie.isRadioactive)
                {
                    raycastInfo.material = EPhysicsMaterial.ALIEN_DYNAMIC;
                }
                else
                {
                    raycastInfo.material = DamageTool.getMaterial(hit.point, raycastInfo.transform, raycastInfo.collider);
                }
            }
            return(raycastInfo);
        }
コード例 #21
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            Player     player = ((UnturnedPlayer)caller).Player;
            PlayerLook look   = player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE | RayMasks.STRUCTURE))
            {
                Interactable2SalvageBarricade barri = hit.transform.GetComponent <Interactable2SalvageBarricade>();
                Interactable2SalvageStructure struc = hit.transform.GetComponent <Interactable2SalvageStructure>();

                if (barri != null)
                {
                    BarricadeManager.tryGetInfo(barri.root, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    region.barricades.RemoveAt(index);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeBarricade", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index
                    });

                    UnturnedChat.Say(caller, Util.Translate("barricade_removed"));
                }
                else if (struc != null)
                {
                    StructureManager.tryGetInfo(struc.transform, out byte x, out byte y, out ushort index, out StructureRegion region);

                    region.structures.RemoveAt(index);

                    StructureManager manager = (StructureManager)typeof(StructureManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeStructure", ESteamCall.ALL, x, y, StructureManager.STRUCTURE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        index,
                        (region.drops[index].model.position - player.transform.position).normalized * 100f
                    });

                    UnturnedChat.Say(caller, Util.Translate("structure_removed"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_destroy"));
                }
            }
コード例 #22
0
ファイル: SwitchAction.cs プロジェクト: alkaitagi/Sharp
        public override void Do(PlayerObject player)
        {
            var target = PhysicsUtility.Overlap <StateComponent>
                         (
                player.Movable.IntPosition + Constants.Directions[player.Movable.Direction],
                Constants.CellMask
                         );

            if (target)
            {
                target.State++;
            }
        }
コード例 #23
0
        public static InteractableDoorHinge Getdoor(UnturnedPlayer player)
        {
            PlayerLook look = player.Player.look;
            RaycastHit raycastHit;

            if (!PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out raycastHit, 100, RayMasks.BARRICADE, 0))
            {
                return(null);
            }
            InteractableDoorHinge interactabledoorhinge = raycastHit.transform.GetComponent <InteractableDoorHinge>();

            return(interactabledoorhinge);
        }
コード例 #24
0
        public void Execute(int i)
        {
            var outerEntity = Entities[i];

            for (int j = i + 1; j < Colliders.Length; j++)
            {
                var innerEntity = Entities[j];

                if (PhysicsUtility.DoCirclesOverlap
                    (
                        Translations[i].Value, Colliders[i].Radius,
                        Translations[j].Value, Colliders[j].Radius,
                        OverlapError, out float overlapAmount
                    ))
                {
                    CommandBuffer.AppendToBuffer(i, outerEntity, new CollisionInfoElementData
                                                 (
                                                     innerEntity,
                                                     Translations[j].Value,
                                                     Colliders[j].Group,
                                                     overlapAmount,
                                                     math.normalize(Translations[i].Value - Translations[j].Value)
                                                 ));

                    CommandBuffer.AppendToBuffer(i, innerEntity, new CollisionInfoElementData
                                                 (
                                                     outerEntity,
                                                     Translations[i].Value,
                                                     Colliders[i].Group,
                                                     overlapAmount,
                                                     math.normalize(Translations[j].Value - Translations[i].Value)
                                                 ));

                    if (Colliders[i].Group == CollisionLayer.Obstacle ||
                        Colliders[j].Group == CollisionLayer.Obstacle ||
                        Colliders[j].Group == Colliders[i].Group)
                    {
                        CommandBuffer.AddComponent <HandleCollisionWithBounceTag>(i, outerEntity);
                        CommandBuffer.AddComponent <RigidbodyCollisionTag>(i, outerEntity);

                        CommandBuffer.AddComponent <HandleCollisionWithBounceTag>(i, innerEntity);
                        CommandBuffer.AddComponent <RigidbodyCollisionTag>(i, innerEntity);
                    }
                    else
                    {
                        CommandBuffer.AddComponent <HaveBattleTag>(i, outerEntity);
                        CommandBuffer.AddComponent <HaveBattleTag>(i, innerEntity);
                    }
                }
            }
        }
コード例 #25
0
        void ChatCmd_Look(BasePlayer player)
        {
            var lookObject = PhysicsUtility.GetLookTarget(player);

            if (lookObject == null)
            {
                player.ChatMessage("Nothing found.");
                return;
            }

            string layerName = LayerMask.LayerToName(lookObject.layer);

            player.ChatMessage("[" + lookObject.tag + "] " + layerName + ": " + lookObject.name + " (" + String.Join(", ", (lookObject.transform.GetComponents <Component>().Select(comp => comp.GetType().Name)).ToArray()) + ")");
        }
コード例 #26
0
ファイル: PushAction.cs プロジェクト: alkaitagi/Sharp
        public override void Do(PlayerObject player)
        {
            var target = PhysicsUtility.Raycast <MovableComponent>
                         (
                player.Movable.Position + .1f * Constants.Directions[player.Movable.Direction],
                player.Movable.Direction,
                Constants.UnitMask,
                .6f
                         );

            if (target && target.CanMove(player.Movable.Direction))
            {
                target.Move(player.Movable.Direction);
            }
        }
コード例 #27
0
        protected virtual void addFoliage(FoliageInfoAsset foliageAsset, float weightMultiplier)
        {
            if (foliageAsset == null)
            {
                return;
            }
            float num       = 3.14159274f * this.brushRadius * this.brushRadius;
            float newRadius = Mathf.Sqrt(foliageAsset.density / DevkitFoliageToolOptions.instance.densityTarget / 3.14159274f);
            float num2;

            if (!this.addWeights.TryGetValue(foliageAsset, out num2))
            {
                this.addWeights.Add(foliageAsset, 0f);
            }
            num2 += DevkitFoliageToolOptions.addSensitivity * num * this.brushStrength * weightMultiplier * Time.deltaTime;
            if (num2 > 1f)
            {
                this.previewSamples.Clear();
                int num3 = Mathf.FloorToInt(num2);
                num2 -= (float)num3;
                for (int i = 0; i < num3; i++)
                {
                    float num4       = this.brushRadius * Random.value;
                    float brushAlpha = this.getBrushAlpha(num4);
                    if (Random.value >= brushAlpha)
                    {
                        float num5 = 6.28318548f * Random.value;
                        float num6 = Mathf.Cos(num5) * num4;
                        float num7 = Mathf.Sin(num5) * num4;
                        Ray   ray;
                        ray..ctor(this.brushWorldPosition + new Vector3(num6, this.brushRadius, num7), new Vector3(0f, -1f, 0f));
                        RaycastHit raycastHit;
                        if (PhysicsUtility.raycast(ray, out raycastHit, this.brushRadius * 2f, (int)DevkitFoliageToolOptions.instance.surfaceMask, 0))
                        {
                            SphereVolume sphereVolume = new SphereVolume(raycastHit.point, newRadius);
                            if (foliageAsset.getInstanceCountInVolume(sphereVolume) <= 0)
                            {
                                if (Input.GetKey(323))
                                {
                                    foliageAsset.addFoliageToSurface(raycastHit.point, raycastHit.normal, false, false);
                                }
                            }
                        }
                    }
                }
            }
            this.addWeights[foliageAsset] = num2;
        }
コード例 #28
0
        public static Transform GetStructureTransform(Player player, out StructureData structureData)
        {
            structureData = null;
            RaycastHit hit;

            if (PhysicsUtility.raycast(new Ray(player.look.aim.position, player.look.aim.forward), out hit, 3, RayMasks.STRUCTURE_INTERACT))
            {
                if (StructureManager.tryGetInfo(hit.transform, out _, out _, out ushort index, out StructureRegion region))
                {
                    structureData = region.structures[index];
                    return(region.drops[index].model);
                }
            }

            return(null);
        }
コード例 #29
0
ファイル: ParaPack.cs プロジェクト: mengtest/MyGame
        public void VerifyLandedPos()
        {
            if (isClientVerify)
            {
                return;
            }
            Vector3    tilePos = StreamerManager.GetTilePosition(currentPos);
            RaycastHit hit;

            if (PhysicsUtility.Raycast(tilePos, Vector3.down, height, LayerConfig.ParachuteMask, out hit))
            {
                isClientVerify = true;
                Vector3 hitRealpos = StreamerManager.GetRealPosition(hit.point);
                height = serverPos.y - hitRealpos.y;
            }
        }
コード例 #30
0
 public void Execute()
 {
     for (int index = 0; index < Colliders.Length; index++)
     {
         if (PhysicsUtility.DoCirclesOverlap
             (
                 Position, Radius,
                 Translations[index].Value, Colliders[index].Radius,
                 CollisionError, out _
             ))
         {
             IsSuitable[0] = false;
             return;
         }
     }
 }