コード例 #1
0
        private void processAccelerometerData(CMAccelerometerData data, NSError error)
        {
            if (spiderView == null)
            {
                return;
            }

            var ax    = data.Acceleration.X;
            var ay    = data.Acceleration.Y;
            var angle = -(nfloat)Math.Atan2(ay, ax);

            gravity.Angle = angle;

            if (previousAcceleration.HasValue)
            {
                var dx = (nfloat)(ax - previousAcceleration.Value.X);
                var dy = (nfloat)(ay - previousAcceleration.Value.Y);

                var direction = new CGVector(dx, dy);
                var magnitude = (nfloat)Math.Sqrt(dx * dx + dy * dy);
                if (magnitude > 0.25f)
                {
                    applyForce(direction, magnitude);
                }
            }

            previousAcceleration = data.Acceleration;
        }
コード例 #2
0
ファイル: SpiderOnARopeView.cs プロジェクト: l0gaw/mobileapp
        private void processAccelerometerData(CMAccelerometerData data, NSError error)
        {
            if (spiderView == null)
            {
                return;
            }

            var(ax, ay) = convertXYCoordinate(data.Acceleration.X, data.Acceleration.Y,
                                              UIApplication.SharedApplication.StatusBarOrientation);

            var angle = -(nfloat)Math.Atan2(ay, ax);

            gravity.Angle = angle;

            if (previousAcceleration.HasValue)
            {
                var(previousX, previousY) = convertXYCoordinate(previousAcceleration.Value.X,
                                                                previousAcceleration.Value.Y, UIApplication.SharedApplication.StatusBarOrientation);

                var dx = (nfloat)(ax - previousX);
                var dy = (nfloat)(ay - previousY);

                var direction = new CGVector(dx, dy);
                var magnitude = (nfloat)Math.Sqrt(dx * dx + dy * dy);
                if (magnitude > 0.25f)
                {
                    applyForce(direction, magnitude);
                }
            }

            previousAcceleration = data.Acceleration;
        }
コード例 #3
0
 void HandleCMAccelerometerHandler(CMAccelerometerData data, NSError error)
 {
     _accelerometerRepository.Add(new Accelerometer()
     {
         Timestamp = DateTimeOffset.Now,
         X         = Convert.ToSingle(data.Acceleration.X),
         Y         = Convert.ToSingle(data.Acceleration.Y),
         Z         = Convert.ToSingle(data.Acceleration.Z)
     });
 }
コード例 #4
0
 /// <summary>
 /// Raises the accelerometer changed event.
 /// </summary>
 /// <param name="data">Data.</param>
 /// <param name="error">Error.</param>
 void OnAccelerometerChanged(CMAccelerometerData data, NSError error)
 {
     if (error == null)
     {
         OnReadingChanged?.Invoke(this, new DeviceSensorReadingEventArgs <VectorReading>(new VectorReading(data.Acceleration.X, data.Acceleration.Y, data.Acceleration.Z)));
     }
     else
     {
         OnReadingError?.Invoke(this, new DeviceSensorReadingErrorEventArgs(error.Description));
     }
 }
コード例 #5
0
        static void DataUpdated(CMAccelerometerData data, NSError error)
        {
            if (data == null)
            {
                return;
            }

            var field     = data.Acceleration;
            var accelData = new AccelerometerData(field.X, field.Y, field.Z);

            OnChanged(accelData);
        }
コード例 #6
0
 public void Default()
 {
     // this would (and did) crash if we called 'init'
     using (var ad = new CMAccelerometerData()) {
         Assert.That(ad.Acceleration.X, Is.EqualTo(0.0d), "X");
         Assert.That(ad.Acceleration.Y, Is.EqualTo(0.0d), "Y");
         Assert.That(ad.Acceleration.Z, Is.EqualTo(0.0d), "Z");
         // from CMLogItem
         // NaN on the simulator, 0.0d on devices - but we just want to ensure we do not crash
         Assert.That(ad.Timestamp, Is.Not.EqualTo(1.0d), "Timestamp");
     }
 }
コード例 #7
0
ファイル: DeviceMotionService.cs プロジェクト: Redth/f50
 private void OnAccelerometerChanged(CMAccelerometerData data, NSError error)
 {
     OnSensorValueChanged(new SensorValueChangedEventArgs
     {
         ValueType  = MotionSensorValueType.Vector,
         SensorType = MotionSensorType.Accelerometer,
         Value      = new MotionVector()
         {
             X = data.Acceleration.X, Y = data.Acceleration.Y, Z = data.Acceleration.Z
         }
     });
 }
