aboutsummaryrefslogtreecommitdiff
path: root/JamHelper
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-02-17 19:42:30 +0800
committerchai <chaifix@163.com>2022-02-17 19:42:30 +0800
commite5d082b220eaa4351086b27607231f5df01a0903 (patch)
tree49f8ea1678889ee0c3b902eaa107e32551b27df1 /JamHelper
parent701113cf63da4115f932b6cfb89cd52828ffa405 (diff)
*misc
Diffstat (limited to 'JamHelper')
-rw-r--r--JamHelper/Assets/JamTools/FPSControllerVelocity/Demo/Scenes/FPSCharacterController.unity65
-rw-r--r--JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/FPSCharacterController.cs12
-rw-r--r--JamHelper/Assets/JamTools/JamTools.asmdef14
-rw-r--r--JamHelper/Assets/JamTools/JamTools.asmdef.meta7
-rw-r--r--JamHelper/Assets/JamTools/Navigation.meta8
-rw-r--r--JamHelper/Assets/JamTools/Navigation/NavigationTest.unity301
-rw-r--r--JamHelper/Assets/JamTools/Navigation/NavigationTest.unity.meta7
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity.meta8
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs58
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta11
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs117
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta11
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md12
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md.meta7
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests.meta8
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs18
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta11
-rw-r--r--JamHelper/Assets/JamUI/JamUI.asmdef3
-rw-r--r--JamHelper/Assets/JamUI/JamUI.asmdef.meta7
-rw-r--r--JamHelper/Assets/JamVFX/JamVFX.asmdef3
-rw-r--r--JamHelper/Assets/JamVFX/JamVFX.asmdef.meta7
-rw-r--r--JamHelper/Assets/Scripts.meta8
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity.meta8
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs58
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta11
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs117
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta11
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md12
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md.meta7
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests.meta8
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs18
-rw-r--r--JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta11
-rw-r--r--JamHelper/Assets/Scripts/TestBed.cs18
-rw-r--r--JamHelper/Assets/Scripts/TestBed.cs.meta11
-rw-r--r--JamHelper/ProjectSettings/QualitySettings.asset20
-rw-r--r--JamHelper/UserSettings/EditorUserSettings.asset3
36 files changed, 989 insertions, 27 deletions
diff --git a/JamHelper/Assets/JamTools/FPSControllerVelocity/Demo/Scenes/FPSCharacterController.unity b/JamHelper/Assets/JamTools/FPSControllerVelocity/Demo/Scenes/FPSCharacterController.unity
index c44bd18..139d3fa 100644
--- a/JamHelper/Assets/JamTools/FPSControllerVelocity/Demo/Scenes/FPSCharacterController.unity
+++ b/JamHelper/Assets/JamTools/FPSControllerVelocity/Demo/Scenes/FPSCharacterController.unity
@@ -749,7 +749,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28150
+ m_Name: pb_Mesh35256
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -907,6 +907,35 @@ Mesh:
offset: 0
size: 0
path:
+--- !u!1 &148244777 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 7739210602112578987, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
+ m_PrefabInstance: {fileID: 6879717249385526193}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &148244782
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 148244777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 60e373202cc879c4a8e781f92dbdcb48, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &148244783
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 148244777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 63b841e9c9589044db9f0b7edfca90bd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
--- !u!1 &153808474
GameObject:
m_ObjectHideFlags: 0
@@ -1696,7 +1725,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28166
+ m_Name: pb_Mesh35268
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -2110,7 +2139,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28062
+ m_Name: pb_Mesh35188
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -7040,7 +7069,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh27806
+ m_Name: pb_Mesh34970
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -7204,7 +7233,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28264
+ m_Name: pb_Mesh35352
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -7550,7 +7579,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh27956
+ m_Name: pb_Mesh35090
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -7745,7 +7774,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28220
+ m_Name: pb_Mesh35318
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -7909,7 +7938,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh27976
+ m_Name: pb_Mesh35102
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -8754,7 +8783,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28114
+ m_Name: pb_Mesh35232
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -14056,7 +14085,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh27938
+ m_Name: pb_Mesh35062
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -14332,7 +14361,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh27846
+ m_Name: pb_Mesh35002
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -14496,7 +14525,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: pb_Mesh28126
+ m_Name: pb_Mesh35244
serializedVersion: 10
m_SubMeshes:
- serializedVersion: 2
@@ -16072,6 +16101,14 @@ PrefabInstance:
propertyPath: m_Camera
value:
objectReference: {fileID: 685442961}
+ - target: {fileID: 7739210602112578966, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
+ propertyPath: m_MoveSmooth
+ value: 0.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7739210602112578966, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
+ propertyPath: m_LookSensitive
+ value: 1200
+ objectReference: {fileID: 0}
- target: {fileID: 7739210602112578984, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
propertyPath: m_RootOrder
value: 13
@@ -16116,6 +16153,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 7739210602112578985, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
+ propertyPath: m_Interpolate
+ value: 1
+ objectReference: {fileID: 0}
- target: {fileID: 7739210602112578987, guid: 8ec8551d12bf0c649a5ba9d04f879de5, type: 3}
propertyPath: m_Name
value: Player_Velocity
diff --git a/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/FPSCharacterController.cs b/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/FPSCharacterController.cs
index c51fffc..cbb3bf0 100644
--- a/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/FPSCharacterController.cs
+++ b/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/FPSCharacterController.cs
@@ -128,6 +128,8 @@ namespace JamTools
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
+ //mouseX = -0.1f; // test jittery
+
m_CameraRotation -= mouseY * Time.deltaTime * m_LookSensitive;
m_CameraRotation = Mathf.Clamp(m_CameraRotation, -90, 90);
Quaternion rot = Quaternion.Euler(m_CameraRotation, 0, 0);
@@ -186,7 +188,7 @@ namespace JamTools
float vy = m_Rigidbody.velocity.y;
Vector3 velocity = new Vector3(m_MoveDirection.x * Time.deltaTime * m_MoveSpeed, vy, m_MoveDirection.z * Time.deltaTime * m_MoveSpeed);
- m_Rigidbody.velocity = Vector3.Lerp(m_Rigidbody.velocity, velocity, m_MoveSmooth);
+ m_Rigidbody.velocity = Vector3.Slerp(m_Rigidbody.velocity, velocity, m_MoveSmooth);
}
void MoveInAirUpdate()
@@ -367,7 +369,6 @@ namespace JamTools
private void Update()
{
- LookAround();
MoveAroundUpdate();
MoveInAirUpdate();
Jump();
@@ -381,6 +382,7 @@ namespace JamTools
private void FixedUpdate()
{
+ LookAround();
MoveAroundFixedUpdate();
MoveInAirFixedUpdate();
DodgeFixed();
@@ -389,11 +391,5 @@ namespace JamTools
WallJumpFixedUpdate();
}
- private void OnDrawGizmos()
- {
-
- }
-
}
-
}
diff --git a/JamHelper/Assets/JamTools/JamTools.asmdef b/JamHelper/Assets/JamTools/JamTools.asmdef
new file mode 100644
index 0000000..e617a6c
--- /dev/null
+++ b/JamHelper/Assets/JamTools/JamTools.asmdef
@@ -0,0 +1,14 @@
+{
+ "name": "JamTools",
+ "rootNamespace": "",
+ "references": [],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": true,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+} \ No newline at end of file
diff --git a/JamHelper/Assets/JamTools/JamTools.asmdef.meta b/JamHelper/Assets/JamTools/JamTools.asmdef.meta
new file mode 100644
index 0000000..6f51606
--- /dev/null
+++ b/JamHelper/Assets/JamTools/JamTools.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4deea6c4c3ca05d489c2b43a9ddf4888
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Navigation.meta b/JamHelper/Assets/JamTools/Navigation.meta
new file mode 100644
index 0000000..5859caa
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Navigation.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e651be17708df2f42861487a9ec9a792
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity b/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity
new file mode 100644
index 0000000..d52679b
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity
@@ -0,0 +1,301 @@
+%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, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ 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: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ 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: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ 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
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &164326378
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 164326381}
+ - component: {fileID: 164326380}
+ - component: {fileID: 164326379}
+ 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 &164326379
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 164326378}
+ m_Enabled: 1
+--- !u!20 &164326380
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 164326378}
+ 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_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ 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 &164326381
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 164326378}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1157050077
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1157050079}
+ - component: {fileID: 1157050078}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &1157050078
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157050077}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &1157050079
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157050077}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
diff --git a/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity.meta b/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity.meta
new file mode 100644
index 0000000..48b157e
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Navigation/NavigationTest.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5d6539a8262cb5b45b695a8ed6b6e804
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity.meta
new file mode 100644
index 0000000..4c9a6c9
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27aa6a2b9b6bc35439e3d59b7090f631
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs
new file mode 100644
index 0000000..efb96f3
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs
@@ -0,0 +1,58 @@
+using UnityEngine;
+
+[DisallowMultipleComponent]
+[DefaultExecutionOrder(ORDER_EXECUTION)]
+public class InterpolationFactorController : MonoBehaviour
+{
+ public const int ORDER_EXECUTION = -1000;
+
+ private static InterpolationFactorController Instance;
+ private float[] _lastFixedUpdates = new float[2];
+ private int _lastIndex;
+
+ public static float Factor { get; private set; }
+
+ private void Awake()
+ {
+ if (Instance)
+ {
+ Destroy(this);
+ Debug.LogWarning($"The '{typeof(InterpolationFactorController).Name}' is a singleton!");
+ return;
+ }
+
+ Instance = this;
+ Factor = 1;
+ }
+
+ private void Start()
+ {
+ _lastFixedUpdates = new float[2] { Time.fixedTime, Time.fixedTime };
+ _lastIndex = 0;
+ }
+
+ private void FixedUpdate()
+ {
+ _lastIndex = NextIndex();
+ _lastFixedUpdates[_lastIndex] = Time.fixedTime;
+ }
+
+ private void Update()
+ {
+ float lastTime = _lastFixedUpdates[_lastIndex];
+ float prevTime = _lastFixedUpdates[NextIndex()];
+
+ if (lastTime == prevTime)
+ {
+ Factor = 1;
+ return;
+ }
+
+ Factor = (Time.time - lastTime) / (lastTime - prevTime);
+ }
+
+ private int NextIndex()
+ {
+ return (_lastIndex == 0) ? 1 : 0;
+ }
+}
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta
new file mode 100644
index 0000000..ca7364a
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63b841e9c9589044db9f0b7edfca90bd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: -95
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs
new file mode 100644
index 0000000..9a83fe0
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs
@@ -0,0 +1,117 @@
+using System.Collections;
+using UnityEngine;
+
+[DisallowMultipleComponent]
+[DefaultExecutionOrder(ORDER_EXECUTION)]
+public class InterpolationObjectController : MonoBehaviour
+{
+ public const int ORDER_EXECUTION = InterpolationFactorController.ORDER_EXECUTION - 1;
+
+ private TransformData[] _transforms;
+ private int _index;
+
+ private void Awake()
+ {
+ StartCoroutine(WaitForEndOfFrame());
+ StartCoroutine(WaitForFixedUpdate());
+ }
+
+ private void OnEnable()
+ {
+ ResetTransforms();
+ }
+
+ private void BeforeFixedUpdate()
+ {
+ // Restoring actual transform for the FixedUpdate() cal where it could be change by the user.
+ RestoreActualTransform();
+ }
+
+ private void AfterFixedUpdate()
+ {
+ // Saving actual transform for being restored in the BeforeFixedUpdate() method.
+ SaveActualTransform();
+ }
+
+ private void Update()
+ {
+ // Set interpolated transform for being rendered.
+ SetInterpolatedTransform();
+ }
+
+ #region Helpers
+
+ private void RestoreActualTransform()
+ {
+ var latest = _transforms[_index];
+ transform.localPosition = latest.position;
+ transform.localScale = latest.scale;
+ transform.localRotation = latest.rotation;
+ }
+
+ private void SaveActualTransform()
+ {
+ _index = NextIndex();
+ _transforms[_index] = CurrentTransformData();
+ }
+
+ private void SetInterpolatedTransform()
+ {
+ var prev = _transforms[NextIndex()];
+ float factor = InterpolationFactorController.Factor;
+ transform.localPosition = Vector3.Lerp(prev.position, transform.localPosition, factor);
+ transform.localRotation = Quaternion.Slerp(prev.rotation, transform.localRotation, factor);
+ transform.localScale = Vector3.Lerp(prev.scale, transform.localScale, factor);
+ }
+
+ public void ResetTransforms()
+ {
+ _index = 0;
+ var td = CurrentTransformData();
+ _transforms = new TransformData[2] { td, td };
+ }
+
+ private TransformData CurrentTransformData()
+ {
+ return new TransformData(transform.localPosition, transform.localRotation, transform.localScale);
+ }
+
+ private int NextIndex()
+ {
+ return (_index == 0) ? 1 : 0;
+ }
+
+ private IEnumerator WaitForEndOfFrame()
+ {
+ while (true)
+ {
+ yield return new WaitForEndOfFrame();
+ BeforeFixedUpdate();
+ }
+ }
+
+ private IEnumerator WaitForFixedUpdate()
+ {
+ while (true)
+ {
+ yield return new WaitForFixedUpdate();
+ AfterFixedUpdate();
+ }
+ }
+
+ private struct TransformData
+ {
+ public Vector3 position;
+ public Quaternion rotation;
+ public Vector3 scale;
+
+ public TransformData(Vector3 position, Quaternion rotation, Vector3 scale)
+ {
+ this.position = position;
+ this.rotation = rotation;
+ this.scale = scale;
+ }
+ }
+
+ #endregion
+}
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta
new file mode 100644
index 0000000..80c49da
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 60e373202cc879c4a8e781f92dbdcb48
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: -90
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md
new file mode 100644
index 0000000..016072b
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md
@@ -0,0 +1,12 @@
+# Smooth Motion in Unity (refactored)
+
+This is an improved (refactored) version of the code from the ["Timesteps and Achieving Smooth Motion in Unity"](https://www.kinematicsoup.com/news/2016/8/9/rrypp5tkubynjwxhxjzd42s3o034o8?utm_source=youtube&utm_type=SMVideo) article.
+
+Now, there are only 2 components instead of original 3:
+
+1. [`InterpolationFactorController`](https://github.com/DevelAx/Smooth-Motion-in-Unity/blob/master/InterpolationFactorController.cs) a singleton scene component (the original name was `InterpolationController`) that calculates the current *interpolation factor*.
+2. [`InterpolationObjectController`](https://github.com/DevelAx/Smooth-Motion-in-Unity/blob/master/InterpolationObjectController.cs) a component for a moving object (the original name was `InterpolatedTransform`) which calculates the current interpolation for the object in the `Update()` method before it's being rendered and then restores its original `transform` values for the next `FixedUpdate()` call.
+3. The `InterpolatedTransformUpdater` component was removed as unnecessary.
+
+## Remarks
+For these scripts to work correctly the user's script must change the object's `transform` only in the `FixedUpdate()` method. When teleporting the object the user should call the (`InterpolationObjectController`).`ResetTransforms()` method after it.
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md.meta
new file mode 100644
index 0000000..b5455ff
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 933a0ade2c59f904c9eed3fb284afb77
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests.meta
new file mode 100644
index 0000000..74a5329
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2255b40400c2ac8469bc94ee99676fb4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs
new file mode 100644
index 0000000..3bf706a
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs
@@ -0,0 +1,18 @@
+using UnityEngine;
+
+/// <summary>
+/// Use this component with a game object for demonstration purposes.
+/// </summary>
+[DisallowMultipleComponent]
+[RequireComponent(typeof(InterpolationObjectController))]
+public class TestMotion : MonoBehaviour
+{
+ [SerializeField]
+ private float _speed = 2f;
+
+ private void FixedUpdate()
+ {
+ transform.position += Vector3.right * _speed * Time.fixedDeltaTime;
+ transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + _speed * 30 * Time.fixedDeltaTime, transform.rotation.eulerAngles.z);
+ }
+}
diff --git a/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta
new file mode 100644
index 0000000..fe06ffe
--- /dev/null
+++ b/JamHelper/Assets/JamTools/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 80afb4adbb1d67247ac41a23d04b67d7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamUI/JamUI.asmdef b/JamHelper/Assets/JamUI/JamUI.asmdef
new file mode 100644
index 0000000..744eeb7
--- /dev/null
+++ b/JamHelper/Assets/JamUI/JamUI.asmdef
@@ -0,0 +1,3 @@
+{
+ "name": "JamUI"
+}
diff --git a/JamHelper/Assets/JamUI/JamUI.asmdef.meta b/JamHelper/Assets/JamUI/JamUI.asmdef.meta
new file mode 100644
index 0000000..baa98cf
--- /dev/null
+++ b/JamHelper/Assets/JamUI/JamUI.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a3b7b702c39945846a1b9ddaad2589b3
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/JamVFX/JamVFX.asmdef b/JamHelper/Assets/JamVFX/JamVFX.asmdef
new file mode 100644
index 0000000..2f6d085
--- /dev/null
+++ b/JamHelper/Assets/JamVFX/JamVFX.asmdef
@@ -0,0 +1,3 @@
+{
+ "name": "JamVFX"
+}
diff --git a/JamHelper/Assets/JamVFX/JamVFX.asmdef.meta b/JamHelper/Assets/JamVFX/JamVFX.asmdef.meta
new file mode 100644
index 0000000..d50b66c
--- /dev/null
+++ b/JamHelper/Assets/JamVFX/JamVFX.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 965141f7c8dc39e479ec74d8b8beac26
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts.meta b/JamHelper/Assets/Scripts.meta
new file mode 100644
index 0000000..bbe1fa0
--- /dev/null
+++ b/JamHelper/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6f5c544f279202b4eb31d1b8ea641cdd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity.meta
new file mode 100644
index 0000000..2fa3ec8
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4ee782fd61fb4d0498655c70ebc3c55a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs
new file mode 100644
index 0000000..efb96f3
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs
@@ -0,0 +1,58 @@
+using UnityEngine;
+
+[DisallowMultipleComponent]
+[DefaultExecutionOrder(ORDER_EXECUTION)]
+public class InterpolationFactorController : MonoBehaviour
+{
+ public const int ORDER_EXECUTION = -1000;
+
+ private static InterpolationFactorController Instance;
+ private float[] _lastFixedUpdates = new float[2];
+ private int _lastIndex;
+
+ public static float Factor { get; private set; }
+
+ private void Awake()
+ {
+ if (Instance)
+ {
+ Destroy(this);
+ Debug.LogWarning($"The '{typeof(InterpolationFactorController).Name}' is a singleton!");
+ return;
+ }
+
+ Instance = this;
+ Factor = 1;
+ }
+
+ private void Start()
+ {
+ _lastFixedUpdates = new float[2] { Time.fixedTime, Time.fixedTime };
+ _lastIndex = 0;
+ }
+
+ private void FixedUpdate()
+ {
+ _lastIndex = NextIndex();
+ _lastFixedUpdates[_lastIndex] = Time.fixedTime;
+ }
+
+ private void Update()
+ {
+ float lastTime = _lastFixedUpdates[_lastIndex];
+ float prevTime = _lastFixedUpdates[NextIndex()];
+
+ if (lastTime == prevTime)
+ {
+ Factor = 1;
+ return;
+ }
+
+ Factor = (Time.time - lastTime) / (lastTime - prevTime);
+ }
+
+ private int NextIndex()
+ {
+ return (_lastIndex == 0) ? 1 : 0;
+ }
+}
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta
new file mode 100644
index 0000000..5ccc518
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationFactorController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e46e87749463bf14c853d26c9f2d94b5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs
new file mode 100644
index 0000000..9a83fe0
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs
@@ -0,0 +1,117 @@
+using System.Collections;
+using UnityEngine;
+
+[DisallowMultipleComponent]
+[DefaultExecutionOrder(ORDER_EXECUTION)]
+public class InterpolationObjectController : MonoBehaviour
+{
+ public const int ORDER_EXECUTION = InterpolationFactorController.ORDER_EXECUTION - 1;
+
+ private TransformData[] _transforms;
+ private int _index;
+
+ private void Awake()
+ {
+ StartCoroutine(WaitForEndOfFrame());
+ StartCoroutine(WaitForFixedUpdate());
+ }
+
+ private void OnEnable()
+ {
+ ResetTransforms();
+ }
+
+ private void BeforeFixedUpdate()
+ {
+ // Restoring actual transform for the FixedUpdate() cal where it could be change by the user.
+ RestoreActualTransform();
+ }
+
+ private void AfterFixedUpdate()
+ {
+ // Saving actual transform for being restored in the BeforeFixedUpdate() method.
+ SaveActualTransform();
+ }
+
+ private void Update()
+ {
+ // Set interpolated transform for being rendered.
+ SetInterpolatedTransform();
+ }
+
+ #region Helpers
+
+ private void RestoreActualTransform()
+ {
+ var latest = _transforms[_index];
+ transform.localPosition = latest.position;
+ transform.localScale = latest.scale;
+ transform.localRotation = latest.rotation;
+ }
+
+ private void SaveActualTransform()
+ {
+ _index = NextIndex();
+ _transforms[_index] = CurrentTransformData();
+ }
+
+ private void SetInterpolatedTransform()
+ {
+ var prev = _transforms[NextIndex()];
+ float factor = InterpolationFactorController.Factor;
+ transform.localPosition = Vector3.Lerp(prev.position, transform.localPosition, factor);
+ transform.localRotation = Quaternion.Slerp(prev.rotation, transform.localRotation, factor);
+ transform.localScale = Vector3.Lerp(prev.scale, transform.localScale, factor);
+ }
+
+ public void ResetTransforms()
+ {
+ _index = 0;
+ var td = CurrentTransformData();
+ _transforms = new TransformData[2] { td, td };
+ }
+
+ private TransformData CurrentTransformData()
+ {
+ return new TransformData(transform.localPosition, transform.localRotation, transform.localScale);
+ }
+
+ private int NextIndex()
+ {
+ return (_index == 0) ? 1 : 0;
+ }
+
+ private IEnumerator WaitForEndOfFrame()
+ {
+ while (true)
+ {
+ yield return new WaitForEndOfFrame();
+ BeforeFixedUpdate();
+ }
+ }
+
+ private IEnumerator WaitForFixedUpdate()
+ {
+ while (true)
+ {
+ yield return new WaitForFixedUpdate();
+ AfterFixedUpdate();
+ }
+ }
+
+ private struct TransformData
+ {
+ public Vector3 position;
+ public Quaternion rotation;
+ public Vector3 scale;
+
+ public TransformData(Vector3 position, Quaternion rotation, Vector3 scale)
+ {
+ this.position = position;
+ this.rotation = rotation;
+ this.scale = scale;
+ }
+ }
+
+ #endregion
+}
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta
new file mode 100644
index 0000000..3713b90
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/InterpolationObjectController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b67d250d8c3c3444696fd7025a189cb2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md
new file mode 100644
index 0000000..016072b
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md
@@ -0,0 +1,12 @@
+# Smooth Motion in Unity (refactored)
+
+This is an improved (refactored) version of the code from the ["Timesteps and Achieving Smooth Motion in Unity"](https://www.kinematicsoup.com/news/2016/8/9/rrypp5tkubynjwxhxjzd42s3o034o8?utm_source=youtube&utm_type=SMVideo) article.
+
+Now, there are only 2 components instead of original 3:
+
+1. [`InterpolationFactorController`](https://github.com/DevelAx/Smooth-Motion-in-Unity/blob/master/InterpolationFactorController.cs) a singleton scene component (the original name was `InterpolationController`) that calculates the current *interpolation factor*.
+2. [`InterpolationObjectController`](https://github.com/DevelAx/Smooth-Motion-in-Unity/blob/master/InterpolationObjectController.cs) a component for a moving object (the original name was `InterpolatedTransform`) which calculates the current interpolation for the object in the `Update()` method before it's being rendered and then restores its original `transform` values for the next `FixedUpdate()` call.
+3. The `InterpolatedTransformUpdater` component was removed as unnecessary.
+
+## Remarks
+For these scripts to work correctly the user's script must change the object's `transform` only in the `FixedUpdate()` method. When teleporting the object the user should call the (`InterpolationObjectController`).`ResetTransforms()` method after it.
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md.meta
new file mode 100644
index 0000000..51d1cc8
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 21e83c3a42dfa0a41a26dd8be5efb875
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests.meta
new file mode 100644
index 0000000..50f7279
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 74360e905b7961943baf642bbadbd795
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs
new file mode 100644
index 0000000..3bf706a
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs
@@ -0,0 +1,18 @@
+using UnityEngine;
+
+/// <summary>
+/// Use this component with a game object for demonstration purposes.
+/// </summary>
+[DisallowMultipleComponent]
+[RequireComponent(typeof(InterpolationObjectController))]
+public class TestMotion : MonoBehaviour
+{
+ [SerializeField]
+ private float _speed = 2f;
+
+ private void FixedUpdate()
+ {
+ transform.position += Vector3.right * _speed * Time.fixedDeltaTime;
+ transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + _speed * 30 * Time.fixedDeltaTime, transform.rotation.eulerAngles.z);
+ }
+}
diff --git a/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta
new file mode 100644
index 0000000..ed36b36
--- /dev/null
+++ b/JamHelper/Assets/Scripts/Smooth-Motion-in-Unity/Tests/TestMotion.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5d5926e8356360240bdac050edba52a2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/Assets/Scripts/TestBed.cs b/JamHelper/Assets/Scripts/TestBed.cs
new file mode 100644
index 0000000..baded9c
--- /dev/null
+++ b/JamHelper/Assets/Scripts/TestBed.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestBed : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/JamHelper/Assets/Scripts/TestBed.cs.meta b/JamHelper/Assets/Scripts/TestBed.cs.meta
new file mode 100644
index 0000000..f87c63d
--- /dev/null
+++ b/JamHelper/Assets/Scripts/TestBed.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d3447af4554c1574db33e279f0c41ced
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/JamHelper/ProjectSettings/QualitySettings.asset b/JamHelper/ProjectSettings/QualitySettings.asset
index 7b7658d..590e81b 100644
--- a/JamHelper/ProjectSettings/QualitySettings.asset
+++ b/JamHelper/ProjectSettings/QualitySettings.asset
@@ -18,7 +18,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
- blendWeights: 1
+ skinWeights: 1
textureQuality: 1
anisotropicTextures: 0
antiAliasing: 0
@@ -40,6 +40,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
- serializedVersion: 2
name: Low
@@ -53,7 +54,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
- blendWeights: 2
+ skinWeights: 2
textureQuality: 0
anisotropicTextures: 0
antiAliasing: 0
@@ -75,6 +76,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
- serializedVersion: 2
name: Medium
@@ -88,7 +90,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
- blendWeights: 2
+ skinWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
@@ -110,6 +112,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
- serializedVersion: 2
name: High
@@ -123,7 +126,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
- blendWeights: 2
+ skinWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
@@ -145,6 +148,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
- serializedVersion: 2
name: Very High
@@ -158,7 +162,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
- blendWeights: 4
+ skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
@@ -180,6 +184,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
- serializedVersion: 2
name: Ultra
@@ -193,7 +198,7 @@ QualitySettings:
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
- blendWeights: 4
+ skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
@@ -201,7 +206,7 @@ QualitySettings:
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
- vSyncCount: 1
+ vSyncCount: 0
lodBias: 2
maximumLODLevel: 0
streamingMipmapsActive: 0
@@ -215,6 +220,7 @@ QualitySettings:
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
excludedTargetPlatforms: []
m_PerPlatformDefaultQuality:
Android: 2
diff --git a/JamHelper/UserSettings/EditorUserSettings.asset b/JamHelper/UserSettings/EditorUserSettings.asset
index d015a0c..aaf4d8f 100644
--- a/JamHelper/UserSettings/EditorUserSettings.asset
+++ b/JamHelper/UserSettings/EditorUserSettings.asset
@@ -17,6 +17,9 @@ EditorUserSettings:
RecentlyUsedScenePath-3:
value: 22424703114646710c03382d1f2f4c5f30272b092326322222251136f0d63134ede43ffdfe751b39340da00f073b0f3ae1452f3bc528020a030ffe1a14ed331c1fd10aca16c41a0e850c12c7d904
flags: 0
+ RecentlyUsedScenePath-4:
+ value: 22424703114646710c03382d1f2f4c5f38160e232b2932392227521de3f63d3fe3f33fe6e90e3a2f2d4cfa320d2a18
+ flags: 0
vcSharedLogLevel:
value: 0d5e400f0650
flags: 0