public CameraController(UnityEngine.Camera camera, ITinyMessengerHub messengerHub, ILogger logger, IStore store) { this.camera = camera; this.messengerHub = messengerHub; this.logger = PrefixedLogger.ForType <CameraController>(logger); var transform = camera.transform; cameraPivot = transform.parent; defaultPosition = transform.position; defaultRotation = transform.rotation.eulerAngles; context = new StateContext(this.logger, store); context.TransitionTo( new WaitingForDragState(context, messengerHub, this.logger, camera)); context.Disable(); spinSubscriptionToken = messengerHub.Subscribe <SpinCamera360Message>(OnSpinRequested); enableDisableSubscriptionToken = messengerHub.Subscribe <EnableCameraControlMessage>(EnableControl); resetPositionSubscriptionToken = messengerHub.Subscribe <ResetCameraMessage>(Reset); orbitSubscriptionToken = messengerHub.Subscribe <CameraOrbitRequestMessage>(Orbit); }
private void DisableControl(DisableCameraControlMessage message) { if (context.IsDisabled) { return; } context.Disable(); enableDisableSubscriptionToken.Dispose(); enableDisableSubscriptionToken = messengerHub.Subscribe <EnableCameraControlMessage>(EnableControl); logger.Info("Disabled camera control"); }