コード例 #8
0
        void DataUpdated(CMAccelerometerData data, NSError error)
        {
            if (data == null)
            {
                return;
            }

#pragma warning disable CA1416 // https://github.com/xamarin/xamarin-macios/issues/14619
            var field = data.Acceleration;
#pragma warning restore CA1416
            var accelData = new AccelerometerData(field.X * -1, field.Y * -1, field.Z * -1);
            OnChanged(accelData);
        }
コード例 #9
0
ファイル: Accelerometer.cs プロジェクト: SongArc/MonoGame
        private void ReadingChangedHandler(CMAccelerometerData data, NSError error)
        {
            AccelerometerReading reading = new AccelerometerReading();

            this.IsDataValid = error == null;
            if (this.IsDataValid)
            {
                this.IsDataValid     = true;
                reading.Acceleration = new Vector3((float)data.Acceleration.X, (float)data.Acceleration.Y, (float)data.Acceleration.Z);
                reading.Timestamp    = DateTime.UtcNow;
                this.CurrentValue    = reading;
                this.IsDataValid     = error == null;
            }
        }
コード例 #10
0
        private void processAccelerometerData(CMAccelerometerData data, NSError error)
        {
            if (spiderView == null)
            {
                return;
            }

            var(ax, ay) = convertXYCoordinate(data.Acceleration.X, data.Acceleration.Y,
                                              UIApplication.SharedApplication.StatusBarOrientation);

            var angle = -(nfloat)Math.Atan2(ay, ax);

            gravity.Angle = angle;
        }
コード例 #11
0
        private void OnAccelerometerReadingValueChanged(CMAccelerometerData data, NSError error)
        {
            if (this.SensorValueChanged == null)
            {
                return;
            }

            if (error != null)
            {
                return;
            }

            this.SensorValueChanged((object)this, new SensorReadingValueChangedEventArgs()
            {
                SensorType = SensorType.Accelerometer,
                ValueType  = ValueType.Vector,
                Value      = new SensorVectorValue()
                {
                    X = data.Acceleration.X, Y = data.Acceleration.Y, Z = data.Acceleration.Z
                },
            });
        }
コード例 #12
0
ファイル: Accelerometer.cs プロジェクト: SongArc/MonoGame
 private void AccelerometerHandler(CMAccelerometerData data, NSError error)
 {
     readingChanged(data, error);
 }
コード例 #13
0
 void HandleChanged(CMAccelerometerData data, NSError _)
 {
     OnChanged(new MotionVector(data.Acceleration.X, data.Acceleration.Y, data.Acceleration.Z));
 }
コード例 #14
0
        /// <summary>
        /// Raises the accelerometer changed event.
        /// </summary>
        /// <param name="data">Data.</param>
        /// <param name="error">Error.</param>
        private void OnAccelerometerChanged(CMAccelerometerData data, NSError error)
        {
            if (SensorValueChanged == null)
                return;

            SensorValueChanged(this, new SensorValueChangedEventArgs { ValueType = MotionSensorValueType.Vector, SensorType = MotionSensorType.Accelerometer, Value = new MotionVector() { X = data.Acceleration.X, Y = data.Acceleration.Y, Z = data.Acceleration.Z } });

        }
コード例 #15
0
ファイル: Accelerometer.cs プロジェクト: Agies/putmedown
 private void OnSensorChanged(CMAccelerometerData data, NSError error)
 {
     var change = new SensorChange(Math.Abs(data.Acceleration.X * 10), Math.Abs(data.Acceleration.Y * 10), Math.Abs(data.Acceleration.Z * 10));;
     RaiseChange(change);
 }
コード例 #16
0
 /// <summary>
 /// Raises the accelerometer changed event.
 /// </summary>
 /// <param name="data">Data.</param>
 /// <param name="error">Error.</param>
 void OnAccelerometerChanged(CMAccelerometerData data, NSError error)
 {
     OnReadingChanged?.Invoke(this, new DeviceSensorReadingEventArgs <VectorReading>(new VectorReading(data.Acceleration.X, data.Acceleration.Y, data.Acceleration.Z)));
 }