コード例 #1
0
        void PickBody()
        {
            DropBody();
            PickedEntity = RayCastEntity(out Vector3 PickPoint, out Vector3 Normal);

            if (PickedEntity != null)
            {
                DbgDraw.DrawLine(FireOrigin, PickPoint, Time: 5000);
                DbgDraw.DrawCircle(PickPoint + Normal * 0.1f, Normal, FishGfx.Color.Red, 5, 8, Time: 5000);

                PickDist        = Vector3.Distance(FireOrigin, PickPoint);
                GlobalPickPoint = PickPoint;

                Matrix4x4.Invert(PickedEntity.RigidBody.CenterOfMassTransform, out Matrix4x4 InvCenterOfMass);
                LocalPickPoint = PickPoint = Vector3.Transform(PickPoint, InvCenterOfMass);

                PickedEntity.Unfreeze();
                PickedEntity.DisableSleep();

                PointConst = new Point2PointConstraint(PickedEntity.RigidBody, PickPoint);
                PointConst.Setting.ImpulseClamp = 10000;
                PointConst.Setting.Tau          = 0.01f;
                PointConst.Setting.Damping      = 0.99f;
                Map.World.AddConstraint(PointConst);

                OldAngularDamping = PickedEntity.RigidBody.AngularDamping;
                OldLinearDamping  = PickedEntity.RigidBody.LinearDamping;
                PickedEntity.RigidBody.SetDamping(OldLinearDamping, 0.99f);

                IsPickingBody = true;
            }
        }
コード例 #2
0
ファイル: UtilityGun.cs プロジェクト: yarligayan/libTech
        public override void Reload(bool Pressed)
        {
            if (Pressed)
            {
                EntPhysics Ent = RayCastEntity(out Vector3 PickPoint);

                if (Ent != null)
                {
                    Ent.Unfreeze();
                }

                /*Vector3[] Pts = Engine.Camera3D.GetFrustumPoints();
                 *
                 * // Connecting lines
                 * Vector3 A = DrawRay(Pts[0], Pts[4]);
                 * Vector3 B = DrawRay(Pts[1], Pts[5]);
                 * Vector3 C = DrawRay(Pts[2], Pts[6]);
                 * Vector3 D = DrawRay(Pts[3], Pts[7]);
                 *
                 * DbgDraw.DrawLine(A, B, FishGfx.Color.Red, Time: 30000);
                 * DbgDraw.DrawLine(B, C, FishGfx.Color.Red, Time: 30000);
                 * DbgDraw.DrawLine(C, D, FishGfx.Color.Red, Time: 30000);
                 * DbgDraw.DrawLine(D, A, FishGfx.Color.Red, Time: 30000);*/
            }
        }
コード例 #3
0
        void DropBody()
        {
            if (!IsPickingBody)
            {
                return;
            }

            Map.World.RemoveConstraint(PointConst);
            PointConst.Dispose();
            PointConst = null;

            PickedEntity.Unfreeze();
            PickedEntity.RigidBody.SetDamping(OldLinearDamping, OldAngularDamping);
            PickedEntity = null;

            IsPickingBody = false;
        }
コード例 #4
0
        public override void Reload(bool Pressed)
        {
            if (Pressed)
            {
                EntPhysics Ent = RayCastEntity(out Vector3 PickPoint);

                if (Ent != null)
                {
                    Ent.Unfreeze();
                }

                //DbgDraw.DrawFrustum(Engine.Camera3D, Time: 10000);
                //DbgDraw.DrawFrustum(Engine.Map.GetEntities<Player>().First().ViewModelCamera, Time: 10000);

                Vector3[] Pts = Engine.Camera3D.GetFrustumPoints();

                /*// Near
                 * DbgDraw.DrawLine(Pts[0], Pts[1], Time: 10000);
                 * DbgDraw.DrawLine(Pts[1], Pts[2], Time: 10000);
                 * DbgDraw.DrawLine(Pts[2], Pts[3], Time: 10000);
                 * DbgDraw.DrawLine(Pts[3], Pts[0], Time: 10000);
                 *
                 * // Far
                 * DbgDraw.DrawLine(Pts[4], Pts[5], Time: 10000);
                 * DbgDraw.DrawLine(Pts[5], Pts[6], Time: 10000);
                 * DbgDraw.DrawLine(Pts[6], Pts[7], Time: 10000);
                 * DbgDraw.DrawLine(Pts[7], Pts[4], Time: 10000);*/

                // Connecting lines
                Vector3 A = DrawRay(Pts[0], Pts[4]);
                Vector3 B = DrawRay(Pts[1], Pts[5]);
                Vector3 C = DrawRay(Pts[2], Pts[6]);
                Vector3 D = DrawRay(Pts[3], Pts[7]);

                DbgDraw.DrawLine(A, B, FishGfx.Color.Red, Time: 30000);
                DbgDraw.DrawLine(B, C, FishGfx.Color.Red, Time: 30000);
                DbgDraw.DrawLine(C, D, FishGfx.Color.Red, Time: 30000);
                DbgDraw.DrawLine(D, A, FishGfx.Color.Red, Time: 30000);
            }
        }