Exemple #1
0
        public override void PrimaryUse(Vector3 origin, Vector3 direction)
        {
            var focus = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);
            if (focus == null)
                return;

            this.Server.SpawnDetail("door", focus.Position.TK());
        }
Exemple #2
0
        public override void PrimaryUse(Vector3 origin, Vector3 direction)
        {
            var focus = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);

            if (focus == null)
            {
                return;
            }

            this.Server.SpawnDetail("door", focus.Position.TK());
        }
Exemple #3
0
 public override void SecondaryUse(Vector3 origin, Vector3 direction)
 {
     var focus = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);
     var detail = focus?.Body?.Tag as DetailObject;
     if (detail == null)
         return;
     while(detail.Parent != null)
     {
         detail = detail.Parent;
     }
     this.Server.DestroyDetail(detail);
 }
        public override void SecondaryUse(Vector3 origin, Vector3 direction)
        {
            var focus = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);
            if (focus == null)
                return;

            JVector block = focus.Position + 0.5f * focus.Normal;
            int x = (int)Math.Round(block.X);
            int y = (int)Math.Round(block.Y);
            int z = (int)Math.Round(block.Z);

            this.Server.SetBlock(x, y, z, new BasicBlock(4));
        }
Exemple #5
0
        public override void SecondaryUse(Vector3 origin, Vector3 direction)
        {
            var focus  = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);
            var detail = focus?.Body?.Tag as DetailObject;

            if (detail == null)
            {
                return;
            }
            while (detail.Parent != null)
            {
                detail = detail.Parent;
            }
            this.Server.DestroyDetail(detail);
        }
        public override void SecondaryUse(Vector3 origin, Vector3 direction)
        {
            var focus = this.World.Trace(origin.Jitter(), direction.Jitter(), TraceOptions.IgnoreDynamic);

            if (focus == null)
            {
                return;
            }

            JVector block = focus.Position + 0.5f * focus.Normal;
            int     x     = (int)Math.Round(block.X);
            int     y     = (int)Math.Round(block.Y);
            int     z     = (int)Math.Round(block.Z);

            this.Server.SetBlock(x, y, z, new BasicBlock(4));
        }
Exemple #7
0
 public static Shape CreateShape(Vector3 size)
 {
     return(new BoxShape(size.Jitter()));
 }
 public static Shape CreateShape(Vector3 size)
 {
     return new BoxShape(size.Jitter());
 }
Exemple #9
0
        public void UpdateFrame(IGameInputDriver input, double time)
        {
            this.camera.Pan  -= 0.5f * input.MouseMovement.X;
            this.camera.Tilt -= 0.5f * input.MouseMovement.Y;

            this.camera.Pan %= 360.0f;
            this.camera.Tilt = MathHelper.Clamp(this.camera.Tilt, -80, 80);

            Vector3 forward = Vector3.Zero;

            forward.X = 1.0f * (float)(Math.Sin(MathHelper.DegreesToRadians(this.camera.Pan)));
            forward.Y = 0.0f;
            forward.Z = 1.0f * (float)(Math.Cos(MathHelper.DegreesToRadians(this.camera.Pan)));

            Vector3 right = Vector3.Cross(forward, Vector3.UnitY);

            Vector3 move = Vector3.Zero;

            if (input.GetButton(Key.W))
            {
                move += forward;
            }
            if (input.GetButton(Key.S))
            {
                move -= forward;
            }
            if (input.GetButton(Key.D))
            {
                move += right;
            }
            if (input.GetButton(Key.A))
            {
                move -= right;
            }

            this.WalkSpeed = 10.0f * move.Jitter();

            if (input.GetButtonDown(Key.Space))
            {
                RaycastCallback callback = (b, n, f) =>
                {
                    return(b.IsStatic);
                };
                RigidBody body;
                JVector   normal;
                float     friction;

                if (this.world.CollisionSystem.Raycast(
                        this.Position,
                        new JVector(0, -1, 0),
                        callback,
                        out body,
                        out normal,
                        out friction))
                {
                    if (friction < 0.9f)
                    {
                        this.AddForce(new JVector(0, 200, 0));
                        Console.WriteLine("{0} {1} {2}", body, normal, friction);
                    }
                }
            }

            var origin    = this.camera.GetEye();
            var direction = this.camera.GetForward();

            if (input.GetMouseDown(MouseButton.Left))
            {
                this.Tool?.PrimaryUse(origin, direction);
            }

            if (input.GetMouseDown(MouseButton.Right))
            {
                this.Tool?.SecondaryUse(origin, direction);
            }
        }