コード例 #1
0
        static void Main(string[] args)
        {
            ClientContext.PreloadNativeLibraries();
            using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter())
                using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.ButtonCallback"))
                {
                    // This is just one of the paths: specifically, the Hydra's left
                    // controller's button labelled "1". More are in the docs and/or listed on
                    // startup
#if NET20
                    using (var button1 = ButtonInterface.GetInterface(context, "/controller/left/1"))
#else
                    using (var button1 = context.GetButtonInterface("/controller/left/1"))
#endif
                    {
                        button1.StateChanged += button1_StateChanged;
                        // Pretend that this is your application's main loop
                        for (int i = 0; i < 1000000; ++i)
                        {
                            context.update();
                        }

                        Console.WriteLine("Library shut down; exiting.");
                    }
                }
        }
コード例 #2
0
        public static void Main(string[] args)
        {
            ClientContext.PreloadNativeLibraries();
            using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter())
                using (ClientContext context = new ClientContext("com.osvr.exampleclients.managed.TrackerCallback"))
                {
#if NET20
                    using (var button1 = ButtonInterface.GetInterface(context, "/controller/left/1"))
                        using (var button2 = ButtonInterface.GetInterface(context, "/controller/left/2"))
#else
                    using (var button1 = context.GetButtonInterface("/controller/left/1"))
                        using (var button2 = context.GetButtonInterface("/controller/left/2"))
#endif
                        {
                            // Pretend that this is your application's main loop
                            for (int i = 0; i < 1000000; ++i)
                            {
                                context.update();

                                // getting the current state calls into the native DLL, so
                                // try to get the state only once per frame.
                                var button1State = button1.GetState();
                                var button2State = button2.GetState();
                                if (button1State.Value == ButtonInterface.Pressed)
                                {
                                    Console.WriteLine("Pressing button 1!");
                                }

                                // re-using button1State
                                if (button1State.Value == ButtonInterface.Pressed &&
                                    button2State.Value == ButtonInterface.Pressed)
                                {
                                    Console.WriteLine("Pressing both button 1 and 2!");
                                }
                            }

                            Console.WriteLine("Library shut down; exiting.");
                        }
                }
        }