unsafe internal override bool OnInit() { NativeLibraryManager.PreLoadLibrary("NeoAxisCoreNative"); try { void *directInputTemp; GUID iidDirectInput = DInput.IID_IDirectInput8W; int hr = DInput.DirectInput8Create(ref iidDirectInput, out directInputTemp); if (global::DirectInput.Wrapper.FAILED(hr)) { Log.Warning("WindowsInputDeviceManager: DirectInput8Create failed."); return(false); } directInput = (IDirectInput *)directInputTemp; if (!CreateDevices()) { return(false); } } catch { return(false); } return(true); }
internal unsafe override void OnShutdown() { if (directInput != null) { IDirectInput.Release(directInput); directInput = null; } }
unsafe bool InitInternal(IntPtr windowHandle, IDirectInput *alreadyCreatedDirectInput) { int hr; if (alreadyCreatedDirectInput == null) { void */*IDirectInput*/ directInputTemp; GUID iidDIrectInput = DInput.IID_IDirectInput8W; hr = DInput.DirectInput8Create(ref iidDIrectInput, out directInputTemp); if (DirectInput.Wrapper.FAILED(hr)) { Log.Info("SystemMouseDevice: DirectInput: DirectInput8Create failed."); return(false); } directInput = (IDirectInput *)directInputTemp; needReleaseDirectInput = true; } else { directInput = alreadyCreatedDirectInput; } void */*IDirectInputDevice8*/ mouseDeviceTemp; GUID guidSysMouse = DInput.GUID_SysMouse; hr = IDirectInput.CreateDevice(directInput, ref guidSysMouse, out mouseDeviceTemp, null); if (Wrapper.FAILED(hr)) { Log.Info("SystemMouseDevice: DirectInput: CreateDevice failed."); return(false); } mouseDevice = (IDirectInputDevice8 *)mouseDeviceTemp; hr = IDirectInputDevice8.SetDataFormat(mouseDevice, DInput.Get_c_dfDIMouse()); if (Wrapper.FAILED(hr)) { Log.Info("SystemMouseDevice: DirectInput: SetDataFormat failed."); return(false); } //!!!!для Game.exe включать //if( windowHandle != IntPtr.Zero ) // Acquire( windowHandle ); return(true); }
/////////////////////////////////////////// unsafe public static bool Init(IntPtr windowHandle, IDirectInput *alreadyCreatedDirectInput) { if (instance != null) { Log.Fatal("SystemMouseDevice.Init: instance != null."); return(false); } NativeLibraryManager.PreLoadLibrary("NeoAxisCoreNative"); instance = new DirectInputMouseDevice(); if (!instance.InitInternal(windowHandle, alreadyCreatedDirectInput)) { Shutdown(); return(false); } return(true); }
unsafe void ShutdownInternal() { if (mouseDevice != null) { Unacquire(); IDirectInputDevice8.Release(mouseDevice); mouseDevice = null; } if (directInput != null) { if (needReleaseDirectInput) { IDirectInput.Release(directInput); } directInput = null; } }