コード例 #1
0
ファイル: MainForm.cs プロジェクト: thomas5lab/PSVRFramework
        private void VrSet_SensorDataUpdate(object sender, PSVRSensorEventArgs e)
        {
            if (BMI055Integrator.calibrating && blinkTimer == null)
            {
                blinkTimer = new System.Threading.Timer(blink, null, 150, 150);
            }
            else if (!BMI055Integrator.calibrating && blinkTimer != null)
            {
                blinkTimer.Change(Timeout.Infinite, Timeout.Infinite);
                blinkTimer = null;
                PSVRController.LedsDefault();
            }

            if (cnt++ > 10)
            {
                cnt = 0;
                tapper.Feed(e.SensorData);
            }


            lock (locker)
            {
                if (broadcaster != null)
                {
                    broadcaster.Broadcast(e.SensorData);
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!exit)
            {
                this.Hide();
                e.Cancel = true;
                return;
            }

            PSVRController.DeviceDisconnected();

            try
            {
                if (hookedEvents != null)
                {
                    hookedEvents.KeyDown -= HookedEvents_KeyDown;
                    hookedEvents.Dispose();
                }
            }
            catch { }

            trayIcon.Visible = false;

            if (CurrentOS.IsLinux)
            {
                Environment.Exit(0);
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: thomas5lab/PSVRFramework
        private void shellControl1_CommandEntered(object sender, CommandEnteredEventArgs e)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(e.Command))
                {
                    return;
                }

                if (e.Command.Length % 2 != 0)
                {
                    shellControl1.WriteLine("HEX string does not respect byte boundary");
                    return;
                }

                byte[] data = StringToByteArray(e.Command);
                var    res  = PSVRController.Raw(data);

                if (!res)
                {
                    shellControl1.WriteLine("Report NOT sent");
                }
                else
                {
                    shellControl1.WriteLine("Report sent");
                }
            }
            catch { shellControl1.WriteLine("Malformed HEX string"); }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
        private void detectTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                detectTimer.Enabled = false;
                var vrSet = new PSVR(Settings.Instance.EnableUDPBroadcast);
                PSVRController.DeviceConnected(vrSet);
                vrSet.SensorDataUpdate += VrSet_SensorDataUpdate;
                vrSet.Removed          += VrSet_Removed;

                Task.Run(() =>
                {
                    PSVRController.HeadsetOn();
                    PSVRController.EnableVRMode();
                    Thread.Sleep(1500);
                    PSVRController.EnableCinematicMode();
                    Thread.Sleep(1500);
                    PSVRController.ApplyCinematicSettings();
                });

                lblStatus.Text       = "VR set found";
                grpFunctions.Enabled = true;
                grpCinematic.Enabled = true;
                grpLeds.Enabled      = true;
            }
            catch (Exception ex) { detectTimer.Enabled = true; }
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: thomas5lab/PSVRFramework
        private void detectTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                detectTimer.Enabled = false;
                var vrSet = new PSVR(Settings.Instance.EnableUDPBroadcast);
                PSVRController.DeviceConnected(vrSet);
                vrSet.SensorDataUpdate += VrSet_SensorDataUpdate;
                vrSet.Removed          += VrSet_Removed;
                vrSet.INReport         += VrSet_CommandResponse;
                ThreadPool.QueueUserWorkItem((a) =>
                {
                    PSVRController.RequestDeviceInfo();
                    PSVRController.HeadsetOn();
                    PSVRController.EnableVRMode();
                    Thread.Sleep(1500);
                    PSVRController.EnableCinematicMode();
                    Thread.Sleep(1500);
                    PSVRController.ApplyCinematicSettings();
                });

                lblStatus.Text       = "VR set found";
                grpFunctions.Enabled = true;
                grpCinematic.Enabled = true;
                grpLeds.Enabled      = true;
            }
            catch { detectTimer.Enabled = true; }
        }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button3_Click(object sender, EventArgs e)
 {
     Task.Run(async() =>
     {
         PSVRController.EnableVRTracking();
         await Task.Delay(1500);
         PSVRController.ApplyLedSettings();
     });
 }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
        private void button15_Click(object sender, EventArgs e)
        {
            Settings set = Settings.Instance;

            set.ScreenDistance = (byte)trkDistance.Value;
            set.ScreenSize     = (byte)trkSize.Value;
            set.Brightness     = (byte)trkBrightness.Value;
            Settings.SaveSettings();
            PSVRController.ApplyCinematicSettings();
        }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: thomas5lab/PSVRFramework
        void blink(object state)
        {
            ledsOn = !ledsOn;

            if (ledsOn)
            {
                PSVRController.LedsOn();
            }
            else
            {
                PSVRController.LedsOff();
            }
        }
