diff --git a/com.unity.cinemachine/CHANGELOG.md b/com.unity.cinemachine/CHANGELOG.md
index d1f039e3e..0402c702d 100644
--- a/com.unity.cinemachine/CHANGELOG.md
+++ b/com.unity.cinemachine/CHANGELOG.md
@@ -9,11 +9,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Fixed
- Bugfix: index out of range exception when adding a Cm Shot to a timeline track whose CMBrain is inactive.
- Bugfix: OrbitalFollow with 3-ring setup would inappropriately damp in respose to vertical input if LookAt and Follow were at different vertical positions.
-- Bugfix: StateDriveCamera min activation time was broken.
+- Bugfix: StateDrivenCamera min activation time was broken.
### Added
-- Added CinemachineShotQualityEvaluator which is a standalone version of the evaluation code in Deoccluder.
+- FlyAround sample scene showing a simple fly-around camera.
- StateDrivenCamera.CancelWait() method to cancel the current wait on a pending state change.
+- Added CinemachineShotQualityEvaluator which is a standalone version of the evaluation code in Deoccluder.
### Changed
- SimplePlayerAimController sample upgraded to work on arbitrary surfaces (no longer depends on world up).
diff --git a/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity b/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity
new file mode 100644
index 000000000..3c9f09ba3
--- /dev/null
+++ b/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity
@@ -0,0 +1,842 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 654365150}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1001 &23543419
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2451271811042757136, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6668015293666917239, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: HelpText
+ value: 'This scene implements a fly-around camera. It''s just a generic fly-around
+ script on a GameObject, and a CinemachineCamera that tracks it.
+
+
+ Use
+ the Mouse or GamePad to rotate the camera, and mouse button or gamepad trigger
+ to move forwards. WASD will move sideways and up/down. The right mouse
+ button or second trigger will enter sprint mode.'
+ objectReference: {fileID: 0}
+ - target: {fileID: 9138370430051789472, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+ propertyPath: m_Name
+ value: HelpUI
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: d7425ed2047e64d8ea6ff79f20bd46f6, type: 3}
+--- !u!1 &295152416
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 295152420}
+ - component: {fileID: 295152419}
+ - component: {fileID: 295152418}
+ - component: {fileID: 295152422}
+ - component: {fileID: 295152423}
+ m_Layer: 0
+ m_Name: FlyAround object
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!23 &295152418
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 295152416}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: ce4c5a6977f4c4a03a175dacd27f529e, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &295152419
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 295152416}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &295152420
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 295152416}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 100, z: 2.01}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &295152422
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 295152416}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1e1d63f642ebbdb4eb38a57a250ab00d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Speed: 10
+ SprintMultiplier: 4
+ Sideways:
+ Value: 0
+ Center: 0
+ Range: {x: -1, y: 1}
+ Wrap: 0
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 6
+ UpDown:
+ Value: 0
+ Center: 0
+ Range: {x: -1, y: 1}
+ Wrap: 0
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 6
+ Forward:
+ Value: 0
+ Center: 0
+ Range: {x: -1, y: 1}
+ Wrap: 0
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 6
+ Pan:
+ Value: 0
+ Center: 0
+ Range: {x: -180, y: 180}
+ Wrap: 1
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 2
+ Tilt:
+ Value: 0
+ Center: 0
+ Range: {x: -70, y: 70}
+ Wrap: 0
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 2
+ Sprint:
+ Value: 0
+ Center: 0
+ Range: {x: -1, y: 1}
+ Wrap: 0
+ Recentering:
+ Enabled: 0
+ Wait: 0
+ Time: 0
+ Restrictions: 6
+--- !u!114 &295152423
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 295152416}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 89875cdc57c54474a8a74efd9b2a3b5d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ScanRecursively: 1
+ SuppressInputWhileBlending: 1
+ m_ControllerManager:
+ Controllers:
+ - Name: Move X
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: -1680190386980627800, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: 1
+ LegacyInput: Horizontal
+ LegacyGain: 1
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0
+ DecelTime: 0
+ - Name: Forward
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: 1120369429361536294, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: 1
+ LegacyInput: Fire1
+ LegacyGain: 1
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0
+ DecelTime: 0
+ - Name: Move Y
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: -1680190386980627800, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: 1
+ LegacyInput: Vertical
+ LegacyGain: 1
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0
+ DecelTime: 0
+ - Name: Look X (Pan)
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: -5630151704836100654, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: 1
+ LegacyInput: Mouse X
+ LegacyGain: 200
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0.2
+ DecelTime: 0.2
+ - Name: Look Y (Tilt)
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: -5630151704836100654, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: -1
+ LegacyInput: Mouse Y
+ LegacyGain: -200
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0.2
+ DecelTime: 0.2
+ - Name: Sprint
+ Owner: {fileID: 295152422}
+ Enabled: 1
+ Input:
+ InputAction: {fileID: 5938265918650678409, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3}
+ Gain: 1
+ LegacyInput: Fire2
+ LegacyGain: 1
+ CancelDeltaTime: 0
+ InputValue: 0
+ Driver:
+ AccelTime: 0
+ DecelTime: 0
+ PlayerIndex: -1
+ AutoEnableInputs: 1
+--- !u!850595691 &654365150
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Settings.lighting
+ serializedVersion: 6
+ m_GIWorkflowMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 0
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_LightmapCompression: 3
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 512
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentImportanceSampling: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_PVRTiledBaking: 0
+ m_NumRaysToShootPerTexel: -1
+ m_RespectSceneVisibilityWhenBakingGI: 0
+--- !u!1 &867266292
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 867266297}
+ - component: {fileID: 867266296}
+ - component: {fileID: 867266294}
+ - component: {fileID: 867266293}
+ - component: {fileID: 867266298}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &867266293
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 867266292}
+ m_Enabled: 1
+--- !u!124 &867266294
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 867266292}
+ m_Enabled: 1
+--- !u!20 &867266296
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 867266292}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.1
+ far clip plane: 5000
+ field of view: 84.30231
+ orthographic: 0
+ orthographic size: 10
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &867266297
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 867266292}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 100, z: 2.01}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &867266298
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 867266292}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowDebugText: 0
+ ShowCameraFrustum: 1
+ IgnoreTimeScale: 0
+ WorldUpOverride: {fileID: 0}
+ ChannelMask: 1
+ UpdateMethod: 2
+ BlendUpdateMethod: 1
+ LensModeOverride:
+ Enabled: 0
+ DefaultMode: 2
+ DefaultBlend:
+ Style: 1
+ Time: 1
+ CustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 2
+ outSlope: 2
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 0.2868603
+ value: 0.9562072
+ inSlope: 0.80913305
+ outSlope: 0.80913305
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 1
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ CustomBlends: {fileID: 0}
+--- !u!1001 &899295445
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916665, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4436525663902916670, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+ propertyPath: m_Name
+ value: Checkerboard Stage
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: c97e1248c10cd3549b3d18c1eb1c3722, type: 3}
+--- !u!1 &1670372959
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1670372963}
+ - component: {fileID: 1670372962}
+ - component: {fileID: 1670372965}
+ - component: {fileID: 1670372966}
+ m_Layer: 0
+ m_Name: CinemachineCamera
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1670372962
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1670372959}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Priority:
+ Enabled: 0
+ m_Value: 0
+ OutputChannel: 1
+ StandbyUpdate: 2
+ m_StreamingVersion: 20230301
+ m_LegacyPriority: 0
+ Target:
+ TrackingTarget: {fileID: 295152420}
+ LookAtTarget: {fileID: 0}
+ CustomLookAtTarget: 0
+ Lens:
+ FieldOfView: 84.30231
+ OrthographicSize: 10
+ NearClipPlane: 0.1
+ FarClipPlane: 5000
+ Dutch: 0
+ ModeOverride: 0
+ PhysicalProperties:
+ GateFit: 2
+ SensorSize: {x: 21.946, y: 16.002}
+ LensShift: {x: 0, y: 0}
+ FocusDistance: 10
+ Iso: 200
+ ShutterSpeed: 0.005
+ Aperture: 16
+ BladeCount: 5
+ Curvature: {x: 2, y: 11}
+ BarrelClipping: 0.25
+ Anamorphism: 0
+ BlendHint: 0
+--- !u!4 &1670372963
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1670372959}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 100, z: 2.01}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1670372965
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1670372959}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 36d1163fa822e8b418a0a603ec078d5c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Damping: 0
+--- !u!114 &1670372966
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1670372959}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a4c41ac9245b87c4192012080077d830, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Damping: 0
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 867266297}
+ - {fileID: 899295445}
+ - {fileID: 23543419}
+ - {fileID: 295152420}
+ - {fileID: 1670372963}
diff --git a/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity.meta b/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity.meta
new file mode 100644
index 000000000..49f74d099
--- /dev/null
+++ b/com.unity.cinemachine/Samples~/3D Samples/FlyAround.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 434259b236a4d1a449fb55c46da8640d
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs b/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs
new file mode 100644
index 000000000..cdd8a0a13
--- /dev/null
+++ b/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs
@@ -0,0 +1,96 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Unity.Cinemachine.Samples
+{
+ ///
+ /// This behaviour makes a GameObject fly around in response to user input.
+ /// Movement is relative to the GameObject's local axes.
+ ///
+ ///
+ public class FlyAround : MonoBehaviour, IInputAxisOwner
+ {
+ [Tooltip("Speed when moving")]
+ public float Speed = 10;
+
+ [Tooltip("Speed multiplier when sprinting")]
+ public float SprintMultiplier = 4;
+
+ [Header("Input Axes")]
+ [Tooltip("X Axis movement. Value is -1..1. Controls the sideways movement")]
+ public InputAxis Sideways = InputAxis.DefaultMomentary;
+
+ [Tooltip("Y Axis movement. Value is -1..1. Controls the vertical movement")]
+ public InputAxis UpDown = InputAxis.DefaultMomentary;
+
+ [Tooltip("Z Axis movement. Value is -1..1. Controls the forward movement")]
+ public InputAxis Forward = InputAxis.DefaultMomentary;
+
+ [Tooltip("Horizontal rotation. Value is -1..1.")]
+ public InputAxis Pan = DefaultPan;
+
+ [Tooltip("Vertical rotation. Value is -1..1.")]
+ public InputAxis Tilt = DefaultTilt;
+
+ [Tooltip("Sprint movement. Value is 0 or 1. If 1, then is sprinting")]
+ public InputAxis Sprint = InputAxis.DefaultMomentary;
+
+ static InputAxis DefaultPan => new ()
+ { Value = 0, Range = new Vector2(-180, 180), Wrap = true, Center = 0, Restrictions = InputAxis.RestrictionFlags.NoRecentering };
+ static InputAxis DefaultTilt => new ()
+ { Value = 0, Range = new Vector2(-70, 70), Wrap = false, Center = 0, Restrictions = InputAxis.RestrictionFlags.NoRecentering };
+
+ /// Report the available input axes to the input axis controller.
+ /// We use the Input Axis Controller because it works with both the Input package
+ /// and the Legacy input system. This is sample code and we
+ /// want it to work everywhere.
+ void IInputAxisOwner.GetInputAxes(List axes)
+ {
+ axes.Add(new () { DrivenAxis = () => ref Sideways, Name = "Move X", Hint = IInputAxisOwner.AxisDescriptor.Hints.X });
+ axes.Add(new () { DrivenAxis = () => ref Forward, Name = "Forward" });
+ axes.Add(new () { DrivenAxis = () => ref UpDown, Name = "Move Y", Hint = IInputAxisOwner.AxisDescriptor.Hints.Y });
+ axes.Add(new () { DrivenAxis = () => ref Pan, Name = "Look X (Pan)", Hint = IInputAxisOwner.AxisDescriptor.Hints.X });
+ axes.Add(new () { DrivenAxis = () => ref Tilt, Name = "Look Y (Tilt)", Hint = IInputAxisOwner.AxisDescriptor.Hints.Y });
+ axes.Add(new () { DrivenAxis = () => ref Sprint, Name = "Sprint" });
+ }
+
+ void OnValidate()
+ {
+ Pan.Validate();
+ Tilt.Range.x = Mathf.Clamp(Tilt.Range.x, -90, 90);
+ Tilt.Range.y = Mathf.Clamp(Tilt.Range.y, -90, 90);
+ Tilt.Validate();
+ }
+
+ void Reset()
+ {
+ Speed = 10;
+ SprintMultiplier = 4;
+ Sideways = InputAxis.DefaultMomentary;
+ Forward = InputAxis.DefaultMomentary;
+ UpDown = InputAxis.DefaultMomentary;
+ Pan = DefaultPan;
+ Tilt = DefaultTilt;
+ Sprint = InputAxis.DefaultMomentary;
+ }
+
+ void OnEnable()
+ {
+ // Take rotation from the transform
+ var euler = transform.rotation.eulerAngles;
+ Pan.Value = euler.y;
+ Tilt.Value = euler.x;
+ }
+
+ void Update()
+ {
+ // Calculate the move direction and speed based on input
+ var rot = Quaternion.Euler(Tilt.Value, Pan.Value, 0);
+ var movement = rot * new Vector3(Sideways.Value, UpDown.Value, Forward.Value);
+ var speed = Sprint.Value < 0.01f ? Speed : Speed * SprintMultiplier;
+
+ // Apply motion
+ transform.SetPositionAndRotation(transform.position + speed * Time.deltaTime * movement, rot);
+ }
+ }
+}
diff --git a/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs.meta b/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs.meta
new file mode 100644
index 000000000..488c1323f
--- /dev/null
+++ b/com.unity.cinemachine/Samples~/Shared Assets/Scripts/FlyAround.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1e1d63f642ebbdb4eb38a57a250ab00d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: