private float rotationRate = MathHelper.Pi; // Number of radians per second the camera can turn. #endregion Fields #region Constructors public PlayerController(Viewport viewPort) { mCamera = new StaticCamera(viewPort); //mCamera.TargetPosition = mCreature.Position; //mCamera.DesiredPositionLocal = new Vector3(0.0f, 2.0f, 10.0f); //mCamera.LookAtLocal = new Vector3(0.0f, 1.5f, 0.0f); //mCamera.TargetDirection = Vector3.Forward; //mCamera.MaxRopeLengthSquared = mCamera.DesiredPositionLocal.LengthSquared(); //mCamera.MinRopeLengthSquared = mCamera.MaxRopeLengthSquared * 0.75f; //mCamera.TrackTarget = true; mMoveForward = new GamePadThumbStickInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.GamePadThumbStick.Left, InputAction.GamePadThumbStickAxis.Y, GamePadDeadZone.Circular, -0.2f, 0.2f); mMoveRight = new GamePadThumbStickInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.GamePadThumbStick.Left, InputAction.GamePadThumbStickAxis.X, GamePadDeadZone.Circular, -0.2f, 0.2f); mLookForward = new GamePadThumbStickInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.GamePadThumbStick.Right, InputAction.GamePadThumbStickAxis.Y, GamePadDeadZone.Circular, -0.2f, 0.2f); mLookRight = new GamePadThumbStickInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.GamePadThumbStick.Right, InputAction.GamePadThumbStickAxis.X, GamePadDeadZone.Circular, -0.2f, 0.2f); mMoveForwardKey = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.W); mMoveBackwardKey = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.S); mMoveRightKey = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.D); mMoveLeftKey = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.A); mLookForwardMouse = new MouseMovementInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.MouseAxis.Y, 4.0f, 0f, 0f); mLookRightMouse = new MouseMovementInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, InputAction.MouseAxis.X, 4.0f, 0f, 0f); mPressPart1 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Buttons.X); mPressPart2 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Buttons.Y); mPressPart3 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Buttons.B); mReleasePart1 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Buttons.X); mReleasePart2 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Buttons.Y); mReleasePart3 = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Buttons.B); mPressJump = new GamePadButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Buttons.A); mUse = new List<InputAction>(NumParts); mUse.Add(mPressPart1); mUse.Add(mPressPart2); mUse.Add(mPressPart3); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D1)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D2)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D3)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D4)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D5)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D6)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D7)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D8)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D9)); mUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.D0)); mFinishUse = new List<InputAction>(NumParts); mFinishUse.Add(mReleasePart1); mFinishUse.Add(mReleasePart2); mFinishUse.Add(mReleasePart3); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D1)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D2)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D3)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D4)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D5)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D6)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D7)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D8)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D9)); mFinishUse.Add(new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, Keys.D0)); mJumpKey = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.Space); mStealPressMouse = new MouseButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, InputAction.MouseButton.Left); mStealReleaseMouse = new MouseButtonInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, InputAction.MouseButton.Left); mStealPress = new GamePadTriggerInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, InputAction.GamePadTrigger.Right, GamePadDeadZone.Circular, 0.0f, 0.0f); mStealRelease = new GamePadTriggerInputAction(PlayerIndex.One, InputAction.ButtonAction.Released, InputAction.GamePadTrigger.Right, GamePadDeadZone.Circular, 0.0f, 0.0f); mPressDecBoneYaw = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.T); mPressIncBoneYaw = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.Y); mPressDecBonePitch = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.U); mPressIncBonePitch = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.I); mPressIncBoneRoll = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.O); mPressDecBoneRoll = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.P); mPressIncBoneIndex = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.OemPlus); mPressDecBoneIndex = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.OemMinus); mPressDecTransX = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.F); mPressIncTransX = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.G); mPressDecTransY = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.H); mPressIncTransY = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.J); mPressIncTransZ = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.K); mPressDecTransZ = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Keys.L); mSaveBoneTransforms = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Keys.OemQuestion); }
public ChimeraGame(string firstLevel) { mFirstLevelName = firstLevel; this.Window.AllowUserResizing = true; this.Window.ClientSizeChanged += ResizedWindow; Game = this; Graphics = new GraphicsDeviceManager(this); Graphics.PreferredBackBufferWidth = 1280; Graphics.PreferredBackBufferHeight = 720; Graphics.PreferMultiSampling = true; //Graphics.ToggleFullScreen(); Content.RootDirectory = "Content"; forward = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Microsoft.Xna.Framework.Input.Keys.W); celShading = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Microsoft.Xna.Framework.Input.Keys.F2); // DEBUG mDebugScreen = new Nuclex.UserInterface.Screen(Graphics.PreferredBackBufferWidth, Graphics.PreferredBackBufferHeight); mDebugGUI = new GuiManager(Services); mDebugGUI.Screen = mDebugScreen; DebugConsole debugConsole = new DebugConsole(); mDebugScreen.Desktop.Children.Add(debugConsole); mDebugInput = new InputManager(Services, Window.Handle); Components.Add(mDebugInput); Components.Add(mDebugGUI); mDebugGUI.DrawOrder = 1000; mDebugScreen.FocusedControl = DebugConsole.ConsoleInput; DebugConsole.AddCommand("exit", new DebugConsole.ConsoleCommand(ExitConsoleCommand)); DebugConsole.AddCommand("enableAllParts", new DebugConsole.ConsoleCommand(EnableParts)); DebugConsole.AddCommand("partMenu", new DebugConsole.ConsoleCommand(PartMenuCommand)); DebugConsole.AddCommand("resizeShadowCascade", new DebugConsole.ConsoleCommand(ResizeShadowCascadesCommand)); DebugConsole.AddCommand("collisions", new DebugConsole.ConsoleCommand(CollisionMeshCommand)); DebugConsole.AddCommand("debug", new DebugConsole.ConsoleCommand(DebugConsoleCommand)); DebugConsole.AddCommand("visualizeCascades", new DebugConsole.ConsoleCommand(VisualizeCascadesCommand)); DebugConsole.AddCommand("celShading", new DebugConsole.ConsoleCommand(CelShadingCommand)); DebugConsole.AddCommand("outlining", new DebugConsole.ConsoleCommand(OutliningCommand)); DebugConsole.AddCommand("drawBoundingBoxes", new DebugConsole.ConsoleCommand(BoundingBoxCommand)); DebugConsole.AddCommand("BirdsEyeView", new DebugConsole.ConsoleCommand(BirdsEyeViewCommand)); DebugConsole.AddCommand("BEV", new DebugConsole.ConsoleCommand(BirdsEyeViewCommand)); DebugConsole.AddCommand("level", new DebugConsole.ConsoleCommand(LoadLevel)); DebugConsole.AddCommand("toggleShadows", new DebugConsole.ConsoleCommand(ToggleShadows)); DebugConsole.AddCommand("wireframe", new DebugConsole.ConsoleCommand(WireframeCommand)); DebugConsole.Hide(); // END CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, Sensor.SensorGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, TerrainPhysics.TerrainPhysicsGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Sensor.SensorGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Projectile.SensorProjectileGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, Wormhole.WormholeGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, TerrainPhysics.TerrainPhysicsGroup), CollisionRule.NoBroadPhase); CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase); }