コード例 #9
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
        private void HookedEvents_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                var settings = Settings.Instance;

                if (settings.ControlModifier != e.Control || settings.ShiftModifier != e.Shift || settings.AltModifier != e.Alt)
                {
                    return;
                }

                if (e.KeyCode == settings.HeadSetOn)
                {
                    PSVRController.HeadsetOn();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.HeadSetOff)
                {
                    PSVRController.HeadsetOff();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.EnableVRAndTracking)
                {
                    PSVRController.EnableVRTracking();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.EnableVR)
                {
                    PSVRController.EnableVRMode();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.EnableTheater)
                {
                    PSVRController.EnableCinematicMode();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.Recenter)
                {
                    PSVRController.Recenter();
                    e.Handled = true;
                }
                else if (e.KeyCode == settings.Shutdown)
                {
                    PSVRController.Shutdown();
                    e.Handled = true;
                }
            }
            catch { }
        }
コード例 #10
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button7_Click(object sender, EventArgs e)
 {
     PSVRController.Shutdown();
 }
コード例 #11
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button6_Click(object sender, EventArgs e)
 {
     PSVRController.Recenter();
 }
コード例 #12
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button5_Click(object sender, EventArgs e)
 {
     PSVRController.EnableCinematicMode();
 }
コード例 #13
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button4_Click(object sender, EventArgs e)
 {
     PSVRController.EnableVRMode();
 }
コード例 #14
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
 private void button2_Click(object sender, EventArgs e)
 {
     PSVRController.HeadsetOff();
 }
コード例 #15
0
ファイル: MainForm.cs プロジェクト: CryptArc/PSVRFramework
        private void button17_Click(object sender, EventArgs e)
        {
            LedMask mask = LedMask.None;

            switch (cbLeds.SelectedIndex)
            {
            case 0:
                Settings.Instance.LedAIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedA;
                break;

            case 1:
                Settings.Instance.LedBIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedB;
                break;

            case 2:
                Settings.Instance.LedCIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedC;
                break;

            case 3:
                Settings.Instance.LedDIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedD;
                break;

            case 4:
                Settings.Instance.LedEIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedE;
                break;

            case 5:
                Settings.Instance.LedFIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedF;
                break;

            case 6:
                Settings.Instance.LedGIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedG;
                break;

            case 7:
                Settings.Instance.LedHIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedH;
                break;

            case 8:
                Settings.Instance.LedIIntensity = (byte)trkLedIntensity.Value;
                mask = LedMask.LedI;
                break;

            case 9:
                Settings.Instance.LedAIntensity                                 =
                    Settings.Instance.LedBIntensity                             =
                        Settings.Instance.LedCIntensity                         =
                            Settings.Instance.LedDIntensity                     =
                                Settings.Instance.LedEIntensity                 =
                                    Settings.Instance.LedFIntensity             =
                                        Settings.Instance.LedGIntensity         =
                                            Settings.Instance.LedHIntensity     =
                                                Settings.Instance.LedIIntensity = (byte)trkLedIntensity.Value;

                mask = LedMask.All;
                break;
            }

            if (mask != LedMask.None)
            {
                Settings.SaveSettings();
                PSVRController.ApplyLedSettings();
            }
        }
