示例#1
0
        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);
        }
示例#2
0
 internal unsafe override void OnShutdown()
 {
     if (directInput != null)
     {
         IDirectInput.Release(directInput);
         directInput = null;
     }
 }
示例#3
0
        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);
        }
示例#4
0
        ///////////////////////////////////////////

        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);
        }
示例#5
0
        unsafe void ShutdownInternal()
        {
            if (mouseDevice != null)
            {
                Unacquire();
                IDirectInputDevice8.Release(mouseDevice);
                mouseDevice = null;
            }

            if (directInput != null)
            {
                if (needReleaseDirectInput)
                {
                    IDirectInput.Release(directInput);
                }
                directInput = null;
            }
        }