Exemple #1
0
        public CameraFirstPerson(float lrRot, float udRot, Vector3 startingPos, GraphicInfo graphicInfo)
#endif
        {
            init(lrRot, udRot, startingPos, graphicInfo);

#if WINDOWS_PHONE
            this.useAcelerometer = useAcelerometer;
            if (useAcelerometer)
            {
                accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                // Start the accelerometer
                try
                {
                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
                accelSensor.ReadingChanged += new EventHandler <Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
            }
#endif
        }
        static CCAccelerometer() {
#if !WINDOWS && !PSM && !XBOX && !OUYA && !XBOX360 &&!NETFX_CORE && !MONOMAC
            try
            {
                accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
            }
            catch (Exception ex)
            {
                CCLog.Log(ex.ToString());
                CCLog.Log("No accelerometer on platform. CCAccelerometer will default to emulation code.");
            }
#endif
        }
Exemple #3
0
        public void Start()
        {
            // 模拟器下启动时键盘模拟重力
            if (LSystem.IsEmulator())
            {
                _state._isConnected = true;
                LSystem.CallScreenRunnable(new SensorThread(this, accelerometerValues));
                return;
            }
#if !WINDOWS&&!XBOX
            if (!_state._isConnected && manager == null)
            {
                if (Microsoft.Devices.Sensors.Accelerometer.IsSupported)
                {
                    if (this.manager == null)
                    {
                        this.manager = new Microsoft.Devices.Sensors.Accelerometer();
                        this.manager.TimeBetweenUpdates = (TimeSpan.FromMilliseconds(_sleep));
                        this.manager.CurrentValueChanged += (new EventHandler<Microsoft.Devices.Sensors.SensorReadingEventArgs<Microsoft.Devices.Sensors.AccelerometerReading>>(this.accelerometer_CurrentValueChanged));
                    }
                    _state._isConnected = true;
                }
                else
                {
                    _state._isConnected = false;
                }
                if (_state._isConnected)
                {
                    if (this.manager != null)
                    {
                        try
                        {
                            this.manager.Start();
                        }
                        catch (InvalidOperationException ex)
                        {
                            Loon.Utils.Debugging.Log.Exception(ex);
                        }
                        return;
                    }
                }
#endif
                // 如果无法正常启动,则开启伪重力感应
                if (!_state._isConnected)
                {
                    _state._isConnected = true;
                    LSystem.CallScreenRunnable(new SensorThread(this, accelerometerValues));
                }
            }
        }
        static CCAccelerometer()
        {
#if !WINDOWS && !PSM && !XBOX && !OUYA && !XBOX360 && !NETFX_CORE && !MONOMAC
            try
            {
                accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
            }
            catch (Exception ex)
            {
                CCLog.Log(ex.ToString());
                CCLog.Log("No accelerometer on platform. CCAccelerometer will default to emulation code.");
            }
#endif
        }
Exemple #5
0
        public CCAccelerometer(CCWindow window)
        {
            Window = window;

            #if !WINDOWS && !OUYA && !NETFX_CORE && !MACOS && !WINDOWSGL
            try
            {
                accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
            }
            catch (Exception ex)
            {
                CCLog.Log(ex.ToString());
                CCLog.Log("No accelerometer on platform. CCAccelerometer will default to emulation code.");
            }
            #endif
        }
Exemple #6
0
        protected override void Initialize()
        {
            base.Initialize();

            // Setting to default values in case a previous game existed and was disposed
            Settings.CurrentTheme         = 0;
            Settings.CurrentGameplaySpeed = GameplaySpeeds.Medium;
            Settings.CurrentGameRoom      = GameRooms.Open;

#if ANDROID
            SnakeGame.Accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
            if (SnakeGame.Accelerometer.State != Microsoft.Devices.Sensors.SensorState.Ready && SnakeGame.Accelerometer.State != Microsoft.Devices.Sensors.SensorState.NotSupported)
            {
                SnakeGame.Accelerometer.Start();
            }
#endif
        }
Exemple #7
0
        public void Stop()
        {
#if !WINDOWS&&!XBOX
            if (manager != null)
            {
                try
                {
                    this.manager.Stop();
                }
                catch (InvalidOperationException ex)
                {
                    Loon.Utils.Debugging.Log.Exception(ex);
                }
                manager = null;
                _state._isConnected = false;
            }
            else
            {
                _state._isConnected = false;
            }
#endif
        }
Exemple #8
0
        public void StartAcelerometer()
        {
            if (useAcelerometer)
            {
                if (accelActive == true)
                {
                    return;
                }

                try
                {
                    if (accelSensor == null)
                    {
                        accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                        accelSensor.ReadingChanged += new EventHandler <Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
                    }

                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
            }
            else
            {
                ActiveLogger.LogMessage("need to enable acelerometer before trying to start it on the camerafirstperson", LogLevel.RecoverableError);
            }
        }
        public CCAccelerometer(CCWindow window)
        {
            Window = window;

            #if !WINDOWS && !OUYA && !NETFX_CORE && !MACOS && !WINDOWSGL
            try
            {
                accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
            }
            catch (Exception ex)
            {
                CCLog.Log(ex.ToString());
                CCLog.Log("No accelerometer on platform. CCAccelerometer will default to emulation code.");
            }
            #endif
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CameraFirstPerson"/> class.
        /// </summary>
        /// <param name="lrRot">The leftright rotation.</param>
        /// <param name="udRot">The updown rotation.</param>
        /// <param name="startingPos">The starting pos.</param>
        /// <param name="viewport">The viewport.</param>
        public P3DCamera(IScene scene, float lrRot, float udRot, Vector3 startingPos, Viewport viewport)
        {
            this.world = scene.World;

            init(lrRot, udRot, startingPos, viewport);

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.FreeDrag,
                                                                   (sample) =>
            {
                leftrightRot -= rotationSpeed * sample.Delta.X;
                updownRot    -= rotationSpeed * sample.Delta.Y;
                UpdateViewMatrix();
            }
                                                                   ));

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.DoubleTap,
                                                                   (sample) =>
            {
                onunseek                     = true;
                Matrix projection            = world.CameraManager.ActiveCamera.Projection;
                Matrix viewProjection        = world.CameraManager.ActiveCamera.View * world.CameraManager.ActiveCamera.Projection;
                Matrix viewInverse           = Matrix.Invert(world.CameraManager.ActiveCamera.View);
                Matrix projectionInverse     = Matrix.Invert(world.CameraManager.ActiveCamera.Projection);
                Matrix viewProjectionInverse = projectionInverse * viewInverse;

                Vector3 v = new Vector3();
                v.X       = (((2.0f * sample.Position.X) / viewPort.Width) - 1);
                v.Y       = -(((2.0f * sample.Position.Y) / viewPort.Height) - 1);
                v.Z       = 0.0f;

                Ray pickRay        = new Ray();
                pickRay.Position.X = viewInverse.M41;
                pickRay.Position.Y = viewInverse.M42;
                pickRay.Position.Z = viewInverse.M43;
                pickRay.Direction  = Vector3.Normalize(Vector3.Transform(v, viewProjectionInverse) - pickRay.Position);

                SegmentInterceptInfo rti = world.PhysicWorld.SegmentIntersect(pickRay, (a) => true, 9999);
                if (rti == null)
                {
                }
                else
                {
                    Vector3 impact = rti.ImpactPosition;
                    Vector3 lookAt = Position - impact;
                    origem         = Position;
                    destino        = Position + lookAt * 0.8f;
                    passo          = 0;
                }
            }
                                                                   ));

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Hold,
                                                                   (sample) =>
            {
                onseek                       = true;
                Matrix projection            = world.CameraManager.ActiveCamera.Projection;
                Matrix viewProjection        = world.CameraManager.ActiveCamera.View * world.CameraManager.ActiveCamera.Projection;
                Matrix viewInverse           = Matrix.Invert(world.CameraManager.ActiveCamera.View);
                Matrix projectionInverse     = Matrix.Invert(world.CameraManager.ActiveCamera.Projection);
                Matrix viewProjectionInverse = projectionInverse * viewInverse;

                Vector3 v = new Vector3();
                v.X       = (((2.0f * sample.Position.X) / viewPort.Width) - 1);
                v.Y       = -(((2.0f * sample.Position.Y) / viewPort.Height) - 1);
                v.Z       = 0.0f;

                Ray pickRay        = new Ray();
                pickRay.Position.X = viewInverse.M41;
                pickRay.Position.Y = viewInverse.M42;
                pickRay.Position.Z = viewInverse.M43;
                pickRay.Direction  = Vector3.Normalize(Vector3.Transform(v, viewProjectionInverse) - pickRay.Position);

                SegmentInterceptInfo rti = world.PhysicWorld.SegmentIntersect(pickRay, (a) => true, 9999);
                if (rti == null)
                {
                }
                else
                {
                    Vector3 impact = rti.ImpactPosition;
                    Vector3 lookAt = impact - Position;
                    destino        = Position + lookAt * 0.8f;
                    origem         = Position;
                    passo          = 0;
                }
            }
                                                                   ));



            if (useAcelerometer)
            {
                accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                // Start the accelerometer
                try
                {
                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
                accelSensor.ReadingChanged += new EventHandler <Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
            }
        }