コード例 #16
0
        private void ProcessCommand(RemoteCommand cmd)
        {
            switch (cmd.Command)
            {
            case "HeadsetOn":
                PSVRController.HeadsetOn();
                break;

            case "HeadsetOff":
                PSVRController.HeadsetOff();
                break;

            case "EnableVRTracking":
                PSVRController.EnableVRTracking();
                break;

            case "EnableVRMode":
                PSVRController.EnableVRMode();
                break;

            case "EnableCinematicMode":
                PSVRController.EnableCinematicMode();
                break;

            case "Recenter":
                PSVRController.Recenter();
                break;

            case "Shutdown":
                PSVRController.Shutdown();
                break;

            case "CinematicSettings":

                CinematicSettingsCommand ccmd = cmd as CinematicSettingsCommand;

                if (ccmd != null)
                {
                    bool apply = false;

                    if (ccmd.Brightness != null && ccmd.Brightness.HasValue)
                    {
                        var bright = ccmd.Brightness.Value;

                        if (bright > 32)
                        {
                            return;
                        }

                        Settings.Instance.Brightness = bright;
                        apply = true;
                    }

                    if (ccmd.Size != null && ccmd.Size.HasValue)
                    {
                        var siz = ccmd.Size.Value + 26;

                        if (siz > 80)
                        {
                            Settings.ReadSettings();
                            return;
                        }

                        Settings.Instance.ScreenSize = (byte)siz;
                        apply = true;
                    }

                    if (ccmd.Distance != null && ccmd.Distance.HasValue)
                    {
                        var dist = ccmd.Distance.Value + 2;

                        if (dist > 50)
                        {
                            Settings.ReadSettings();
                            return;
                        }

                        Settings.Instance.ScreenDistance = (byte)dist;
                        apply = true;
                    }

                    if (apply)
                    {
                        PSVRController.ApplyCinematicSettings();
                    }
                }

                break;

            case "LedSettings":

                LEDSettingsCommand lcmd = cmd as LEDSettingsCommand;

                if (lcmd != null)
                {
                    bool apply = false;

                    if (lcmd.LedA != null && lcmd.LedA.HasValue)
                    {
                        if (lcmd.LedA.Value > 100)
                        {
                            return;
                        }

                        Settings.Instance.LedAIntensity = lcmd.LedA.Value;
                        apply = true;
                    }

                    if (lcmd.LedB != null && lcmd.LedB.HasValue)
                    {
                        if (lcmd.LedB.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedBIntensity = lcmd.LedB.Value;
                        apply = true;
                    }

                    if (lcmd.LedC != null && lcmd.LedC.HasValue)
                    {
                        if (lcmd.LedC.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedCIntensity = lcmd.LedC.Value;
                        apply = true;
                    }

                    if (lcmd.LedD != null && lcmd.LedD.HasValue)
                    {
                        if (lcmd.LedD.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedDIntensity = lcmd.LedD.Value;
                        apply = true;
                    }

                    if (lcmd.LedE != null && lcmd.LedE.HasValue)
                    {
                        if (lcmd.LedE.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedEIntensity = lcmd.LedE.Value;
                        apply = true;
                    }

                    if (lcmd.LedF != null && lcmd.LedF.HasValue)
                    {
                        if (lcmd.LedF.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedFIntensity = lcmd.LedF.Value;
                        apply = true;
                    }

                    if (lcmd.LedG != null && lcmd.LedG.HasValue)
                    {
                        if (lcmd.LedG.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedGIntensity = lcmd.LedG.Value;
                        apply = true;
                    }

                    if (lcmd.LedH != null && lcmd.LedH.HasValue)
                    {
                        if (lcmd.LedH.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedHIntensity = lcmd.LedH.Value;
                        apply = true;
                    }

                    if (lcmd.LedI != null && lcmd.LedI.HasValue)
                    {
                        if (lcmd.LedI.Value > 100)
                        {
                            Settings.ReadSettings();
                            return;
                        }
                        Settings.Instance.LedIIntensity = lcmd.LedI.Value;
                        apply = true;
                    }

                    if (apply)
                    {
                        PSVRController.ApplyLedSettings();
                    }
                }

                break;

            case "StoreSettings":
                Settings.SaveSettings();
                break;

            case "DiscardSettings":
                Settings.ReadSettings();
                break;
            }
        }
コード例 #17
0
ファイル: MainForm.cs プロジェクト: thomas5lab/PSVRFramework
 private void Tapper_Tapped(object sender, EventArgs e)
 {
     PSVRController.Recenter();
 }