public TrueCraftGame(MultiplayerClient client, IPEndPoint endPoint) { Window.Title = "TrueCraft"; Content.RootDirectory = "Content"; Graphics = new GraphicsDeviceManager(this); Graphics.SynchronizeWithVerticalRetrace = false; Graphics.IsFullScreen = UserSettings.Local.IsFullscreen; Graphics.PreferredBackBufferWidth = UserSettings.Local.WindowResolution.Width; Graphics.PreferredBackBufferHeight = UserSettings.Local.WindowResolution.Height; Graphics.ApplyChanges(); Window.ClientSizeChanged += Window_ClientSizeChanged; Client = client; EndPoint = endPoint; LastPhysicsUpdate = DateTime.MinValue; NextPhysicsUpdate = DateTime.MinValue; PendingMainThreadActions = new ConcurrentBag<Action>(); MouseCaptured = true; Bobbing = 0; KeyboardComponent = new KeyboardHandler(this); Components.Add(KeyboardComponent); MouseComponent = new MouseHandler(this); Components.Add(MouseComponent); GamePadComponent = new GamePadHandler(this); Components.Add(GamePadComponent); }
public static void Initialize() { _kHandler = GetComponent <KeyboardHandler>(); _gHandler = GetComponent <GamePadHandler>(); _cHandler = GetComponent <ControlsHandler>(); var mapData = KeyboardData.Load(); _aKey = mapData.AButtonKey; _bKey = mapData.BButtonKey; _startKey = mapData.StartButtonKey; _selectKey = mapData.SelectButtonKey; }
static void Main(string[] args) { // Initialize DirectInput var directInput = new DirectInput(); // Find a Joystick Guid var joystickGuid = Guid.Empty; var GamePads = directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices); var JoySticks = directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices); foreach (var deviceInstance in GamePads) { joystickGuid = deviceInstance.InstanceGuid; } // If Gamepad not found, look for a Joystick if (joystickGuid == Guid.Empty) { foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices)) { joystickGuid = deviceInstance.InstanceGuid; } } // If Joystick not found, throws an error if (joystickGuid == Guid.Empty) { Console.WriteLine("No joystick/Gamepad found."); Console.ReadKey(); Environment.Exit(1); } GamePadHandler Hand = new GamePadHandler(new JoyHandler()); Hand.ConnectJoystick(joystickGuid.ToString()); var v = Hand.GetGuids(); // while shit so program doesn't stop while (true) { System.Threading.Thread.Sleep(1000); } }
internal void InitGamePadHandlers() { _gamePadHandlers = new GamePadHandler[MaxGamePads]; for (int i = 0; i < MaxGamePads; i++) { var handle = _gamePadHandlers[i] = new GamePadHandler(i); // Redirect Events. handle.OnConnection += () => OnConnection?.Invoke(handle); handle.OnDisconnect += () => OnDisconnected?.Invoke(handle); handle.OnButtonDown += (button, value) => OnButtonDown?.Invoke(handle, button, value); handle.OnButtonUp += (button, value) => OnButtonUp?.Invoke(handle, button, value); handle.OnButtonPressed += (button, value) => OnButtonPressed?.Invoke(handle, button, value); handle.OnButtonClicked += (button, value) => OnButtonClicked?.Invoke(handle, button, value); handle.OnButtonReleased += (button, value) => OnButtonReleased?.Invoke(handle, button, value); } }
public MainWindow() { InitializeComponent(); RefreshPortDropDown(); dropdownPorts.SelectedIndex = PortNames.Length - 2; // create SerialHandler BlueToothHandler = new LSTBlueToothHandler(this); // create GamePad handler GamePHandler = new GamePadHandler(BlueToothHandler); RefreshPadDropDown(); dropdownPads.SelectedIndex = 0; SetBindings(); PerformanceMode = (bool)cbPerformance.IsChecked; AppendLog("LST BlueTooth Client ready..."); }
/// <summary> /// Initialize the whole system /// </summary> internal void Initialize() { //Load configuration var cfg = ConfigurationFileParser.LoadConfigurationFile("Configuration.json"); var ptzManager = SimpleIoc.Default.GetInstance <IPTZManager>(); ptzManager.InitSeetings(cfg); //Create and connect connection to ATEM var atemHandler = new AtemSwitcherHandler(); var atemParser = new AtemSwitcherParser(cfg.AtemHost); atemHandler.Initialize(atemParser); ptzManager.SetSwitcherHandler(atemHandler); //Create How many Camera foreach (var camcfg in cfg.Cameras) { var cam = new CameraHandler(); var camParser = new CameraPTC140Parser(); var socket = new SocketAutoConnectParser(); socket.Initialize(camcfg.CameraName, camcfg.CameraHost, camcfg.CameraPort, camParser); camParser.Initialize(socket); cam.Initialize(camParser); ptzManager.AddCameraHandler(cam); } //Create pad var pad = new GamePadHandler(); var hidParser = new HIDParser(); hidParser.Initialize(cfg.GamePads, pad); pad.Initialize(hidParser, ptzManager, cfg.CamSpeed); ptzManager.AddGamePad(pad); }
/// <summary> /// Called when the window is loading, only to be used by the startup process. /// </summary> void Window_Load(object sender, EventArgs e) { SysConsole.Output(OutputType.CLIENTINIT, "Window generated!"); DPIScale = Window.Width / CVars.r_width.ValueF; SysConsole.Output(OutputType.CLIENTINIT, "DPIScale is " + DPIScale + "!"); SysConsole.Output(OutputType.CLIENTINIT, "Setting up a game engine backend placeholder..."); FakeEngine(); SysConsole.Output(OutputType.CLIENTINIT, "Loading base textures..."); PreInitRendering(); Textures = new TextureEngine(); Textures.InitTextureSystem(Files); ItemFrame = Textures.GetTexture("ui/hud/item_frame"); CWindow.Textures = Textures; SysConsole.Output(OutputType.CLIENTINIT, "Loading shaders..."); Shaders = new ShaderEngine(); GLVendor = GL.GetString(StringName.Vendor); GLVersion = GL.GetString(StringName.Version); GLRenderer = GL.GetString(StringName.Renderer); SysConsole.Output(OutputType.CLIENTINIT, "Vendor: " + GLVendor + ", GLVersion: " + GLVersion + ", Renderer: " + GLRenderer); if (GLVendor.ToLowerFast().Contains("intel")) { SysConsole.Output(OutputType.CLIENTINIT, "Disabling good graphics (Appears to be Intel: '" + GLVendor + "')"); Shaders.MCM_GOOD_GRAPHICS = false; } Shaders.InitShaderSystem(); CWindow.Shaders = Shaders; Engine.GetShaders(); GraphicsUtil.CheckError("Load - Shaders"); SysConsole.Output(OutputType.CLIENTINIT, "Loading animation engine..."); Animations = new AnimationEngine(); CWindow.Animations = Animations; SysConsole.Output(OutputType.CLIENTINIT, "Loading model engine..."); Models = new ModelEngine(); Models.Init(Animations, CWindow); LODHelp = new ModelLODHelper(this); CWindow.Models = Models; SysConsole.Output(OutputType.CLIENTINIT, "Loading rendering helper..."); Rendering = new Renderer(Textures, Shaders, Models); Rendering.Init(); CWindow.Rendering3D = Rendering; CWindow.Rendering2D = new Renderer2D(Textures, Shaders); CWindow.Rendering2D.Init(); SysConsole.Output(OutputType.CLIENTINIT, "Preparing load screen..."); load_screen = Textures.GetTexture("ui/menus/loadscreen"); Establish2D(); SWLoading.Start(); PassLoadScreen(); SysConsole.Output(OutputType.CLIENTINIT, "Loading block textures..."); TBlock = new TextureBlock(); TBlock.Generate(this, CVars, Textures, false); GraphicsUtil.CheckError("Load - Textures"); SysConsole.Output(OutputType.CLIENTINIT, "Loading fonts..."); Fonts = new GLFontEngine(Textures, Shaders); Fonts.Init(Files); FontSets = new FontSetEngine(Fonts); FontSets.Init((subdat) => Languages.GetText(Files, subdat), () => Ortho, () => GlobalTickTimeLocal); GraphicsUtil.CheckError("Load - Fonts"); PassLoadScreen(); CWindow.FontSets = FontSets; CWindow.GLFonts = Fonts; SysConsole.Output(OutputType.CLIENTINIT, "Loading general graphics settings..."); CVars.r_vsync.OnChanged += OnVsyncChanged; OnVsyncChanged(CVars.r_vsync, EventArgs.Empty); CVars.r_cloudshadows.OnChanged += OnCloudShadowChanged; CVars.r_transpll.OnChanged += OnLLChanged; OnLLChanged(CVars.r_transpll, EventArgs.Empty); GraphicsUtil.CheckError("Load - General Graphics"); SysConsole.Output(OutputType.CLIENTINIT, "Loading UI engine..."); UIConsole.InitConsole(); // TODO: make this non-static InitChatSystem(); PassLoadScreen(); GraphicsUtil.CheckError("Load - UI"); SysConsole.Output(OutputType.CLIENTINIT, "Preparing rendering engine..."); InitRendering(); GraphicsUtil.CheckError("Load - Rendering"); SysConsole.Output(OutputType.CLIENTINIT, "Loading particle effect engine..."); Particles = new ParticleHelper(this) { Engine = new ParticleEngine(this) }; SysConsole.Output(OutputType.CLIENTINIT, "Preparing mouse and keyboard handlers..."); KeyHandler.Init(); Gamepad = new GamePadHandler(); Gamepad.Init(this); PassLoadScreen(); GraphicsUtil.CheckError("Load - Keyboard/mouse"); SysConsole.Output(OutputType.CLIENTINIT, "Building the sound system..."); Sounds.Init(Engine); GraphicsUtil.CheckError("Load - Sound"); SysConsole.Output(OutputType.CLIENTINIT, "Building game world..."); BuildWorld(); PassLoadScreen(); GraphicsUtil.CheckError("Load - World"); SysConsole.Output(OutputType.CLIENTINIT, "Preparing networking..."); Network = new NetworkBase(this); RegisterDefaultEntityTypes(); GraphicsUtil.CheckError("Load - Net"); PassLoadScreen(); SysConsole.Output(OutputType.CLIENTINIT, "Loading Voxel computer..."); try { VoxelComputer = new VoxelComputeEngine(); VoxelComputer.Init(this); } catch (Exception ex) { SysConsole.Output(ex); } PassLoadScreen(); SysConsole.Output(OutputType.CLIENTINIT, "Playing background music..."); BackgroundMusic(); CVars.a_musicvolume.OnChanged += OnMusicVolumeChanged; CVars.a_musicpitch.OnChanged += OnMusicPitchChanged; CVars.a_music.OnChanged += OnMusicChanged; CVars.a_echovolume.OnChanged += OnEchoVolumeChanged; OnEchoVolumeChanged(null, null); PassLoadScreen(); SysConsole.Output(OutputType.CLIENTINIT, "Setting up screens..."); TheMainMenuScreen = new MainMenuScreen(this); TheGameScreen = new GameScreen(this); TheSingleplayerMenuScreen = new SingleplayerMenuScreen(this); TheLoadScreen = new LoadScreen(this); CScreen = TheMainMenuScreen; SysConsole.Output(OutputType.CLIENTINIT, "Trying to grab RawGamePad..."); try { RawGamePad = new XInput(); } catch (Exception ex) { SysConsole.Output(OutputType.CLIENTINIT, "Failed to grab RawGamePad: " + ex.Message); } SysConsole.Output(OutputType.CLIENTINIT, "Preparing inventory..."); InitInventory(); PassLoadScreen(); SysConsole.Output(OutputType.CLIENTINIT, "Creating sky..."); CreateSkyBox(); SysConsole.Output(OutputType.CLIENTINIT, "Requesting a menu server..."); LocalServer?.ShutDown(); LocalServer = new Server(28009) { IsMenu = true }; // TODO: Grab first free port? Object locky = new Object(); bool ready = false; Schedule.StartAsyncTask(() => { LocalServer.StartUp("menu", () => { lock (locky) { ready = true; } }); }); while (true) { lock (locky) { if (ready) { break; } } PassLoadScreen(); Thread.Sleep(50); } SysConsole.Output(OutputType.CLIENTINIT, "Connecting to a menu server..."); Network.LastConnectionFailed = false; Network.Connect("localhost", "28009", true, null); // TODO: Grab accurate local IP? Stopwatch sw = new Stopwatch(); sw.Start(); bool annc = false; while (true) { if (Network.LastConnectionFailed) { SysConsole.Output(OutputType.CLIENTINIT, "Failed to connect to menu server! Failing!"); Window.Close(); return; } if (Network.IsAlive) { break; } sw.Stop(); long ms = sw.ElapsedMilliseconds; sw.Start(); if (ms > 10000 && !annc) { annc = true; SysConsole.Output(OutputType.WARNING, "Taking weirdly long, did something fail?!"); } if (ms > 20000) { SysConsole.Output(OutputType.CLIENTINIT, "Timed out while trying to connect to menu server! Failing!"); Window.Close(); return; } PassLoadScreen(); Thread.Sleep(50); } SysConsole.Output(OutputType.CLIENTINIT, "Showing main menu..."); ShowMainMenu(); GraphicsUtil.CheckError("Load - Final"); SysConsole.Output(OutputType.CLIENTINIT, "Ready and looping!"); }
void tick(double delt) { lock (TickLock) { Delta = delt * CVars.g_timescale.ValueD; GlobalTickTimeLocal += Delta; try { opsat += Delta; if (opsat >= 1) { opsat -= 1; OncePerSecondActions(); } Schedule.RunAllSyncTasks(Delta); Textures.Update(GlobalTickTimeLocal); TBlock.Tick(Delta); Shaders.Update(GlobalTickTimeLocal); Models.Update(GlobalTickTimeLocal); KeyHandler.Tick(); if (RawGamePad != null) { for (int i = 0; i < 4; i++) { if (GamePad.GetCapabilities(i).IsConnected) { RawGamePad.SetVibration(i, GamePadVibration, GamePadVibration); } } } GamePadHandler.Tick(Delta); MouseHandler.Tick(); UIConsole.Tick(); Commands.Tick(); TickWorld(Delta); TickChatSystem(); TickInvMenu(); CScreen.FullTick(Delta); Sounds.Update(MainWorldView.CameraPos, MainWorldView.CameraTarget - MainWorldView.CameraPos, MainWorldView.CameraUp(), Player.GetVelocity(), Window.Focused); Schedule.RunAllSyncTasks(0); Player.PostTick(); TheRegion.SolveJoints(); //ProcessChunks(); } catch (Exception ex) { SysConsole.Output(OutputType.ERROR, "Ticking: " + ex.ToString()); } PlayerEyePosition = Player.GetCameraPosition(); RayCastResult rcr; Location forw = Player.ForwardVector(); bool h = TheRegion.SpecialCaseRayTrace(PlayerEyePosition, forw, 100, MaterialSolidity.ANY, IgnorePlayer, out rcr); CameraFinalTarget = h ? new Location(rcr.HitData.Location) - new Location(rcr.HitData.Normal).Normalize() * 0.01: PlayerEyePosition + forw * 100; CameraImpactNormal = h ? new Location(rcr.HitData.Normal).Normalize() : Location.Zero; CameraDistance = h ? rcr.HitData.T: 100; } double cping = Math.Max(LastPingValue, GlobalTickTimeLocal - LastPingTime); AveragePings.Push(new KeyValuePair <double, double>(GlobalTickTimeLocal, cping)); while ((GlobalTickTimeLocal - AveragePings.Peek().Key) > 1) { AveragePings.Pop(); } APing = 0; for (int i = 0; i < AveragePings.Length; i++) { APing += AveragePings[i].Value; } APing /= (double)AveragePings.Length; }
/// <summary> /// Called when the window is loading, only to be used by the startup process. /// </summary> void Window_Load(object sender, EventArgs e) { SysConsole.Output(OutputType.INIT, "Window generated!"); DPIScale = Window.Width / CVars.r_width.ValueF; SysConsole.Output(OutputType.INIT, "DPIScale is " + DPIScale + "!"); SysConsole.Output(OutputType.INIT, "Loading base textures..."); PreInitRendering(); Textures = new TextureEngine(); Textures.InitTextureSystem(this); ItemFrame = Textures.GetTexture("ui/hud/item_frame"); SysConsole.Output(OutputType.INIT, "Loading shaders..."); Shaders = new ShaderEngine(); GLVendor = GL.GetString(StringName.Vendor); CVars.s_glvendor.Value = GLVendor; GLVersion = GL.GetString(StringName.Version); CVars.s_glversion.Value = GLVersion; GLRenderer = GL.GetString(StringName.Renderer); CVars.s_glrenderer.Value = GLRenderer; SysConsole.Output(OutputType.INIT, "Vendor: " + GLVendor + ", GLVersion: " + GLVersion + ", Renderer: " + GLRenderer); if (GLVendor.ToLowerFast().Contains("intel")) { SysConsole.Output(OutputType.INIT, "Disabling good graphics (Appears to be Intel: '" + GLVendor + "')"); Shaders.MCM_GOOD_GRAPHICS = false; } Shaders.InitShaderSystem(this); View3D.CheckError("Load - Shaders"); SysConsole.Output(OutputType.INIT, "Loading rendering helper..."); Rendering = new Renderer(Textures, Shaders); Rendering.Init(); SysConsole.Output(OutputType.INIT, "Preparing load screen..."); Texture load_screen = Textures.GetTexture("ui/menus/loadscreen"); load_screen.Bind(); Shaders.ColorMultShader.Bind(); Establish2D(); Rendering.RenderRectangle(0, 0, Window.Width, Window.Height); Window.SwapBuffers(); SysConsole.Output(OutputType.INIT, "Loading block textures..."); TBlock = new TextureBlock(); TBlock.Generate(this, CVars, Textures); View3D.CheckError("Load - Textures"); SysConsole.Output(OutputType.INIT, "Loading fonts..."); Fonts = new GLFontEngine(Shaders); Fonts.Init(this); FontSets = new FontSetEngine(Fonts); FontSets.Init(this); View3D.CheckError("Load - Fonts"); SysConsole.Output(OutputType.INIT, "Loading animation engine..."); Animations = new AnimationEngine(); SysConsole.Output(OutputType.INIT, "Loading model engine..."); Models = new ModelEngine(); Models.Init(Animations, this); SysConsole.Output(OutputType.INIT, "Loading general graphics settings..."); CVars.r_vsync.OnChanged += onVsyncChanged; onVsyncChanged(CVars.r_vsync, null); CVars.r_cloudshadows.OnChanged += onCloudShadowChanged; View3D.CheckError("Load - General Graphics"); SysConsole.Output(OutputType.INIT, "Loading UI engine..."); UIConsole.InitConsole(); // TODO: make this non-static InitChatSystem(); View3D.CheckError("Load - UI"); SysConsole.Output(OutputType.INIT, "Preparing rendering engine..."); InitRendering(); View3D.CheckError("Load - Rendering"); SysConsole.Output(OutputType.INIT, "Loading particle effect engine..."); Particles = new ParticleHelper(this) { Engine = new ParticleEngine(this) }; SysConsole.Output(OutputType.INIT, "Preparing mouse, keyboard, and gamepad handlers..."); KeyHandler.Init(); GamePadHandler.Init(); View3D.CheckError("Load - Keyboard/mouse"); SysConsole.Output(OutputType.INIT, "Building the sound system..."); Sounds = new SoundEngine(); Sounds.Init(this, CVars); View3D.CheckError("Load - Sound"); SysConsole.Output(OutputType.INIT, "Building game world..."); BuildWorld(); View3D.CheckError("Load - World"); SysConsole.Output(OutputType.INIT, "Preparing networking..."); Network = new NetworkBase(this); RegisterDefaultEntityTypes(); View3D.CheckError("Load - Net"); SysConsole.Output(OutputType.INIT, "Playing background music..."); BackgroundMusic(); CVars.a_musicvolume.OnChanged += onMusicVolumeChanged; CVars.a_musicpitch.OnChanged += onMusicPitchChanged; CVars.a_music.OnChanged += onMusicChanged; CVars.a_echovolume.OnChanged += OnEchoVolumeChanged; OnEchoVolumeChanged(null, null); SysConsole.Output(OutputType.INIT, "Setting up screens..."); TheMainMenuScreen = new MainMenuScreen(this); TheGameScreen = new GameScreen(this); TheSingleplayerMenuScreen = new SingleplayerMenuScreen(this); SysConsole.Output(OutputType.INIT, "Preparing inventory..."); InitInventory(); SysConsole.Output(OutputType.INIT, "Showing main menu..."); ShowMainMenu(); SysConsole.Output(OutputType.INIT, "Trying to grab RawGamePad..."); try { RawGamePad = new XInput(); } catch (Exception ex) { SysConsole.Output(OutputType.INIT, "Failed to grab RawGamePad: " + ex.Message); } View3D.CheckError("Load - Final"); SysConsole.Output(OutputType.INIT, "Ready and looping!"); }
private void Disconnected(GamePadHandler handler) { Log.Default.Write("Disconnected"); }
//public void ButtonDown(GamePadHandler gamepad, Buttons button, float value) => _bufferedInput.Add(button); //public void ButtonUp(GamePadHandler gamepad, Buttons button, float value) => _bufferedInput.Remove(button); private void Connected(GamePadHandler handler) { Log.Default.Write("Connection Made"); }