예제 #1
0
        public MainPage()
        {
            this.InitializeComponent();
            InputManager inputManager = new InputManager(InputLayerRect);

            Sketch = new Sketch();
            Sketch.SkiaManager.Init(SKCanvasView.Invalidate, SKMatrix.MakeScale(1, -1));
            System.Diagnostics.Debug.WriteLine("MainPageThread:" + Thread.CurrentThread.ManagedThreadId);

            BluetoothManager = new BluetoothManager();

            ExampleSketchObject = Sketch.SketchEngine.Instantiate <ExampleSketchObject>();
            Sketch.SketchEngine.Instantiate <GridRenderer>();
            Sketch.SketchEngine.Instantiate <PointerInfoBoard>();
            Sketch.SketchEngine.Instantiate <SketchBorderRenderer>();
            sketchInputManager = Sketch.SketchEngine.Instantiate <SketchInputManager>();
            sketchInputManager.Init(inputManager);

            Sketch.Start();

            var joystick = Sketch.SketchEngine.Instantiate <ColorJoystick>();

            joystick.RectTransform.AnchorMax = new Vector2(0, 0);
            joystick.RectTransform.AnchorMin = new Vector2(0, 0);
            joystick.RectTransform.OffsetMax = new Vector2(-100, -100);
            joystick.RectTransform.OffsetMin = new Vector2(100, 100);
            joystick.Level = 3;

            var joystick2 = Sketch.SketchEngine.Instantiate <LineAreaJoystick <byte> >();

            joystick2.RectTransform.AnchorMax = new Vector2(0, 0);
            joystick2.RectTransform.AnchorMin = new Vector2(0, 0);
            joystick2.RectTransform.OffsetMax = new Vector2(-10, -10);
            joystick2.RectTransform.OffsetMin = new Vector2(-2000, 2000);
            joystick2.Level = 2;
            //InputLayerRect.TransformMatrix;
            Matrix3x2 matrix = Matrix3x2.CreateScale(0.2f, -0.2f);

            sketchInputManager.InputSpaceToSketchSpaceMatrix = matrix;
            Sketch.SkiaManager.BeforePaint += SkiaManager_BeforePaint;


            /*
             * var characteristicDict = new Dictionary<Guid, List<CharacteristicProfile>>();
             * characteristicDict.Add(KeyboardServiceWrapper.Guid, new List<CharacteristicProfile>()
             * {
             *  new CharacteristicProfile
             *  {
             *      Notified = true,
             *      Guid = Constants.KeyActionCharacteristicWrapper
             *  }
             * });
             * var serviceId = new List<Guid>
             * {
             *  GyroscopeRfcommServiceConnectionWrapper.RfcommServiceId
             * };
             * ConnectionProfile profile = new ConnectionProfile()
             * {
             *  RequiredCharacteristicGuids = characteristicDict,
             *  RequiredServiceGuids = serviceId
             * };
             *
             * TestJitterFixer.DataEmited += TestJitterFixer_DataEmited;
             * var dialog = new BleDeviceSelectorDialog(BluetoothManager, profile);
             * dialog.Closed += Dialog_Closed;
             * dialog.ShowAsync();
             */
        }
