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 }
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 }
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 }
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 }
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 }
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); } }
/// <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 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 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 }