コード例 #1
0
 public static Offset <DesiredPhysics> ToFlatBuffer(this ObjectPhysics physics, FlatBufferBuilder builder)
 {
     DesiredPhysics.StartDesiredPhysics(builder);
     DesiredPhysics.AddLocation(builder, physics.Location.ToFlatBufferPartial(builder));
     DesiredPhysics.AddVelocity(builder, physics.Velocity.ToFlatBufferPartial(builder));
     DesiredPhysics.AddRotation(builder, physics.Rotation.ToFlatBuffer(builder));
     DesiredPhysics.AddAngularVelocity(builder, physics.AngularVelocity.ToFlatBufferPartial(builder));
     return(DesiredPhysics.EndDesiredPhysics(builder));
 }
コード例 #2
0
ファイル: BoostPickup.cs プロジェクト: Turnerj/RocketBot
        private double GetDistancePriority(BoostPad boostPad, ObjectPhysics playerPhysics)
        {
            if (boostPad == null)
            {
                return(0);
            }

            var playerLocation = playerPhysics.Location;
            var rawDistance    = playerLocation.Distance2d(boostPad.Location);
            var maxDistance    = boostPad.IsFullBoost ? MaxFullDistance : MaxNormalDistance;
            var angleToBoost   = Math.Abs(BotMovementHelper.AngleToTarget(playerPhysics, boostPad.Location));

            return((1 - (rawDistance / maxDistance)) * (1 - (angleToBoost / (Math.PI / 2))));
        }
コード例 #3
0
ファイル: Serialize.cs プロジェクト: unaheidi/Altar.NET
        static JsonData SerializeObjPhysics(ObjectPhysics p)
        {
            var r = CreateObj();

            r["density"]     = p.Density;
            r["restitution"] = p.Restitution;
            r["group"]       = p.Group;
            r["lineardamp"]  = p.LinearDamping;
            r["angulardamp"] = p.AngularDamping;
            r["friction"]    = p.Friction;
            r["kinematic"]   = p.Kinematic;
            r["unk0"]        = p.Unknown0;
            r["unk1"]        = p.Unknown1;

            return(r);
        }
コード例 #4
0
        public static double AngleToTarget(ObjectPhysics source, Vector3 target)
        {
            var sourceToTargetAngle      = Math.Atan2(target.Y - source.Location.Y, target.X - source.Location.X);
            var sourceFrontToTargetAngle = sourceToTargetAngle - source.Rotation.Yaw;

            if (sourceFrontToTargetAngle < -Math.PI)
            {
                sourceFrontToTargetAngle += 2 * Math.PI;
            }
            else if (sourceFrontToTargetAngle > Math.PI)
            {
                sourceFrontToTargetAngle -= 2 * Math.PI;
            }

            return(sourceFrontToTargetAngle);
        }
コード例 #5
0
ファイル: Bomb.cs プロジェクト: BadMojo91/HLReMade
    public void CheckForImpact()
    {
        ObjectPhysics op = GetComponent <ObjectPhysics>();

        if (velocity > 0f && op.impact)
        {
            op.impact = false;
            Collider[] col = Physics.OverlapSphere(transform.position + (Vector3.down * impactRange), 0.2f);
            foreach (Collider c in col)
            {
                if (c.tag == "Player")
                {
                    PlayerController.DestroyPlayer(1);
                }
                else if (c.gameObject.tag != "Levelgrid" || c.tag != "Bomb")
                {
                    //Destroy(c.gameObject);
                }

                if (c.tag == "Levelgrid" && op.CheckSpace(op.px, op.py - 1).type != 2)
                {
                    Debug.Log(op.CheckSpace(op.px, op.py - 1).type);
                    LevelGrid.RemoveTile(op.px, op.py - 1);

                    if (op.CheckSpace(op.px + 1, op.py)._col)
                    {
                        LevelGrid.RemoveTile(op.px + 1, op.py);
                    }
                    if (op.CheckSpace(op.px - 1, op.py)._col)
                    {
                        LevelGrid.RemoveTile(op.px - 1, op.py);
                    }
                    GameObject exp = Instantiate(GameController._prefabs[3]);
                    exp.transform.position = transform.position;
                    LevelGrid.UpdateGrid();
                    Destroy(this.gameObject);
                }
            }
        }
    }
コード例 #6
0
        public static void Update(this ObjectPhysics physics, Physics partial)
        {
            if (partial.Location.HasValue)
            {
                physics.Location = partial.Location.Value.ToNumerics();
            }

            if (partial.Velocity.HasValue)
            {
                physics.Velocity = partial.Velocity.Value.ToNumerics();
            }

            if (partial.Rotation.HasValue)
            {
                physics.Rotation.Update(partial.Rotation.Value);
            }

            if (partial.AngularVelocity.HasValue)
            {
                physics.AngularVelocity = partial.AngularVelocity.Value.ToNumerics();
            }
        }