예제 #2
0
        public MainPage()
        {
            InitializeComponent();
            //AbsoluteLayout.SetLayoutFlags(CanvasView, AbsoluteLayoutFlags.All);
            //AbsoluteLayout.SetLayoutBounds(CanvasView, new Rectangle(0, 0, 1, 1));
            var bluetoothManager        = DependencyService.Get <IManagerManager>().BluetoothManager;
            var deviceInfomationService = new DeviceInfomationServiceBuilder(bluetoothManager).Build();

            bluetoothManager.GattSever.AddService(new DeviceInfomationServiceBuilder(bluetoothManager).Build());
            //bluetoothManager.GattSever.AddService(new BatteryServiceWrapper(bluetoothManager).GattServerService);
            bluetoothManager.GattSever.AddService(new RfcommServerServiceWrapper(bluetoothManager).GattServerService);
            KeyboardServiceWrapper = new KeyboardServiceWrapper(bluetoothManager);
            bluetoothManager.GattSever.AddService(KeyboardServiceWrapper.GattServerService);
            bluetoothManager.GattSever.StartAdvertising();

            var createServiceProviderTask = bluetoothManager.CreateRfcommServiceProviderAsync(GyroscopeRfcommServiceConnectionWrapper.RfcommServiceId);

            createServiceProviderTask.Wait();
            var gyroRfcommServiceProvider = createServiceProviderTask.Result;

            gyroRfcommServiceProvider.OnConnectionReceived += GyroRfcommServiceProvider_OnConnectionReceived;
            gyroRfcommServiceProvider.StartAdvertising();
            Sketch = new Sketch();
            Sketch.SkiaManager.Init(CanvasView.InvalidateSurface, SKMatrix.MakeScale(1, -1));


            Sketch.SketchEngine.Instantiate <GridRenderer>();

            Sketch.SketchEngine.Instantiate <PointerInfoBoard>();
            Sketch.SkiaManager.BeforePaint += SkiaManager_BeforePaint;
            ManagerManager     = DependencyService.Get <IManagerManager>();
            SketchInputManager = Sketch.SketchEngine.Instantiate <SketchInputManager>();
            Sketch.Start();
            SketchInputManager.Init(ManagerManager.InputManager);

            /*
             * var joystick = Sketch.SketchEngine.Instantiate<ColorJoystick>();
             * joystick.RectTransform.AnchorMax = new Vector2(1, 1);
             * joystick.RectTransform.AnchorMin = new Vector2(0, 0);
             * joystick.RectTransform.OffsetMax = new Vector2(-800, -800);
             * joystick.RectTransform.OffsetMin = new Vector2(10, 10);
             * joystick.Level = 2;
             */

            var joystick2 = Sketch.SketchEngine.Instantiate <LineAreaJoystick <byte> >();

            joystick2.RectTransform.AnchorMax = new Vector2(0, 0);
            joystick2.RectTransform.AnchorMin = new Vector2(0, 0);
            joystick2.RectTransform.OffsetMax = new Vector2(600, 600);
            joystick2.RectTransform.OffsetMin = new Vector2(500, 500);
            joystick2.Level = 3;

            joystick2.AddArea(AreaJoystick <byte> .Area <byte> .CreateFromAngle((byte)VirtualKeyCode.VK_D, -60, 60, 0, float.PositiveInfinity));
            joystick2.AddArea(AreaJoystick <byte> .Area <byte> .CreateFromAngle((byte)VirtualKeyCode.VK_W, 30, 150, 0, float.PositiveInfinity));
            joystick2.AddArea(AreaJoystick <byte> .Area <byte> .CreateFromAngle((byte)VirtualKeyCode.VK_A, 120, 240, 0, float.PositiveInfinity));
            joystick2.AddArea(AreaJoystick <byte> .Area <byte> .CreateFromAngle((byte)VirtualKeyCode.VK_S, 210, 330, 0, float.PositiveInfinity));
            joystick2.AddArea(AreaJoystick <byte> .Area <byte> .CreateFromAngle((byte)VirtualKeyCode.LSHIFT, 0, 360, 0.7f, float.PositiveInfinity));
            joystick2.OnAreaStatusChanged += Joystick2_OnAreaStatusChanged;

            var keyboardButton = Sketch.SketchEngine.Instantiate <KeyboardKeyButton>();

            keyboardButton.RectTransform.AnchorMax = new Vector2(0, 0);
            keyboardButton.RectTransform.AnchorMin = new Vector2(0, 0);
            keyboardButton.RectTransform.OffsetMin = new Vector2(50, 50);
            keyboardButton.RectTransform.OffsetMax = new Vector2(150, 150);
            keyboardButton.Level = 2;
            ExampleSketchObject  = Sketch.SketchEngine.Instantiate <ExampleSketchObject>();
            Sketch.SketchEngine.Instantiate <SketchBorderRenderer>();
            Sketch.SketchEngine.Instantiate <RectTransformFrameRenderer>();

            CanvasView.InvalidateSurface();
            ExampleSketchObject.Position = new SKPoint(Sketch.Width / 2, Sketch.Height / 2);
            SensorSpeed speed = SensorSpeed.Game;

            Gyroscope.ReadingChanged += Gyroscope_ReadingChanged;
            Gyroscope.Start(speed);

            Device.StartTimer(TimeSpan.FromSeconds(1 / 60f), () => { CanvasView.InvalidateSurface(); return(!true); });
        }