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()); }
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()); }
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)); }
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)); }
public static Shape CreateShape(Vector3 size) { return(new BoxShape(size.Jitter())); }
public static Shape CreateShape(Vector3 size) { return new BoxShape(size.Jitter()); }
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); } }