Exemple #11
0
 public Accelerometer()
 {
     acc = new Microsoft.Devices.Sensors.Accelerometer();
     acc.Start();
 }
 public AccelerometerWrapper(IAccelerationFilter accelerationFilter)
 {
     _accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
     _accelerometer.ReadingChanged += AccelerometerReadingChanged;
     _accelerationFilter = accelerationFilter;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CameraFirstPerson"/> class.
        /// </summary>
        /// <param name="lrRot">The leftright rotation.</param>
        /// <param name="udRot">The updown rotation.</param>
        /// <param name="startingPos">The starting pos.</param>
        /// <param name="viewport">The viewport.</param>
        public P3DCamera(IScene scene, float lrRot, float udRot, Vector3 startingPos, Viewport viewport)
        {
            this.world = scene.World;
            
            init(lrRot, udRot, startingPos, viewport);

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.FreeDrag,
                  (sample) =>
                  {
                      leftrightRot -= rotationSpeed * sample.Delta.X;
                      updownRot -= rotationSpeed * sample.Delta.Y;
                      UpdateViewMatrix();
                  }
              ));

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.DoubleTap,
                  (sample) =>
                  {
                            onunseek = true;
                            Matrix projection = world.CameraManager.ActiveCamera.Projection;
                            Matrix viewProjection = world.CameraManager.ActiveCamera.View * world.CameraManager.ActiveCamera.Projection;
                            Matrix viewInverse = Matrix.Invert(world.CameraManager.ActiveCamera.View);
                            Matrix projectionInverse = Matrix.Invert(world.CameraManager.ActiveCamera.Projection);
                            Matrix viewProjectionInverse = projectionInverse * viewInverse;

                            Vector3 v = new Vector3();
                            v.X = (((2.0f * sample.Position.X) / viewPort.Width) - 1);
                            v.Y = -(((2.0f * sample.Position.Y) / viewPort.Height) - 1);
                            v.Z = 0.0f;

                            Ray pickRay = new Ray();
                            pickRay.Position.X = viewInverse.M41;
                            pickRay.Position.Y = viewInverse.M42;
                            pickRay.Position.Z = viewInverse.M43;
                            pickRay.Direction = Vector3.Normalize(Vector3.Transform(v, viewProjectionInverse) - pickRay.Position);

                            SegmentInterceptInfo rti = world.PhysicWorld.SegmentIntersect(pickRay, (a) => true, 9999);
                            if (rti == null)
                            {
                             
                            }
                            else
                            {
                                Vector3 impact = rti.ImpactPosition;
                                Vector3 lookAt = Position - impact;
                                origem = Position;
                                destino = Position + lookAt * 0.8f;
                                passo = 0;
                            }
                        


                  }
              ));

            scene.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Hold,
                  (sample) =>
                  {
                      onseek = true;
                      Matrix projection = world.CameraManager.ActiveCamera.Projection;
                      Matrix viewProjection = world.CameraManager.ActiveCamera.View * world.CameraManager.ActiveCamera.Projection;
                      Matrix viewInverse = Matrix.Invert(world.CameraManager.ActiveCamera.View);
                      Matrix projectionInverse = Matrix.Invert(world.CameraManager.ActiveCamera.Projection);
                      Matrix viewProjectionInverse = projectionInverse * viewInverse;

                      Vector3 v = new Vector3();
                      v.X = (((2.0f * sample.Position.X) / viewPort.Width) - 1);
                      v.Y = -(((2.0f * sample.Position.Y) / viewPort.Height) - 1);
                      v.Z = 0.0f;

                      Ray pickRay = new Ray();
                      pickRay.Position.X = viewInverse.M41;
                      pickRay.Position.Y = viewInverse.M42;
                      pickRay.Position.Z = viewInverse.M43;
                      pickRay.Direction = Vector3.Normalize(Vector3.Transform(v, viewProjectionInverse) - pickRay.Position);

                      SegmentInterceptInfo rti = world.PhysicWorld.SegmentIntersect(pickRay, (a) => true, 9999);
                      if (rti == null)
                      {
                         
                      }
                      else
                      {
                          Vector3 impact = rti.ImpactPosition;
                          Vector3 lookAt = impact - Position;
                          destino = Position + lookAt * 0.8f;
                          origem = Position;
                          passo = 0;
                      }
                  }
              ));

           

            


            if (useAcelerometer)
            {
                accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                // Start the accelerometer
                try
                {
                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
                accelSensor.ReadingChanged += new EventHandler<Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
            }


        }
 public AccelerometerWrapper(IAccelerationFilter accelerationFilter)
 {
     _accelerometer = new Microsoft.Devices.Sensors.Accelerometer();
     _accelerometer.ReadingChanged += AccelerometerReadingChanged;
     _accelerationFilter            = accelerationFilter;
 }
        public void StartAcelerometer()
        {
            if (useAcelerometer)
            {
                if (accelActive == true)
                    return;

                try
                {
                    if (accelSensor == null)
                    {
                        accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                        accelSensor.ReadingChanged += new EventHandler<Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
                    }

                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
            }
            else
            {
                ActiveLogger.LogMessage("need to enable acelerometer before trying to start it on the camerafirstperson", LogLevel.RecoverableError);
            }
        }   
            public CameraFirstPerson(float lrRot, float udRot, Vector3 startingPos, GraphicInfo graphicInfo)
#endif
        {            
            init(lrRot, udRot, startingPos,graphicInfo);

#if WINDOWS_PHONE
            this.useAcelerometer = useAcelerometer;
            if (useAcelerometer)
            {
                accelSensor = new Microsoft.Devices.Sensors.Accelerometer();
                // Start the accelerometer
                try
                {
                    accelSensor.Start();
                    accelActive = true;
                }
                catch (Microsoft.Devices.Sensors.AccelerometerFailedException e)
                {
                    // the accelerometer couldn't be started.  No fun!
                    accelActive = false;
                }
                catch (UnauthorizedAccessException e)
                {
                    // This exception is thrown in the emulator-which doesn't support an accelerometer.
                    accelActive = false;
                }
                accelSensor.ReadingChanged += new EventHandler<Microsoft.Devices.Sensors.AccelerometerReadingEventArgs>(accelSensor_ReadingChanged);
            }
#endif

        }