diff --git a/.idea/.idea.mcs-hack/.idea/contentModel.xml b/.idea/.idea.mcs-hack/.idea/contentModel.xml
index 02426e14..09e51386 100644
--- a/.idea/.idea.mcs-hack/.idea/contentModel.xml
+++ b/.idea/.idea.mcs-hack/.idea/contentModel.xml
@@ -6,11 +6,13 @@
+
+
@@ -51,6 +53,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/.idea.mcs-hack/.idea/workspace.xml b/.idea/.idea.mcs-hack/.idea/workspace.xml
index 2b9ce6f1..161d6588 100644
--- a/.idea/.idea.mcs-hack/.idea/workspace.xml
+++ b/.idea/.idea.mcs-hack/.idea/workspace.xml
@@ -2,12 +2,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -16,18 +16,15 @@
-
-
-
@@ -46,24 +43,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -76,7 +58,7 @@
-
+
@@ -86,60 +68,47 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
+
-
+
-
-
+
+
-
-
-
-
+
+
+
@@ -149,11 +118,181 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -165,25 +304,29 @@
+
+
+
+
-
-
@@ -245,12 +388,12 @@
1560596373417
-
+
-
+
@@ -449,28 +592,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
@@ -491,9 +616,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -501,33 +794,55 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Frolov/EyesTest.unity b/Assets/Frolov/EyesTest.unity
index a9f03d0d..87019f01 100644
--- a/Assets/Frolov/EyesTest.unity
+++ b/Assets/Frolov/EyesTest.unity
@@ -239,7 +239,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ce437cef046e841aabd6070890e79d41, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &158116474
+--- !u!1 &65305865
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -247,77 +247,70 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 158116475}
- - component: {fileID: 158116477}
- - component: {fileID: 158116476}
+ - component: {fileID: 65305866}
m_Layer: 5
- m_Name: Text
+ m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &158116475
+--- !u!224 &65305866
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 158116474}
+ m_GameObject: {fileID: 65305865}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 709478710}
- m_RootOrder: 0
+ m_Children:
+ - {fileID: 1222644701}
+ m_Father: {fileID: 960990339}
+ m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 4.799988, y: 0}
+ m_SizeDelta: {x: -12.6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &158116476
-MonoBehaviour:
+--- !u!1 &73571283
+GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 158116474}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 14
- m_FontStyle: 0
- m_BestFit: 1
- m_MinSize: 10
- m_MaxSize: 242
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: S
---- !u!222 &158116477
-CanvasRenderer:
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 73571284}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &73571284
+RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 158116474}
- m_CullTransparentMesh: 0
+ m_GameObject: {fileID: 73571283}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1322477253}
+ m_Father: {fileID: 960990339}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 4.799988, y: 0}
+ m_SizeDelta: {x: -12.6, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &158778991
GameObject:
m_ObjectHideFlags: 0
@@ -393,138 +386,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &266346587
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 266346588}
- - component: {fileID: 266346591}
- - component: {fileID: 266346590}
- - component: {fileID: 266346589}
- m_Layer: 5
- m_Name: Y
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!224 &266346588
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266346587}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 1100039717}
- m_Father: {fileID: 382080147}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 1, y: 0}
- m_AnchorMax: {x: 1, y: 0}
- m_AnchoredPosition: {x: -157.1, y: 200}
- m_SizeDelta: {x: 290, y: 202.5}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &266346589
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266346587}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 266346590}
- m_OnClick:
- m_PersistentCalls:
- m_Calls:
- - m_Target: {fileID: 382080148}
- m_MethodName: ModeEyesCalibrationY
- m_Mode: 1
- m_Arguments:
- m_ObjectArgument: {fileID: 0}
- m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
- m_IntArgument: 0
- m_FloatArgument: 0
- m_StringArgument:
- m_BoolArgument: 0
- m_CallState: 2
- m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
- Culture=neutral, PublicKeyToken=null
---- !u!114 &266346590
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266346587}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
---- !u!222 &266346591
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266346587}
- m_CullTransparentMesh: 0
--- !u!1 &271088810
GameObject:
m_ObjectHideFlags: 0
@@ -550,16 +411,16 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 271088810}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 430.55502}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
- m_Father: {fileID: 382080147}
- m_RootOrder: 2
+ m_Father: {fileID: 2123475437}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
+ m_AnchoredPosition: {x: -103.784424, y: 912.89465}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &271088812
@@ -576,7 +437,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, a: 1}
- m_RaycastTarget: 1
+ m_RaycastTarget: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
@@ -675,7 +536,7 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
+ m_AdditionalShaderChannelsFlag: 25
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
@@ -690,12 +551,11 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- - {fileID: 1096682647}
- {fileID: 1616538714}
- - {fileID: 271088811}
- - {fileID: 987671588}
- - {fileID: 266346588}
- - {fileID: 709478710}
+ - {fileID: 2112502313}
+ - {fileID: 960990339}
+ - {fileID: 1004231653}
+ - {fileID: 2123475437}
m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -716,12 +576,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6810c45bc8dbc4035886f76c961cd5bc, type: 3}
m_Name:
m_EditorClassIdentifier:
- eyesLabel: {fileID: 1858238142}
+ eyesLabel: {fileID: 0}
mainCamera: {fileID: 9}
pointer: {fileID: 1096682647}
curPointer: {fileID: 271088811}
leftEye: {fileID: 1297912762}
rightEye: {fileID: 1298650319}
+ iPhoneXPointSize: {x: 1125, y: 2436}
+ iPhoneXMeterSize: {x: 0.06239083, y: 0.13509694}
--- !u!1 &392764811
GameObject:
m_ObjectHideFlags: 0
@@ -766,7 +628,7 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &709478709
+--- !u!1 &479755914
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -774,103 +636,81 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 709478710}
- - component: {fileID: 709478713}
- - component: {fileID: 709478712}
- - component: {fileID: 709478711}
+ - component: {fileID: 479755915}
m_Layer: 5
- m_Name: SW
+ m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!224 &709478710
+ m_IsActive: 1
+--- !u!224 &479755915
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 709478709}
+ m_GameObject: {fileID: 479755914}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- - {fileID: 158116475}
- m_Father: {fileID: 382080147}
- m_RootOrder: 5
+ - {fileID: 1771493809}
+ m_Father: {fileID: 2112502313}
+ m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 1, y: 0}
- m_AnchorMax: {x: 1, y: 0}
- m_AnchoredPosition: {x: -157.1, y: 730}
- m_SizeDelta: {x: 290, y: 202.5}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 4.799988, y: 0}
+ m_SizeDelta: {x: -12.6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &709478711
-MonoBehaviour:
+--- !u!1 &550480898
+GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 709478709}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 709478712}
- m_OnClick:
- m_PersistentCalls:
- m_Calls:
- - m_Target: {fileID: 382080148}
- m_MethodName: SwitchMode
- m_Mode: 1
- m_Arguments:
- m_ObjectArgument: {fileID: 0}
- m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
- m_IntArgument: 0
- m_FloatArgument: 0
- m_StringArgument:
- m_BoolArgument: 0
- m_CallState: 2
- m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
- Culture=neutral, PublicKeyToken=null
---- !u!114 &709478712
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 550480899}
+ - component: {fileID: 550480901}
+ - component: {fileID: 550480900}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &550480899
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 550480898}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1004231653}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &550480900
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 709478709}
+ m_GameObject: {fileID: 550480898}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
@@ -881,24 +721,108 @@ MonoBehaviour:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
---- !u!222 &709478713
+ m_text: GRAY
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 84dd14695854bbc43a5faa24fcf93d0d, type: 2}
+ m_sharedMaterial: {fileID: 21261991626553910, guid: 84dd14695854bbc43a5faa24fcf93d0d,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_outlineColor:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontSize: 14
+ m_fontSizeBase: 14
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_textAlignment: 514
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_firstOverflowCharacterIndex: -1
+ m_linkedTextComponent: {fileID: 0}
+ m_isLinkedTextComponent: 0
+ m_isTextTruncated: 0
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_ignoreRectMaskCulling: 0
+ m_ignoreCulling: 1
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_firstVisibleCharacter: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_textInfo:
+ textComponent: {fileID: 550480900}
+ characterCount: 4
+ spriteCount: 0
+ spaceCount: 0
+ wordCount: 1
+ linkCount: 0
+ lineCount: 1
+ pageCount: 1
+ materialCount: 1
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_spriteAnimator: {fileID: 0}
+ m_hasFontAssetChanged: 0
+ m_subTextObjects:
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &550480901
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 709478709}
+ m_GameObject: {fileID: 550480898}
m_CullTransparentMesh: 0
---- !u!1 &987671587
+--- !u!1 &949059726
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -906,64 +830,138 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 987671588}
- - component: {fileID: 987671591}
- - component: {fileID: 987671590}
- - component: {fileID: 987671589}
+ - component: {fileID: 949059727}
+ - component: {fileID: 949059729}
+ - component: {fileID: 949059728}
m_Layer: 5
- m_Name: X
+ m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!224 &987671588
+ m_IsActive: 1
+--- !u!224 &949059727
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 987671587}
+ m_GameObject: {fileID: 949059726}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 2116564948}
- m_Father: {fileID: 382080147}
- m_RootOrder: 3
+ m_Children: []
+ m_Father: {fileID: 2112502313}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 1, y: 0}
- m_AnchorMax: {x: 1, y: 0}
- m_AnchoredPosition: {x: -157.1, y: 480}
- m_SizeDelta: {x: 290, y: 202.5}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &987671589
+--- !u!114 &949059728
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 987671587}
+ m_GameObject: {fileID: 949059726}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.88235295, g: 0, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: 5d98067acd216d04aaa0a5c07e6b491f, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &949059729
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 949059726}
+ m_CullTransparentMesh: 0
+--- !u!1 &960990338
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 960990339}
+ - component: {fileID: 960990340}
+ m_Layer: 5
+ m_Name: y
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &960990339
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 960990338}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 2017939992}
+ - {fileID: 73571284}
+ - {fileID: 65305866}
+ m_Father: {fileID: 382080147}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 183}
+ m_SizeDelta: {x: -40, y: 91.7}
+ m_Pivot: {x: 0.5, y: 0}
+--- !u!114 &960990340
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 960990338}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -113659843, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 0.0071456432, g: 1, b: 0, a: 1}
+ m_HighlightedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_PressedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_SelectedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
- m_FadeDuration: 0.1
+ m_FadeDuration: 0.15
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
@@ -973,16 +971,23 @@ MonoBehaviour:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
+ m_SelectedTrigger: Highlighted
m_DisabledTrigger: Disabled
m_Interactable: 1
- m_TargetGraphic: {fileID: 987671590}
- m_OnClick:
+ m_TargetGraphic: {fileID: 1322477254}
+ m_FillRect: {fileID: 1322477253}
+ m_HandleRect: {fileID: 1222644701}
+ m_Direction: 0
+ m_MinValue: 1
+ m_MaxValue: 6
+ m_WholeNumbers: 0
+ m_Value: 1
+ m_OnValueChanged:
m_PersistentCalls:
m_Calls:
- - m_Target: {fileID: 382080148}
- m_MethodName: ModeEyesCalibrationX
- m_Mode: 1
+ - m_Target: {fileID: 1751822127}
+ m_MethodName: SetY
+ m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
@@ -991,29 +996,113 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
+ m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!1 &1004231652
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1004231653}
+ - component: {fileID: 1004231656}
+ - component: {fileID: 1004231655}
+ - component: {fileID: 1004231654}
+ m_Layer: 5
+ m_Name: Gray
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1004231653
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004231652}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 550480899}
+ m_Father: {fileID: 382080147}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: -245.79999, y: 570}
+ m_SizeDelta: {x: 383.7, y: 110.400024}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1004231654
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004231652}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.6911765, g: 0.6911765, b: 0.6911765, a: 1}
+ m_PressedColor: {r: 0.6901961, g: 0.6901961, b: 0.6901961, a: 1}
+ m_SelectedColor: {r: 0.6911765, g: 0.6911765, b: 0.6911765, a: 1}
+ m_DisabledColor: {r: 1, g: 1, b: 1, a: 0.39215687}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.15
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1004231655}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null
---- !u!114 &987671590
+--- !u!114 &1004231655
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 987671587}
+ m_GameObject: {fileID: 1004231652}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_Color: {r: 0.37254903, g: 0.41133702, b: 0.4509804, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Sprite: {fileID: 21300000, guid: f38987b2f12030947bea58483e18ce1a, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
@@ -1022,13 +1111,13 @@ MonoBehaviour:
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
---- !u!222 &987671591
+--- !u!222 &1004231656
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 987671587}
+ m_GameObject: {fileID: 1004231652}
m_CullTransparentMesh: 0
--- !u!1 &1096682646
GameObject:
@@ -1042,7 +1131,7 @@ GameObject:
- component: {fileID: 1096682649}
- component: {fileID: 1096682648}
m_Layer: 5
- m_Name: Average Pointer
+ m_Name: Averaged Pointer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -1055,16 +1144,16 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1096682646}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 430.55502}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
- m_Father: {fileID: 382080147}
- m_RootOrder: 0
+ m_Father: {fileID: 2123475437}
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
+ m_AnchoredPosition: {x: -103.784424, y: 912.89465}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1096682648
@@ -1080,8 +1169,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
+ m_Color: {r: 0.074971914, g: 1, b: 0, a: 1}
+ m_RaycastTarget: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
@@ -1104,85 +1193,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1096682646}
m_CullTransparentMesh: 0
---- !u!1 &1100039716
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1100039717}
- - component: {fileID: 1100039719}
- - component: {fileID: 1100039718}
- m_Layer: 5
- m_Name: Text
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1100039717
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1100039716}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 266346588}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1100039718
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1100039716}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 14
- m_FontStyle: 0
- m_BestFit: 1
- m_MinSize: 10
- m_MaxSize: 300
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: Y
---- !u!222 &1100039719
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1100039716}
- m_CullTransparentMesh: 0
--- !u!1 &1129581296
GameObject:
m_ObjectHideFlags: 0
@@ -1348,73 +1358,183 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
---- !u!1001 &1297912760
-PrefabInstance:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_Modification:
- m_TransformParent: {fileID: 0}
- m_Modifications:
- - target: {fileID: 1989800666789462, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_Name
- value: Eye Left
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalPosition.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalPosition.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalPosition.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalRotation.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalRotation.w
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_RootOrder
- value: 9
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
---- !u!1 &1297912761 stripped
+--- !u!1 &1196775397
GameObject:
- m_CorrespondingSourceObject: {fileID: 1989800666789462, guid: 7aa4d660b946c41779eac0aba04e4a34,
- type: 3}
- m_PrefabInstance: {fileID: 1297912760}
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
---- !u!4 &1297912762 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34,
- type: 3}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1196775398}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1196775398
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1196775397}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1998780865}
+ m_Father: {fileID: 2112502313}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 4.799988, y: 0}
+ m_SizeDelta: {x: -12.6, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1222644700
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1222644701}
+ - component: {fileID: 1222644703}
+ - component: {fileID: 1222644702}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1222644701
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222644700}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 65305866}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: -6.299988, y: 0.14999771}
+ m_SizeDelta: {x: 16, y: -3.2999997}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1222644702
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222644700}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.88235295, g: 0, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: c26a820b2129e2f4eb122efd27df5339, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &1222644703
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222644700}
+ m_CullTransparentMesh: 0
+--- !u!1001 &1297912760
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1333776923}
+ m_Modifications:
+ - target: {fileID: 1989800666789462, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_Name
+ value: Eye Left
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -1531.0001
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -772.999
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 7aa4d660b946c41779eac0aba04e4a34, type: 3}
+--- !u!1 &1297912761 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 1989800666789462, guid: 7aa4d660b946c41779eac0aba04e4a34,
+ type: 3}
+ m_PrefabInstance: {fileID: 1297912760}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &1297912762 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4177158024167098, guid: 7aa4d660b946c41779eac0aba04e4a34,
+ type: 3}
m_PrefabInstance: {fileID: 1297912760}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1298650317
@@ -1422,7 +1542,7 @@ PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
- m_TransformParent: {fileID: 0}
+ m_TransformParent: {fileID: 1333776923}
m_Modifications:
- target: {fileID: 1989800666789462, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_Name
@@ -1430,11 +1550,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalPosition.x
- value: 0
+ value: -1531.0001
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalPosition.y
- value: 0
+ value: -772.999
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalPosition.z
@@ -1442,15 +1562,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalRotation.x
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalRotation.y
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalRotation.z
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalRotation.w
@@ -1458,7 +1578,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_RootOrder
- value: 8
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4177158024167098, guid: d8d8069f0cc124486b952a7aae8a3770, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -1486,6 +1606,80 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1298650317}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1322477252
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1322477253}
+ - component: {fileID: 1322477255}
+ - component: {fileID: 1322477254}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1322477253
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1322477252}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 73571284}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: -5.549988, y: 0}
+ m_SizeDelta: {x: 11.100003, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1322477254
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1322477252}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: f38987b2f12030947bea58483e18ce1a, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &1322477255
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1322477252}
+ m_CullTransparentMesh: 0
--- !u!1 &1333776921
GameObject:
m_ObjectHideFlags: 0
@@ -1531,7 +1725,9 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1531.0001, y: 772.999, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
+ m_Children:
+ - {fileID: 1298650319}
+ - {fileID: 1297912762}
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1623,17 +1819,16 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 1858238145}
+ m_Children: []
m_Father: {fileID: 382080147}
- m_RootOrder: 1
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!1 &1858238141
+--- !u!1 &1751822124
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1641,93 +1836,156 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1858238145}
- - component: {fileID: 1858238144}
- - component: {fileID: 1858238142}
- - component: {fileID: 1858238143}
- m_Layer: 5
- m_Name: Eyes
+ - component: {fileID: 1751822128}
+ - component: {fileID: 1751822127}
+ - component: {fileID: 1751822126}
+ - component: {fileID: 1751822125}
+ m_Layer: 0
+ m_Name: EyesEventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1858238142
+--- !u!114 &1751822125
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1858238141}
+ m_GameObject: {fileID: 1751822124}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 130367fe1a9c1486c9cc21575aa32bb4, type: 3}
m_Name:
m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 14
- m_FontStyle: 0
- m_BestFit: 1
- m_MinSize: 10
- m_MaxSize: 71
- m_Alignment: 0
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: New Text
---- !u!114 &1858238143
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1751822126
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1858238141}
+ m_GameObject: {fileID: 1751822124}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
- m_EffectColor: {r: 0, g: 0, b: 0, a: 1}
- m_EffectDistance: {x: 1, y: -1}
- m_UseGraphicAlpha: 1
---- !u!222 &1858238144
-CanvasRenderer:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!114 &1751822127
+MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1858238141}
- m_CullTransparentMesh: 0
---- !u!224 &1858238145
+ m_GameObject: {fileID: 1751822124}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3ba4d0b5038f34bd69d845b563a1b859, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ leftEye: {fileID: 1297912762}
+ rightEye: {fileID: 1298650319}
+ queueMaxSize: 8
+ additionalXCoefficient: 1
+ additionalYCoefficient: 1
+--- !u!4 &1751822128
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1751822124}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 877.50256, y: 644.08813, z: -1571.0852}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 8
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1771493808
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1771493809}
+ - component: {fileID: 1771493811}
+ - component: {fileID: 1771493810}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1771493809
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1858238141}
+ m_GameObject: {fileID: 1771493808}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
- m_Father: {fileID: 1616538714}
+ m_Father: {fileID: 479755915}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: -139.5, y: -805.5}
- m_SizeDelta: {x: 642.5, y: 491.8}
+ m_AnchoredPosition: {x: -6.299988, y: 0.14999771}
+ m_SizeDelta: {x: 16, y: -3.2999997}
m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1771493810
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1771493808}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.88235295, g: 0, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: c26a820b2129e2f4eb122efd27df5339, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &1771493811
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1771493808}
+ m_CullTransparentMesh: 0
--- !u!1 &1966922328
GameObject:
m_ObjectHideFlags: 0
@@ -1827,6 +2085,154 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
+--- !u!1 &1998780864
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1998780865}
+ - component: {fileID: 1998780867}
+ - component: {fileID: 1998780866}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1998780865
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1998780864}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1196775398}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: -5.549988, y: 0}
+ m_SizeDelta: {x: 11.100003, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1998780866
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1998780864}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: f38987b2f12030947bea58483e18ce1a, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &1998780867
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1998780864}
+ m_CullTransparentMesh: 0
+--- !u!1 &2017939991
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2017939992}
+ - component: {fileID: 2017939994}
+ - component: {fileID: 2017939993}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2017939992
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2017939991}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 960990339}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2017939993
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2017939991}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.88235295, g: 0, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 21300000, guid: 5d98067acd216d04aaa0a5c07e6b491f, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+--- !u!222 &2017939994
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2017939991}
+ m_CullTransparentMesh: 0
--- !u!1 &2101694690
GameObject:
m_ObjectHideFlags: 0
@@ -1893,7 +2299,7 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &2116564947
+--- !u!1 &2112502312
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1901,74 +2307,144 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2116564948}
- - component: {fileID: 2116564950}
- - component: {fileID: 2116564949}
+ - component: {fileID: 2112502313}
+ - component: {fileID: 2112502314}
m_Layer: 5
- m_Name: Text
+ m_Name: x
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &2116564948
+--- !u!224 &2112502313
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2116564947}
+ m_GameObject: {fileID: 2112502312}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 987671588}
- m_RootOrder: 0
+ m_Children:
+ - {fileID: 949059727}
+ - {fileID: 1196775398}
+ - {fileID: 479755915}
+ m_Father: {fileID: 382080147}
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &2116564949
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 91.75}
+ m_SizeDelta: {x: -40, y: 91.25}
+ m_Pivot: {x: 0.5, y: 0}
+--- !u!114 &2112502314
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2116564947}
+ m_GameObject: {fileID: 2112502312}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: -113659843, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
+ m_Navigation:
+ m_Mode: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 0.88235295, g: 0, b: 0, a: 1}
+ m_HighlightedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_PressedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_SelectedColor: {r: 0.37254903, g: 0.40784314, b: 0.4509804, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.15
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1998780866}
+ m_FillRect: {fileID: 1998780865}
+ m_HandleRect: {fileID: 1771493809}
+ m_Direction: 0
+ m_MinValue: 1
+ m_MaxValue: 6
+ m_WholeNumbers: 0
+ m_Value: 1
+ m_OnValueChanged:
m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 14
- m_FontStyle: 0
- m_BestFit: 1
- m_MinSize: 10
- m_MaxSize: 242
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: X
---- !u!222 &2116564950
-CanvasRenderer:
+ m_Calls:
+ - m_Target: {fileID: 1751822127}
+ m_MethodName: SetX
+ m_Mode: 0
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!1 &2123475436
+GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2116564947}
- m_CullTransparentMesh: 0
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2123475437}
+ - component: {fileID: 2123475438}
+ m_Layer: 0
+ m_Name: Pointers
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2123475437
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2123475436}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 103.78436, y: -912.89465, z: -430.55502}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 271088811}
+ - {fileID: 1096682647}
+ m_Father: {fileID: 382080147}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2123475438
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2123475436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2bd5eb4fd354c41ebb25546bcc2288a4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ pointer: {fileID: 271088811}
+ averagedPointer: {fileID: 1096682647}
diff --git a/Assets/Frolov/Math3d.cs b/Assets/Frolov/Math3d.cs
new file mode 100644
index 00000000..900ce499
--- /dev/null
+++ b/Assets/Frolov/Math3d.cs
@@ -0,0 +1,1264 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using System;
+
+public class Math3d {
+
+ private static Transform tempChild = null;
+ private static Transform tempParent = null;
+
+ private static Vector3[] positionRegister;
+ private static float[] posTimeRegister;
+ private static int positionSamplesTaken = 0;
+
+ private static Quaternion[] rotationRegister;
+ private static float[] rotTimeRegister;
+ private static int rotationSamplesTaken = 0;
+
+ public static void Init(){
+
+ tempChild = (new GameObject("Math3d_TempChild")).transform;
+ tempParent = (new GameObject("Math3d_TempParent")).transform;
+
+ tempChild.gameObject.hideFlags = HideFlags.HideAndDontSave;
+ MonoBehaviour.DontDestroyOnLoad(tempChild.gameObject);
+
+ tempParent.gameObject.hideFlags = HideFlags.HideAndDontSave;
+ MonoBehaviour.DontDestroyOnLoad(tempParent.gameObject);
+
+ //set the parent
+ tempChild.parent = tempParent;
+ }
+
+ //Get a point on a Catmull-Rom spline.
+ //The percentage is in range 0 to 1, which starts at the second control point and ends at the second last control point.
+ //The array cPoints should contain all control points. The minimum amount of control points should be 4.
+ //Source: https://forum.unity.com/threads/waypoints-and-constant-variable-speed-problems.32954/#post-213942
+ public static Vector2 GetPointOnSpline(float percentage, Vector2[] cPoints) {
+
+ //Minimum size is 4
+ if (cPoints.Length >= 4) {
+
+ //Convert the input range (0 to 1) to range (0 to numSections)
+ int numSections = cPoints.Length - 3;
+ int curPoint = Mathf.Min(Mathf.FloorToInt(percentage * (float)numSections), numSections - 1);
+ float t = percentage * (float)numSections - (float)curPoint;
+
+ //Get the 4 control points around the location to be sampled.
+ Vector2 p0 = cPoints[curPoint];
+ Vector2 p1 = cPoints[curPoint + 1];
+ Vector2 p2 = cPoints[curPoint + 2];
+ Vector2 p3 = cPoints[curPoint + 3];
+
+ //The Catmull-Rom spline can be written as:
+ // 0.5 * (2*P1 + (-P0 + P2) * t + (2*P0 - 5*P1 + 4*P2 - P3) * t^2 + (-P0 + 3*P1 - 3*P2 + P3) * t^3)
+ //Variables P0 to P3 are the control points.
+ //Variable t is the position on the spline, with a range of 0 to numSections.
+ //C# way of writing the function. Note that f means float (to force precision).
+ Vector2 result = .5f * (2f * p1 + (-p0 + p2) * t + (2f * p0 - 5f * p1 + 4f * p2 - p3) * (t * t) + (-p0 + 3f * p1 - 3f * p2 + p3) * (t * t * t));
+
+ return new Vector2(result.x, result.y);
+ }
+
+ else {
+
+ return new Vector2(0, 0);
+ }
+ }
+
+ //Finds the intersection points between a straight line and a spline. Solves a Cubic polynomial equation
+ //The output is in the form of a percentage along the length of the spline (range 0 to 1).
+ //The linePoints array should contain two points which form a straight line.
+ //The cPoints array should contain all the control points of the spline.
+ //Use case: create a gauge with a non-linear scale by defining an array with needle angles vs the number it should point at. The array creates a spline.
+ //Driving the needle with a float in range 0 to 1 gives an unpredictable result. Instead, use the GetLineSplineIntersections() function to find the angle the
+ //gauge needle should have for a given number it should point at. In this case, cPoints should contain x for angle and y for scale number.
+ //Make a horizontal line at the given scale number (y) you want to find the needle angle for. The returned float is a percentage location on the spline (range 0 to 1).
+ //Plug this value into the GetPointOnSpline() function to get the x coordinate which represents the needle angle.
+ //Source: https://medium.com/@csaba.apagyi/finding-catmull-rom-spline-and-line-intersection-part-2-mathematical-approach-dfb969019746
+ public static float[] GetLineSplineIntersections(Vector2[] linePoints, Vector2[] cPoints) {
+
+ List list = new List();
+ float[] crossings;
+
+ int numSections = cPoints.Length - 3;
+
+ //The line spline intersection can only be calculated for one segment of a spline, meaning 4 control points,
+ //with a spline segment between the middle two control points. So check all spline segments.
+ for (int i = 0; i < numSections; i++) {
+
+ //Get the 4 control points around the location to be sampled.
+ Vector2 p0 = cPoints[i];
+ Vector2 p1 = cPoints[i + 1];
+ Vector2 p2 = cPoints[i + 2];
+ Vector2 p3 = cPoints[i + 3];
+
+ //The Catmull-Rom spline can be written as:
+ // 0.5 * (2P1 + (-P0 + P2) * t + (2P0 - 5P1 + 4P2 - P3) * t^2 + (-P0 + 3P1 - 3P2 + P3) * t^3)
+ //Variables P0 to P3 are the control points.
+ //Notation: 2P1 means 2*controlPoint1
+ //Variable t is the position on the spline, converted from a range of 0 to 1.
+ //C# way of writing the function is below. Note that f means float (to force precision).
+ //Vector2 result = .5f * (2f * p1 + (-p0 + p2) * t + (2f * p0 - 5f * p1 + 4f * p2 - p3) * (t * t) + (-p0 + 3f * p1 - 3f * p2 + p3) * (t * t * t));
+
+ //The variable t is the only unknown, so the rest can be substituted:
+ //a = 0.5 * (-p0 + 3*p1 - 3*p2 + p3)
+ //b = 0.5 * (2*p0 - 5*p1 + 4*p2 - p3)
+ //c = 0.5 * (-p0 + p2)
+ //d = 0.5 * (2*p1)
+
+ //This gives rise to the following Cubic equation:
+ //a * t^3 + b * t^2 + c * t + d = 0
+
+ //The spline control points (p0-3) consist of two variables: the x and y coordinates. They are independent so we can handle them separately.
+ //Below, a1 is substitution a where the x coordinate of each point is used, like so: a1 = 0.5 * (-p0.x + 3*p1.x - 3*p2.x + p3.x)
+ //Below, a2 is substitution a where the y coordinate of each point is used, like so: a2 = 0.5 * (-p0.y + 3*p1.y - 3*p2.y + p3.y)
+ //The same logic applies for substitutions b, c, and d.
+
+ float a1 = 0.5f * (-p0.x + 3f * p1.x - 3f * p2.x + p3.x);
+ float a2 = 0.5f * (-p0.y + 3f * p1.y - 3f * p2.y + p3.y);
+ float b1 = 0.5f * (2f * p0.x - 5f * p1.x + 4f * p2.x - p3.x);
+ float b2 = 0.5f * (2f * p0.y - 5f * p1.y + 4f * p2.y - p3.y);
+ float c1 = 0.5f * (-p0.x + p2.x);
+ float c2 = 0.5f * (-p0.y + p2.y);
+ float d1 = 0.5f * (2f * p1.x);
+ float d2 = 0.5f * (2f * p1.y);
+
+ //We now have two Cubic functions. One for x and one for y.
+ //Note that a, b, c, and d are not vector variables itself but substituted functions.
+ //x = a1 * t^3 + b1 * t^2 + c1 * t + d1
+ //y = a2 * t^3 + b2 * t^2 + c2 * t + d2
+
+ //Line formula, standard form:
+ //Ax + By + C = 0
+ float A = linePoints[0].y - linePoints[1].y;
+ float B = linePoints[1].x - linePoints[0].x;
+ float C = (linePoints[0].x - linePoints[1].x) * linePoints[0].y + (linePoints[1].y - linePoints[0].y) * linePoints[0].x;
+
+ //Substituting the values of x and y from the separated Spline formula into the Line formula, we get:
+ //A * (a1 * t^3 + b1 * t^2 + c1 * t + d1) + B * (a2 * t^3 + b2 * t^2 + c2 * t + d2) + C = 0
+
+ //Rearranged version:
+ //(A * a1 + B * a2) * t^3 + (A * b1 + B * b2) * t^2 + (A * c1 + B * c2) * t + (A * d1 + B * d2 + C) = 0
+
+ //Substituting gives rise to a Cubic function:
+ //a * t^3 + b * t^2 + c * t + d = 0
+ float a = A * a1 + B * a2;
+ float b = A * b1 + B * b2;
+ float c = A * c1 + B * c2;
+ float d = A * d1 + B * d2 + C;
+
+
+ //This is again a Cubic equation, combined from the Line and the Spline equation. If you solve this you can get up to 3 line-spline cross points.
+ //How to solve a Cubic equation is described here:
+ //https://www.cs.rit.edu/~ark/pj/lib/edu/rit/numeric/Cubic.shtml
+ //https://www.codeproject.com/Articles/798474/To-Solve-a-Cubic-Equation
+
+ int crossAmount;
+ float cross1;
+ float cross2;
+ float cross3;
+ float crossCorrected;
+
+ //Two different implementations of solving a Cubic equation.
+ // SolveCubic2(out crossAmount, out cross1, out cross2, out cross3, a, b, c, d);
+ SolveCubic(out crossAmount, out cross1, out cross2, out cross3, a, b, c, d);
+
+ //Get the highest and lowest value (in range 0 to 1) of the current section and calculate the difference.
+ float currentSectionLowest = (float)i / (float)numSections;
+ float currentSectionHighest = ((float)i + 1f) / (float)numSections;
+ float diff = currentSectionHighest - currentSectionLowest;
+
+ //Only use the result if it is within range 0 to 1.
+ //The range 0 to 1 is within the current segment. It has to be converted to the range of the entire spline,
+ //which still uses a range of 0 to 1.
+ if (cross1 >= 0 && cross1 <= 1) {
+
+ //Map an intermediate range (0 to 1) to the lowest and highest section values.
+ crossCorrected = (cross1 * diff) + currentSectionLowest;
+
+ //Add the result to the list.
+ list.Add(crossCorrected);
+ }
+
+ if (cross2 >= 0 && cross2 <= 1) {
+
+ //Map an intermediate range (0 to 1) to the lowest and highest section values.
+ crossCorrected = (cross2 * diff) + currentSectionLowest;
+
+ //Add the result to the list.
+ list.Add(crossCorrected);
+ }
+
+ if (cross3 >= 0 && cross3 <= 1) {
+
+ //Map an intermediate range (0 to 1) to the lowest and highest section values.
+ crossCorrected = (cross3 * diff) + currentSectionLowest;
+
+ //Add the result to the list.
+ list.Add(crossCorrected);
+ }
+ }
+
+ //Convert the list to an array.
+ crossings = list.ToArray();
+
+ return crossings;
+ }
+
+ //Solve cubic equation according to Cardano.
+ //Source: https://www.cs.rit.edu/~ark/pj/lib/edu/rit/numeric/Cubic.shtml
+ private static void SolveCubic(out int nRoots, out float x1, out float x2, out float x3, float a, float b, float c, float d) {
+
+ float TWO_PI = 2f * Mathf.PI;
+ float FOUR_PI = 4f * Mathf.PI;
+
+ // Normalize coefficients.
+ float denom = a;
+ a = b / denom;
+ b = c / denom;
+ c = d / denom;
+
+ // Commence solution.
+ float a_over_3 = a / 3f;
+ float Q = (3f * b - a * a) / 9f;
+ float Q_CUBE = Q * Q * Q;
+ float R = (9f * a * b - 27f * c - 2f * a * a * a) / 54f;
+ float R_SQR = R * R;
+ float D = Q_CUBE + R_SQR;
+
+ if (D < 0.0f) {
+
+ // Three unequal real roots.
+ nRoots = 3;
+ float theta = Mathf.Acos(R / Mathf.Sqrt(-Q_CUBE));
+ float SQRT_Q = Mathf.Sqrt(-Q);
+ x1 = 2f * SQRT_Q * Mathf.Cos(theta / 3f) - a_over_3;
+ x2 = 2f * SQRT_Q * Mathf.Cos((theta + TWO_PI) / 3f) - a_over_3;
+ x3 = 2f * SQRT_Q * Mathf.Cos((theta + FOUR_PI) / 3f) - a_over_3;
+ }
+
+ else if (D > 0.0f) {
+
+ // One real root.
+ nRoots = 1;
+ float SQRT_D = Mathf.Sqrt(D);
+ float S = CubeRoot(R + SQRT_D);
+ float T = CubeRoot(R - SQRT_D);
+ x1 = (S + T) - a_over_3;
+ x2 = float.NaN;
+ x3 = float.NaN;
+ }
+
+ else {
+
+ // Three real roots, at least two equal.
+ nRoots = 3;
+ float CBRT_R = CubeRoot(R);
+ x1 = 2 * CBRT_R - a_over_3;
+ x2 = CBRT_R - a_over_3;
+ x3 = x2;
+ }
+ }
+
+ //Mathf.Pow is used as an alternative for cube root (Math.cbrt) here.
+ private static float CubeRoot(float d) {
+
+ if (d < 0.0f) {
+
+ return -Mathf.Pow(-d, 1f / 3f);
+ }
+
+ else {
+
+ return Mathf.Pow(d, 1f / 3f);
+ }
+ }
+
+
+ //increase or decrease the length of vector by size
+ public static Vector3 AddVectorLength(Vector3 vector, float size){
+
+ //get the vector length
+ float magnitude = Vector3.Magnitude(vector);
+
+ //calculate new vector length
+ float newMagnitude = magnitude + size;
+
+ //calculate the ratio of the new length to the old length
+ float scale = newMagnitude / magnitude;
+
+ //scale the vector
+ return vector * scale;
+ }
+
+ //create a vector of direction "vector" with length "size"
+ public static Vector3 SetVectorLength(Vector3 vector, float size){
+
+ //normalize the vector
+ Vector3 vectorNormalized = Vector3.Normalize(vector);
+
+ //scale the vector
+ return vectorNormalized *= size;
+ }
+
+
+ //caclulate the rotational difference from A to B
+ public static Quaternion SubtractRotation(Quaternion B, Quaternion A){
+
+ Quaternion C = Quaternion.Inverse(A) * B;
+ return C;
+ }
+
+ //Add rotation B to rotation A.
+ public static Quaternion AddRotation(Quaternion A, Quaternion B){
+
+ Quaternion C = A * B;
+ return C;
+ }
+
+ //Same as the build in TransformDirection(), but using a rotation instead of a transform.
+ public static Vector3 TransformDirectionMath(Quaternion rotation, Vector3 vector){
+
+ Vector3 output = rotation * vector;
+ return output;
+ }
+
+ //Same as the build in InverseTransformDirection(), but using a rotation instead of a transform.
+ public static Vector3 InverseTransformDirectionMath(Quaternion rotation, Vector3 vector){
+
+ Vector3 output = Quaternion.Inverse(rotation) * vector;
+ return output;
+ }
+
+ //Rotate a vector as if it is attached to an object with rotation "from", which is then rotated to rotation "to".
+ //Similar to TransformWithParent(), but rotating a vector instead of a transform.
+ public static Vector3 RotateVectorFromTo(Quaternion from, Quaternion to, Vector3 vector){
+ //Note: comments are in case all inputs are in World Space.
+ Quaternion Q = SubtractRotation(to, from); //Output is in object space.
+ Vector3 A = InverseTransformDirectionMath(from, vector);//Output is in object space.
+ Vector3 B = Q * A; //Output is in local space.
+ Vector3 C = TransformDirectionMath(from, B); //Output is in world space.
+ return C;
+ }
+
+ //Find the line of intersection between two planes. The planes are defined by a normal and a point on that plane.
+ //The outputs are a point on the line and a vector which indicates it's direction. If the planes are not parallel,
+ //the function outputs true, otherwise false.
+ public static bool PlanePlaneIntersection(out Vector3 linePoint, out Vector3 lineVec, Vector3 plane1Normal, Vector3 plane1Position, Vector3 plane2Normal, Vector3 plane2Position){
+
+ linePoint = Vector3.zero;
+ lineVec = Vector3.zero;
+
+ //We can get the direction of the line of intersection of the two planes by calculating the
+ //cross product of the normals of the two planes. Note that this is just a direction and the line
+ //is not fixed in space yet. We need a point for that to go with the line vector.
+ lineVec = Vector3.Cross(plane1Normal, plane2Normal);
+
+ //Next is to calculate a point on the line to fix it's position in space. This is done by finding a vector from
+ //the plane2 location, moving parallel to it's plane, and intersecting plane1. To prevent rounding
+ //errors, this vector also has to be perpendicular to lineDirection. To get this vector, calculate
+ //the cross product of the normal of plane2 and the lineDirection.
+ Vector3 ldir = Vector3.Cross(plane2Normal, lineVec);
+
+ float denominator = Vector3.Dot(plane1Normal, ldir);
+
+ //Prevent divide by zero and rounding errors by requiring about 5 degrees angle between the planes.
+ if(Mathf.Abs(denominator) > 0.006f){
+
+ Vector3 plane1ToPlane2 = plane1Position - plane2Position;
+ float t = Vector3.Dot(plane1Normal, plane1ToPlane2) / denominator;
+ linePoint = plane2Position + t * ldir;
+
+ return true;
+ }
+
+ //output not valid
+ else{
+ return false;
+ }
+ }
+
+ //Get the intersection between a line and a plane.
+ //If the line and plane are not parallel, the function outputs true, otherwise false.
+ public static bool LinePlaneIntersection(out Vector3 intersection, Vector3 linePoint, Vector3 lineVec, Vector3 planeNormal, Vector3 planePoint){
+
+ float length;
+ float dotNumerator;
+ float dotDenominator;
+ Vector3 vector;
+ intersection = Vector3.zero;
+
+ //calculate the distance between the linePoint and the line-plane intersection point
+ dotNumerator = Vector3.Dot((planePoint - linePoint), planeNormal);
+ dotDenominator = Vector3.Dot(lineVec, planeNormal);
+
+ //line and plane are not parallel
+ if(dotDenominator != 0.0f){
+ length = dotNumerator / dotDenominator;
+
+ //create a vector from the linePoint to the intersection point
+ vector = SetVectorLength(lineVec, length);
+
+ //get the coordinates of the line-plane intersection point
+ intersection = linePoint + vector;
+
+ return true;
+ }
+
+ //output not valid
+ else{
+ return false;
+ }
+ }
+
+ //Calculate the intersection point of two lines. Returns true if lines intersect, otherwise false.
+ //Note that in 3d, two lines do not intersect most of the time. So if the two lines are not in the
+ //same plane, use ClosestPointsOnTwoLines() instead.
+ public static bool LineLineIntersection(out Vector3 intersection, Vector3 linePoint1, Vector3 lineVec1, Vector3 linePoint2, Vector3 lineVec2){
+
+ Vector3 lineVec3 = linePoint2 - linePoint1;
+ Vector3 crossVec1and2 = Vector3.Cross(lineVec1, lineVec2);
+ Vector3 crossVec3and2 = Vector3.Cross(lineVec3, lineVec2);
+
+ float planarFactor = Vector3.Dot(lineVec3, crossVec1and2);
+
+ //is coplanar, and not parrallel
+ if(Mathf.Abs(planarFactor) < 0.0001f && crossVec1and2.sqrMagnitude > 0.0001f)
+ {
+ float s = Vector3.Dot(crossVec3and2, crossVec1and2) / crossVec1and2.sqrMagnitude;
+ intersection = linePoint1 + (lineVec1 * s);
+ return true;
+ }
+ else
+ {
+ intersection = Vector3.zero;
+ return false;
+ }
+ }
+
+ //Two non-parallel lines which may or may not touch each other have a point on each line which are closest
+ //to each other. This function finds those two points. If the lines are not parallel, the function
+ //outputs true, otherwise false.
+ public static bool ClosestPointsOnTwoLines(out Vector3 closestPointLine1, out Vector3 closestPointLine2, Vector3 linePoint1, Vector3 lineVec1, Vector3 linePoint2, Vector3 lineVec2){
+
+ closestPointLine1 = Vector3.zero;
+ closestPointLine2 = Vector3.zero;
+
+ float a = Vector3.Dot(lineVec1, lineVec1);
+ float b = Vector3.Dot(lineVec1, lineVec2);
+ float e = Vector3.Dot(lineVec2, lineVec2);
+
+ float d = a*e - b*b;
+
+ //lines are not parallel
+ if(d != 0.0f){
+
+ Vector3 r = linePoint1 - linePoint2;
+ float c = Vector3.Dot(lineVec1, r);
+ float f = Vector3.Dot(lineVec2, r);
+
+ float s = (b*f - c*e) / d;
+ float t = (a*f - c*b) / d;
+
+ closestPointLine1 = linePoint1 + lineVec1 * s;
+ closestPointLine2 = linePoint2 + lineVec2 * t;
+
+ return true;
+ }
+
+ else{
+ return false;
+ }
+ }
+
+ //This function returns a point which is a projection from a point to a line.
+ //The line is regarded infinite. If the line is finite, use ProjectPointOnLineSegment() instead.
+ public static Vector3 ProjectPointOnLine(Vector3 linePoint, Vector3 lineVec, Vector3 point){
+
+ //get vector from point on line to point in space
+ Vector3 linePointToPoint = point - linePoint;
+
+ float t = Vector3.Dot(linePointToPoint, lineVec);
+
+ return linePoint + lineVec * t;
+ }
+
+ //This function returns a point which is a projection from a point to a line segment.
+ //If the projected point lies outside of the line segment, the projected point will
+ //be clamped to the appropriate line edge.
+ //If the line is infinite instead of a segment, use ProjectPointOnLine() instead.
+ public static Vector3 ProjectPointOnLineSegment(Vector3 linePoint1, Vector3 linePoint2, Vector3 point){
+
+ Vector3 vector = linePoint2 - linePoint1;
+
+ Vector3 projectedPoint = ProjectPointOnLine(linePoint1, vector.normalized, point);
+
+ int side = PointOnWhichSideOfLineSegment(linePoint1, linePoint2, projectedPoint);
+
+ //The projected point is on the line segment
+ if(side == 0){
+
+ return projectedPoint;
+ }
+
+ if(side == 1){
+
+ return linePoint1;
+ }
+
+ if(side == 2){
+
+ return linePoint2;
+ }
+
+ //output is invalid
+ return Vector3.zero;
+ }
+
+ //This function returns a point which is a projection from a point to a plane.
+ public static Vector3 ProjectPointOnPlane(Vector3 planeNormal, Vector3 planePoint, Vector3 point){
+
+ float distance;
+ Vector3 translationVector;
+
+ //First calculate the distance from the point to the plane:
+ distance = SignedDistancePlanePoint(planeNormal, planePoint, point);
+
+ //Reverse the sign of the distance
+ distance *= -1;
+
+ //Get a translation vector
+ translationVector = SetVectorLength(planeNormal, distance);
+
+ //Translate the point to form a projection
+ return point + translationVector;
+ }
+
+ //Projects a vector onto a plane. The output is not normalized.
+ public static Vector3 ProjectVectorOnPlane(Vector3 planeNormal, Vector3 vector){
+
+ return vector - (Vector3.Dot(vector, planeNormal) * planeNormal);
+ }
+
+ //Get the shortest distance between a point and a plane. The output is signed so it holds information
+ //as to which side of the plane normal the point is.
+ public static float SignedDistancePlanePoint(Vector3 planeNormal, Vector3 planePoint, Vector3 point){
+
+ return Vector3.Dot(planeNormal, (point - planePoint));
+ }
+
+ //This function calculates a signed (+ or - sign instead of being ambiguous) dot product. It is basically used
+ //to figure out whether a vector is positioned to the left or right of another vector. The way this is done is
+ //by calculating a vector perpendicular to one of the vectors and using that as a reference. This is because
+ //the result of a dot product only has signed information when an angle is transitioning between more or less
+ //than 90 degrees.
+ public static float SignedDotProduct(Vector3 vectorA, Vector3 vectorB, Vector3 normal){
+
+ Vector3 perpVector;
+ float dot;
+
+ //Use the geometry object normal and one of the input vectors to calculate the perpendicular vector
+ perpVector = Vector3.Cross(normal, vectorA);
+
+ //Now calculate the dot product between the perpendicular vector (perpVector) and the other input vector
+ dot = Vector3.Dot(perpVector, vectorB);
+
+ return dot;
+ }
+
+ public static float SignedVectorAngle(Vector3 referenceVector, Vector3 otherVector, Vector3 normal)
+ {
+ Vector3 perpVector;
+ float angle;
+
+ //Use the geometry object normal and one of the input vectors to calculate the perpendicular vector
+ perpVector = Vector3.Cross(normal, referenceVector);
+
+ //Now calculate the dot product between the perpendicular vector (perpVector) and the other input vector
+ angle = Vector3.Angle(referenceVector, otherVector);
+ angle *= Mathf.Sign(Vector3.Dot(perpVector, otherVector));
+
+ return angle;
+ }
+
+ //Calculate the angle between a vector and a plane. The plane is made by a normal vector.
+ //Output is in radians.
+ public static float AngleVectorPlane(Vector3 vector, Vector3 normal){
+
+ float dot;
+ float angle;
+
+ //calculate the the dot product between the two input vectors. This gives the cosine between the two vectors
+ dot = Vector3.Dot(vector, normal);
+
+ //this is in radians
+ angle = (float)Math.Acos(dot);
+
+ return 1.570796326794897f - angle; //90 degrees - angle
+ }
+
+ //Calculate the dot product as an angle
+ public static float DotProductAngle(Vector3 vec1, Vector3 vec2){
+
+ double dot;
+ double angle;
+
+ //get the dot product
+ dot = Vector3.Dot(vec1, vec2);
+
+ //Clamp to prevent NaN error. Shouldn't need this in the first place, but there could be a rounding error issue.
+ if(dot < -1.0f){
+ dot = -1.0f;
+ }
+ if(dot > 1.0f){
+ dot =1.0f;
+ }
+
+ //Calculate the angle. The output is in radians
+ //This step can be skipped for optimization...
+ angle = Math.Acos(dot);
+
+ return (float)angle;
+ }
+
+ //Convert a plane defined by 3 points to a plane defined by a vector and a point.
+ //The plane point is the middle of the triangle defined by the 3 points.
+ public static void PlaneFrom3Points(out Vector3 planeNormal, out Vector3 planePoint, Vector3 pointA, Vector3 pointB, Vector3 pointC){
+
+ planeNormal = Vector3.zero;
+ planePoint = Vector3.zero;
+
+ //Make two vectors from the 3 input points, originating from point A
+ Vector3 AB = pointB - pointA;
+ Vector3 AC = pointC - pointA;
+
+ //Calculate the normal
+ planeNormal = Vector3.Normalize(Vector3.Cross(AB, AC));
+
+ //Get the points in the middle AB and AC
+ Vector3 middleAB = pointA + (AB / 2.0f);
+ Vector3 middleAC = pointA + (AC / 2.0f);
+
+ //Get vectors from the middle of AB and AC to the point which is not on that line.
+ Vector3 middleABtoC = pointC - middleAB;
+ Vector3 middleACtoB = pointB - middleAC;
+
+ //Calculate the intersection between the two lines. This will be the center
+ //of the triangle defined by the 3 points.
+ //We could use LineLineIntersection instead of ClosestPointsOnTwoLines but due to rounding errors
+ //this sometimes doesn't work.
+ Vector3 temp;
+ ClosestPointsOnTwoLines(out planePoint, out temp, middleAB, middleABtoC, middleAC, middleACtoB);
+ }
+
+ //Returns the forward vector of a quaternion
+ public static Vector3 GetForwardVector(Quaternion q){
+
+ return q * Vector3.forward;
+ }
+
+ //Returns the up vector of a quaternion
+ public static Vector3 GetUpVector(Quaternion q){
+
+ return q * Vector3.up;
+ }
+
+ //Returns the right vector of a quaternion
+ public static Vector3 GetRightVector(Quaternion q){
+
+ return q * Vector3.right;
+ }
+
+ //Gets a quaternion from a matrix
+ public static Quaternion QuaternionFromMatrix(Matrix4x4 m){
+
+ return Quaternion.LookRotation(m.GetColumn(2), m.GetColumn(1));
+ }
+
+ //Gets a position from a matrix
+ public static Vector3 PositionFromMatrix(Matrix4x4 m){
+
+ Vector4 vector4Position = m.GetColumn(3);
+ return new Vector3(vector4Position.x, vector4Position.y, vector4Position.z);
+ }
+
+ //This is an alternative for Quaternion.LookRotation. Instead of aligning the forward and up vector of the game
+ //object with the input vectors, a custom direction can be used instead of the fixed forward and up vectors.
+ //alignWithVector and alignWithNormal are in world space.
+ //customForward and customUp are in object space.
+ //Usage: use alignWithVector and alignWithNormal as if you are using the default LookRotation function.
+ //Set customForward and customUp to the vectors you wish to use instead of the default forward and up vectors.
+ public static void LookRotationExtended(ref GameObject gameObjectInOut, Vector3 alignWithVector, Vector3 alignWithNormal, Vector3 customForward, Vector3 customUp){
+
+ //Set the rotation of the destination
+ Quaternion rotationA = Quaternion.LookRotation(alignWithVector, alignWithNormal);
+
+ //Set the rotation of the custom normal and up vectors.
+ //When using the default LookRotation function, this would be hard coded to the forward and up vector.
+ Quaternion rotationB = Quaternion.LookRotation(customForward, customUp);
+
+ //Calculate the rotation
+ gameObjectInOut.transform.rotation = rotationA * Quaternion.Inverse(rotationB);
+ }
+
+ //This function transforms one object as if it was parented to the other.
+ //Before using this function, the Init() function must be called
+ //Input: parentRotation and parentPosition: the current parent transform.
+ //Input: startParentRotation and startParentPosition: the transform of the parent object at the time the objects are parented.
+ //Input: startChildRotation and startChildPosition: the transform of the child object at the time the objects are parented.
+ //Output: childRotation and childPosition.
+ //All transforms are in world space.
+ public static void TransformWithParent(out Quaternion childRotation, out Vector3 childPosition, Quaternion parentRotation, Vector3 parentPosition, Quaternion startParentRotation, Vector3 startParentPosition, Quaternion startChildRotation, Vector3 startChildPosition){
+
+ childRotation = Quaternion.identity;
+ childPosition = Vector3.zero;
+
+ //set the parent start transform
+ tempParent.rotation = startParentRotation;
+ tempParent.position = startParentPosition;
+ tempParent.localScale = Vector3.one; //to prevent scale wandering
+
+ //set the child start transform
+ tempChild.rotation = startChildRotation;
+ tempChild.position = startChildPosition;
+ tempChild.localScale = Vector3.one; //to prevent scale wandering
+
+ //translate and rotate the child by moving the parent
+ tempParent.rotation = parentRotation;
+ tempParent.position = parentPosition;
+
+ //get the child transform
+ childRotation = tempChild.rotation;
+ childPosition = tempChild.position;
+ }
+
+ //With this function you can align a triangle of an object with any transform.
+ //Usage: gameObjectInOut is the game object you want to transform.
+ //alignWithVector, alignWithNormal, and alignWithPosition is the transform with which the triangle of the object should be aligned with.
+ //triangleForward, triangleNormal, and trianglePosition is the transform of the triangle from the object.
+ //alignWithVector, alignWithNormal, and alignWithPosition are in world space.
+ //triangleForward, triangleNormal, and trianglePosition are in object space.
+ //trianglePosition is the mesh position of the triangle. The effect of the scale of the object is handled automatically.
+ //trianglePosition can be set at any position, it does not have to be at a vertex or in the middle of the triangle.
+ public static void PreciseAlign(ref GameObject gameObjectInOut, Vector3 alignWithVector, Vector3 alignWithNormal, Vector3 alignWithPosition, Vector3 triangleForward, Vector3 triangleNormal, Vector3 trianglePosition){
+
+ //Set the rotation.
+ LookRotationExtended(ref gameObjectInOut, alignWithVector, alignWithNormal, triangleForward, triangleNormal);
+
+ //Get the world space position of trianglePosition
+ Vector3 trianglePositionWorld = gameObjectInOut.transform.TransformPoint(trianglePosition);
+
+ //Get a vector from trianglePosition to alignWithPosition
+ Vector3 translateVector = alignWithPosition - trianglePositionWorld;
+
+ //Now transform the object so the triangle lines up correctly.
+ gameObjectInOut.transform.Translate(translateVector, Space.World);
+ }
+
+
+ //Convert a position, direction, and normal vector to a transform
+ public static void VectorsToTransform(ref GameObject gameObjectInOut, Vector3 positionVector, Vector3 directionVector, Vector3 normalVector){
+
+ gameObjectInOut.transform.position = positionVector;
+ gameObjectInOut.transform.rotation = Quaternion.LookRotation(directionVector, normalVector);
+ }
+
+ //This function finds out on which side of a line segment the point is located.
+ //The point is assumed to be on a line created by linePoint1 and linePoint2. If the point is not on
+ //the line segment, project it on the line using ProjectPointOnLine() first.
+ //Returns 0 if point is on the line segment.
+ //Returns 1 if point is outside of the line segment and located on the side of linePoint1.
+ //Returns 2 if point is outside of the line segment and located on the side of linePoint2.
+ public static int PointOnWhichSideOfLineSegment(Vector3 linePoint1, Vector3 linePoint2, Vector3 point){
+
+ Vector3 lineVec = linePoint2 - linePoint1;
+ Vector3 pointVec = point - linePoint1;
+
+ float dot = Vector3.Dot(pointVec, lineVec);
+
+ //point is on side of linePoint2, compared to linePoint1
+ if(dot > 0){
+
+ //point is on the line segment
+ if(pointVec.magnitude <= lineVec.magnitude){
+
+ return 0;
+ }
+
+ //point is not on the line segment and it is on the side of linePoint2
+ else{
+
+ return 2;
+ }
+ }
+
+ //Point is not on side of linePoint2, compared to linePoint1.
+ //Point is not on the line segment and it is on the side of linePoint1.
+ else{
+
+ return 1;
+ }
+ }
+
+
+ //Returns the pixel distance from the mouse pointer to a line.
+ //Alternative for HandleUtility.DistanceToLine(). Works both in Editor mode and Play mode.
+ //Do not call this function from OnGUI() as the mouse position will be wrong.
+ public static float MouseDistanceToLine(Vector3 linePoint1, Vector3 linePoint2){
+
+ Camera currentCamera;
+ Vector3 mousePosition;
+
+#if UNITY_EDITOR
+ if(Camera.current != null){
+
+ currentCamera = Camera.current;
+ }
+
+ else{
+
+ currentCamera = Camera.main;
+ }
+
+ //convert format because y is flipped
+ mousePosition = new Vector3(Event.current.mousePosition.x, currentCamera.pixelHeight - Event.current.mousePosition.y, 0f);
+
+#else
+ currentCamera = Camera.main;
+ mousePosition = Input.mousePosition;
+#endif
+
+ Vector3 screenPos1 = currentCamera.WorldToScreenPoint(linePoint1);
+ Vector3 screenPos2 = currentCamera.WorldToScreenPoint(linePoint2);
+ Vector3 projectedPoint = ProjectPointOnLineSegment(screenPos1, screenPos2, mousePosition);
+
+ //set z to zero
+ projectedPoint = new Vector3(projectedPoint.x, projectedPoint.y, 0f);
+
+ Vector3 vector = projectedPoint - mousePosition;
+ return vector.magnitude;
+ }
+
+
+ //Returns the pixel distance from the mouse pointer to a camera facing circle.
+ //Alternative for HandleUtility.DistanceToCircle(). Works both in Editor mode and Play mode.
+ //Do not call this function from OnGUI() as the mouse position will be wrong.
+ //If you want the distance to a point instead of a circle, set the radius to 0.
+ public static float MouseDistanceToCircle(Vector3 point, float radius){
+
+ Camera currentCamera;
+ Vector3 mousePosition;
+
+#if UNITY_EDITOR
+ if(Camera.current != null){
+
+ currentCamera = Camera.current;
+ }
+
+ else{
+
+ currentCamera = Camera.main;
+ }
+
+ //convert format because y is flipped
+ mousePosition = new Vector3(Event.current.mousePosition.x, currentCamera.pixelHeight - Event.current.mousePosition.y, 0f);
+#else
+ currentCamera = Camera.main;
+ mousePosition = Input.mousePosition;
+#endif
+
+ Vector3 screenPos = currentCamera.WorldToScreenPoint(point);
+
+ //set z to zero
+ screenPos = new Vector3(screenPos.x, screenPos.y, 0f);
+
+ Vector3 vector = screenPos - mousePosition;
+ float fullDistance = vector.magnitude;
+ float circleDistance = fullDistance - radius;
+
+ return circleDistance;
+ }
+
+ //Returns true if a line segment (made up of linePoint1 and linePoint2) is fully or partially in a rectangle
+ //made up of RectA to RectD. The line segment is assumed to be on the same plane as the rectangle. If the line is
+ //not on the plane, use ProjectPointOnPlane() on linePoint1 and linePoint2 first.
+ public static bool IsLineInRectangle(Vector3 linePoint1, Vector3 linePoint2, Vector3 rectA, Vector3 rectB, Vector3 rectC, Vector3 rectD){
+
+ bool pointAInside = false;
+ bool pointBInside = false;
+
+ pointAInside = IsPointInRectangle(linePoint1, rectA, rectC, rectB, rectD);
+
+ if(!pointAInside){
+
+ pointBInside = IsPointInRectangle(linePoint2, rectA, rectC, rectB, rectD);
+ }
+
+ //none of the points are inside, so check if a line is crossing
+ if(!pointAInside && !pointBInside){
+
+ bool lineACrossing = AreLineSegmentsCrossing(linePoint1, linePoint2, rectA, rectB);
+ bool lineBCrossing = AreLineSegmentsCrossing(linePoint1, linePoint2, rectB, rectC);
+ bool lineCCrossing = AreLineSegmentsCrossing(linePoint1, linePoint2, rectC, rectD);
+ bool lineDCrossing = AreLineSegmentsCrossing(linePoint1, linePoint2, rectD, rectA);
+
+ if(lineACrossing || lineBCrossing || lineCCrossing || lineDCrossing){
+
+ return true;
+ }
+
+ else{
+
+ return false;
+ }
+ }
+
+ else{
+
+ return true;
+ }
+ }
+
+ //Returns true if "point" is in a rectangle mad up of RectA to RectD. The line point is assumed to be on the same
+ //plane as the rectangle. If the point is not on the plane, use ProjectPointOnPlane() first.
+ public static bool IsPointInRectangle(Vector3 point, Vector3 rectA, Vector3 rectC, Vector3 rectB, Vector3 rectD){
+
+ Vector3 vector;
+ Vector3 linePoint;
+
+ //get the center of the rectangle
+ vector = rectC - rectA;
+ float size = -(vector.magnitude / 2f);
+ vector = AddVectorLength(vector, size);
+ Vector3 middle = rectA + vector;
+
+ Vector3 xVector = rectB - rectA;
+ float width = xVector.magnitude / 2f;
+
+ Vector3 yVector = rectD - rectA;
+ float height = yVector.magnitude / 2f;
+
+ linePoint = ProjectPointOnLine(middle, xVector.normalized, point);
+ vector = linePoint - point;
+ float yDistance = vector.magnitude;
+
+ linePoint = ProjectPointOnLine(middle, yVector.normalized, point);
+ vector = linePoint - point;
+ float xDistance = vector.magnitude;
+
+ if((xDistance <= width) && (yDistance <= height)){
+
+ return true;
+ }
+
+ else{
+
+ return false;
+ }
+ }
+
+ //Returns true if line segment made up of pointA1 and pointA2 is crossing line segment made up of
+ //pointB1 and pointB2. The two lines are assumed to be in the same plane.
+ public static bool AreLineSegmentsCrossing(Vector3 pointA1, Vector3 pointA2, Vector3 pointB1, Vector3 pointB2){
+
+ Vector3 closestPointA;
+ Vector3 closestPointB;
+ int sideA;
+ int sideB;
+
+ Vector3 lineVecA = pointA2 - pointA1;
+ Vector3 lineVecB = pointB2 - pointB1;
+
+ bool valid = ClosestPointsOnTwoLines(out closestPointA, out closestPointB, pointA1, lineVecA.normalized, pointB1, lineVecB.normalized);
+
+ //lines are not parallel
+ if(valid){
+
+ sideA = PointOnWhichSideOfLineSegment(pointA1, pointA2, closestPointA);
+ sideB = PointOnWhichSideOfLineSegment(pointB1, pointB2, closestPointB);
+
+ if((sideA == 0) && (sideB == 0)){
+
+ return true;
+ }
+
+ else{
+
+ return false;
+ }
+ }
+
+ //lines are parallel
+ else{
+
+ return false;
+ }
+ }
+
+ //This function calculates the acceleration vector in meter/second^2.
+ //Input: position. If the output is used for motion simulation, the input transform
+ //has to be located at the seat base, not at the vehicle CG. Attach an empty GameObject
+ //at the correct location and use that as the input for this function.
+ //Gravity is not taken into account but this can be added to the output if needed.
+ //A low number of samples can give a jittery result due to rounding errors.
+ //If more samples are used, the output is more smooth but has a higher latency.
+ public static bool LinearAcceleration(out Vector3 vector, Vector3 position, int samples){
+
+ Vector3 averageSpeedChange = Vector3.zero;
+ vector = Vector3.zero;
+ Vector3 deltaDistance;
+ float deltaTime;
+ Vector3 speedA;
+ Vector3 speedB;
+
+ //Clamp sample amount. In order to calculate acceleration we need at least 2 changes
+ //in speed, so we need at least 3 position samples.
+ if(samples < 3){
+
+ samples = 3;
+ }
+
+ //Initialize
+ if(positionRegister == null){
+
+ positionRegister = new Vector3[samples];
+ posTimeRegister = new float[samples];
+ }
+
+ //Fill the position and time sample array and shift the location in the array to the left
+ //each time a new sample is taken. This way index 0 will always hold the oldest sample and the
+ //highest index will always hold the newest sample.
+ for(int i = 0; i < positionRegister.Length - 1; i++){
+
+ positionRegister[i] = positionRegister[i+1];
+ posTimeRegister[i] = posTimeRegister[i+1];
+ }
+ positionRegister[positionRegister.Length - 1] = position;
+ posTimeRegister[posTimeRegister.Length - 1] = Time.time;
+
+ positionSamplesTaken++;
+
+ //The output acceleration can only be calculated if enough samples are taken.
+ if(positionSamplesTaken >= samples){
+
+ //Calculate average speed change.
+ for(int i = 0; i < positionRegister.Length - 2; i++){
+
+ deltaDistance = positionRegister[i+1] - positionRegister[i];
+ deltaTime = posTimeRegister[i+1] - posTimeRegister[i];
+
+ //If deltaTime is 0, the output is invalid.
+ if(deltaTime == 0){
+
+ return false;
+ }
+
+ speedA = deltaDistance / deltaTime;
+ deltaDistance = positionRegister[i+2] - positionRegister[i+1];
+ deltaTime = posTimeRegister[i+2] - posTimeRegister[i+1];
+
+ if(deltaTime == 0){
+
+ return false;
+ }
+
+ speedB = deltaDistance / deltaTime;
+
+ //This is the accumulated speed change at this stage, not the average yet.
+ averageSpeedChange += speedB - speedA;
+ }
+
+ //Now this is the average speed change.
+ averageSpeedChange /= positionRegister.Length - 2;
+
+ //Get the total time difference.
+ float deltaTimeTotal = posTimeRegister[posTimeRegister.Length - 1] - posTimeRegister[0];
+
+ //Now calculate the acceleration, which is an average over the amount of samples taken.
+ vector = averageSpeedChange / deltaTimeTotal;
+
+ return true;
+ }
+
+ else{
+
+ return false;
+ }
+ }
+
+
+ /*
+ //This function calculates angular acceleration in object space as deg/second^2, encoded as a vector.
+ //For example, if the output vector is 0,0,-5, the angular acceleration is 5 deg/second^2 around the object Z axis, to the left.
+ //Input: rotation (quaternion). If the output is used for motion simulation, the input transform
+ //has to be located at the seat base, not at the vehicle CG. Attach an empty GameObject
+ //at the correct location and use that as the input for this function.
+ //A low number of samples can give a jittery result due to rounding errors.
+ //If more samples are used, the output is more smooth but has a higher latency.
+ //Note: the result is only accurate if the rotational difference between two samples is less than 180 degrees.
+ //Note: a suitable way to visualize the result is:
+ Vector3 dir;
+ float scale = 2f;
+ dir = new Vector3(vector.x, 0, 0);
+ dir = Math3d.SetVectorLength(dir, dir.magnitude * scale);
+ dir = gameObject.transform.TransformDirection(dir);
+ Debug.DrawRay(gameObject.transform.position, dir, Color.red);
+ dir = new Vector3(0, vector.y, 0);
+ dir = Math3d.SetVectorLength(dir, dir.magnitude * scale);
+ dir = gameObject.transform.TransformDirection(dir);
+ Debug.DrawRay(gameObject.transform.position, dir, Color.green);
+ dir = new Vector3(0, 0, vector.z);
+ dir = Math3d.SetVectorLength(dir, dir.magnitude * scale);
+ dir = gameObject.transform.TransformDirection(dir);
+ Debug.DrawRay(gameObject.transform.position, dir, Color.blue); */
+ public static bool AngularAcceleration(out Vector3 vector, Quaternion rotation, int samples){
+
+ Vector3 averageSpeedChange = Vector3.zero;
+ vector = Vector3.zero;
+ Quaternion deltaRotation;
+ float deltaTime;
+ Vector3 speedA;
+ Vector3 speedB;
+
+ //Clamp sample amount. In order to calculate acceleration we need at least 2 changes
+ //in speed, so we need at least 3 rotation samples.
+ if(samples < 3){
+
+ samples = 3;
+ }
+
+ //Initialize
+ if(rotationRegister == null){
+
+ rotationRegister = new Quaternion[samples];
+ rotTimeRegister = new float[samples];
+ }
+
+ //Fill the rotation and time sample array and shift the location in the array to the left
+ //each time a new sample is taken. This way index 0 will always hold the oldest sample and the
+ //highest index will always hold the newest sample.
+ for(int i = 0; i < rotationRegister.Length - 1; i++){
+
+ rotationRegister[i] = rotationRegister[i+1];
+ rotTimeRegister[i] = rotTimeRegister[i+1];
+ }
+ rotationRegister[rotationRegister.Length - 1] = rotation;
+ rotTimeRegister[rotTimeRegister.Length - 1] = Time.time;
+
+ rotationSamplesTaken++;
+
+ //The output acceleration can only be calculated if enough samples are taken.
+ if(rotationSamplesTaken >= samples){
+
+ //Calculate average speed change.
+ for(int i = 0; i < rotationRegister.Length - 2; i++){
+
+ deltaRotation = SubtractRotation(rotationRegister[i+1], rotationRegister[i]);
+ deltaTime = rotTimeRegister[i+1] - rotTimeRegister[i];
+
+ //If deltaTime is 0, the output is invalid.
+ if(deltaTime == 0){
+
+ return false;
+ }
+
+ speedA = RotDiffToSpeedVec(deltaRotation, deltaTime);
+ deltaRotation = SubtractRotation(rotationRegister[i+2], rotationRegister[i+1]);
+ deltaTime = rotTimeRegister[i+2] - rotTimeRegister[i+1];
+
+ if(deltaTime == 0){
+
+ return false;
+ }
+
+ speedB = RotDiffToSpeedVec(deltaRotation, deltaTime);
+
+ //This is the accumulated speed change at this stage, not the average yet.
+ averageSpeedChange += speedB - speedA;
+ }
+
+ //Now this is the average speed change.
+ averageSpeedChange /= rotationRegister.Length - 2;
+
+ //Get the total time difference.
+ float deltaTimeTotal = rotTimeRegister[rotTimeRegister.Length - 1] - rotTimeRegister[0];
+
+ //Now calculate the acceleration, which is an average over the amount of samples taken.
+ vector = averageSpeedChange / deltaTimeTotal;
+
+ return true;
+ }
+
+ else{
+
+ return false;
+ }
+ }
+
+ //Get y from a linear function, with x as an input. The linear function goes through points
+ //0,0 on the left ,and Qxy on the right.
+ public static float LinearFunction2DBasic(float x, float Qx, float Qy){
+
+ float y = x * (Qy / Qx);
+
+ return y;
+ }
+
+ //Get y from a linear function, with x as an input. The linear function goes through points
+ //Pxy on the left ,and Qxy on the right.
+ public static float LinearFunction2DFull(float x, float Px, float Py, float Qx, float Qy){
+
+ float y = 0f;
+
+ float A = Qy -Py;
+ float B = Qx - Px;
+ float C = A / B;
+
+ y = Py + (C * (x - Px));
+
+ return y;
+ }
+
+ //Convert a rotation difference to a speed vector.
+ //For internal use only.
+ private static Vector3 RotDiffToSpeedVec(Quaternion rotation, float deltaTime){
+
+ float x;
+ float y;
+ float z;
+
+ if(rotation.eulerAngles.x <= 180.0f){
+
+ x = rotation.eulerAngles.x;
+ }
+
+ else{
+
+ x = rotation.eulerAngles.x - 360.0f;
+ }
+
+ if(rotation.eulerAngles.y <= 180.0f){
+
+ y = rotation.eulerAngles.y;
+ }
+
+ else{
+
+ y = rotation.eulerAngles.y - 360.0f;
+ }
+
+ if(rotation.eulerAngles.z <= 180.0f){
+
+ z = rotation.eulerAngles.z;
+ }
+
+ else{
+
+ z = rotation.eulerAngles.z - 360.0f;
+ }
+
+ return new Vector3(x / deltaTime, y /deltaTime, z / deltaTime);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Frolov/Math3d.cs.meta b/Assets/Frolov/Math3d.cs.meta
new file mode 100644
index 00000000..af9aa1c6
--- /dev/null
+++ b/Assets/Frolov/Math3d.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 19401b54e4a0b4c99b21b0e2e6d2226a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Frolov/Scripts/Input/EyesInput.cs b/Assets/Frolov/Scripts/Input/EyesInput.cs
index 5b5169a5..13d9cb25 100644
--- a/Assets/Frolov/Scripts/Input/EyesInput.cs
+++ b/Assets/Frolov/Scripts/Input/EyesInput.cs
@@ -5,15 +5,81 @@
public class EyesInput : BaseInput
{
- protected Vector2 _mousePosition;
+ private static EyesInput instance = null;
+ public static EyesInput Instance => instance;
- public override bool mousePresent
+ [SerializeField] private Transform leftEye;
+ [SerializeField] private Transform rightEye;
+
+ [Space]
+ [SerializeField] private int queueMaxSize = 8;
+ [SerializeField] private float additionalXCoefficient = 1f;
+ [SerializeField] private float additionalYCoefficient = 1f;
+
+ private Vector2 _rawMousePosition;
+ private Vector2 _mousePosition;
+
+ private Queue queue = new Queue();
+
+ private Vector2 iPhoneXPointSize = new Vector2(375, 812) * 3;
+ private Vector2 iPhoneXMeterSize = new Vector2(0.0623908297f, 0.135096943231532f);
+
+ private Transform mainCamera;
+
+ public override bool mousePresent => true;
+
+ public override Vector2 mousePosition => mousePresent ? _mousePosition : Vector2.zero;
+ public Vector2 rawMousePosition => mousePresent ? _rawMousePosition : Vector2.zero;
+
+ private void Awake()
+ {
+ mainCamera = Camera.main.transform;
+
+ if (!instance)
+ instance = this;
+ }
+
+ private void Update()
+ {
+ Vector3 li, ri;
+
+ if (Math3d.LinePlaneIntersection(out li, leftEye.position, leftEye.forward, mainCamera.forward, Vector3.zero) &&
+ Math3d.LinePlaneIntersection(out ri, rightEye.position, rightEye.forward, mainCamera.forward, Vector3.zero))
+ {
+ Debug.Log($"found intersection");
+
+ Vector3 mi = mainCamera.InverseTransformPoint(li);
+ mi.x = mi.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x / 2.0f) * additionalXCoefficient + iPhoneXPointSize.x / 2.0f;
+ mi.y = mi.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y / 2.0f) * additionalYCoefficient + iPhoneXPointSize.y / 2.0f;
+
+ _rawMousePosition = mi;
+
+ if (queue.Count < queueMaxSize)
+ {
+ queue.Enqueue(mi);
+ }
+ else
+ {
+ Vector3 res = mi;
+ foreach (Vector3 vec in queue)
+ {
+ res += vec;
+ }
+ res /= queue.Count + 1;
+ queue.Dequeue();
+ queue.Enqueue(res);
+ _mousePosition = res;
+ }
+ }
+ }
+
+ public void SetX(float value)
{
- get { return true; }
+ additionalXCoefficient = value;
}
- public override Vector2 mousePosition
+ public void SetY(float value)
{
- get { return mousePresent ? _mousePosition : Vector2.zero; }
+ additionalYCoefficient = value;
}
}
diff --git a/Assets/Frolov/Scripts/Input/EyesInputModule.cs b/Assets/Frolov/Scripts/Input/EyesInputModule.cs
index 02761be2..ac406aa1 100644
--- a/Assets/Frolov/Scripts/Input/EyesInputModule.cs
+++ b/Assets/Frolov/Scripts/Input/EyesInputModule.cs
@@ -1,13 +1,15 @@
using System.Collections;
using System.Collections.Generic;
+using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.EventSystems;
+[RequireComponent(typeof(EyesInput))]
public class EyesInputModule : StandaloneInputModule
{
protected override void Awake()
{
- inputOverride = GameObject.Find("Controller").GetComponent();
+ inputOverride = GetComponent();
base.Awake();
}
diff --git a/Assets/Frolov/Scripts/PointerVisualizer.cs b/Assets/Frolov/Scripts/PointerVisualizer.cs
new file mode 100644
index 00000000..b54ac4d6
--- /dev/null
+++ b/Assets/Frolov/Scripts/PointerVisualizer.cs
@@ -0,0 +1,17 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PointerVisualizer : MonoBehaviour
+{
+ [SerializeField] private Transform pointer;
+ [SerializeField] private Transform averagedPointer;
+
+ private void LateUpdate()
+ {
+ averagedPointer.position = EyesInput.Instance.mousePosition;
+ pointer.position = EyesInput.Instance.rawMousePosition;
+
+ Debug.Log($"av: {averagedPointer.position} ptr: {pointer.position}");
+ }
+}
diff --git a/Assets/Frolov/Scripts/PointerVisualizer.cs.meta b/Assets/Frolov/Scripts/PointerVisualizer.cs.meta
new file mode 100644
index 00000000..a9263fdb
--- /dev/null
+++ b/Assets/Frolov/Scripts/PointerVisualizer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2bd5eb4fd354c41ebb25546bcc2288a4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Frolov/Scripts/PositionInfo.cs b/Assets/Frolov/Scripts/PositionInfo.cs
index cc29c75b..353fc293 100644
--- a/Assets/Frolov/Scripts/PositionInfo.cs
+++ b/Assets/Frolov/Scripts/PositionInfo.cs
@@ -1,122 +1,122 @@
-using System.Collections;
-using System.Collections.Generic;
-using System.Numerics;
-using UnityEngine;
-using UnityEngine.UI;
-using Vector2 = UnityEngine.Vector2;
-using Vector3 = UnityEngine.Vector3;
-
-public class PositionInfo : MonoBehaviour
-{
-// public Text leftEyeLabel;
-// public Text rightEyeLabel;
- public Text eyesLabel;
-
- public Transform mainCamera;
-
-// public Text allLabel;
+//using System.Collections;
+//using System.Collections.Generic;
+//using System.Numerics;
+//using UnityEngine;
+//using UnityEngine.UI;
+//using Vector2 = UnityEngine.Vector2;
+//using Vector3 = UnityEngine.Vector3;
//
-// public Transform parent;
-// public Transform camera;
-// public Transform ARcamera;
-
- public Transform pointer;
- public Transform curPointer;
-
- [SerializeField]
- private Transform leftEye;
- [SerializeField]
- private Transform rightEye;
-
- private Queue queue = new Queue();
-
- private Vector2 iPhoneXPointSize = new Vector2(375, 812) * 3;
- private Vector2 iPhoneXMeterSize = new Vector2(0.0623908297f, 0.135096943231532f);
-
- public static Vector3 SetVectorLength(Vector3 vector, float size){
-
- //normalize the vector
- Vector3 vectorNormalized = Vector3.Normalize(vector);
-
- //scale the vector
- return vectorNormalized *= size;
- }
-
- public static bool LinePlaneIntersection(out Vector3 intersection, Vector3 linePoint, Vector3 lineVec, Vector3 planeNormal, Vector3 planePoint){
-
- float length;
- float dotNumerator;
- float dotDenominator;
- Vector3 vector;
- intersection = Vector3.zero;
-
- //calculate the distance between the linePoint and the line-plane intersection point
- dotNumerator = Vector3.Dot((planePoint - linePoint), planeNormal);
- dotDenominator = Vector3.Dot(lineVec, planeNormal);
-
- //line and plane are not parallel
- if(dotDenominator != 0.0f){
- length = dotNumerator / dotDenominator;
-
- //create a vector from the linePoint to the intersection point
- vector = SetVectorLength(lineVec, length);
-
- //get the coordinates of the line-plane intersection point
- intersection = linePoint + vector;
-
- return true;
- }
-
- //output not valid
- else{
- return false;
- }
- }
-// Vector3 ml = Camera.main.transform.InverseTransformPoint((li) / 2.0f);
-// ml.x = ml.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x * 3 / 2.0f) + iPhoneXPointSize.x / 2.0f;
-// ml.y = ml.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y * 3 / 2.0f) + iPhoneXPointSize.y / 2.0f;
+//public class PositionInfo : MonoBehaviour
+//{
+//// public Text leftEyeLabel;
+//// public Text rightEyeLabel;
+// public Text eyesLabel;
+//
+// public Transform mainCamera;
+//
+//// public Text allLabel;
+////
+//// public Transform parent;
+//// public Transform camera;
+//// public Transform ARcamera;
+//
+// public Transform pointer;
+// public Transform curPointer;
+//
+// [SerializeField]
+// private Transform leftEye;
+// [SerializeField]
+// private Transform rightEye;
+//
+// private Queue queue = new Queue();
+//
+// private Vector2 iPhoneXPointSize = new Vector2(375, 812) * 3;
+// private Vector2 iPhoneXMeterSize = new Vector2(0.0623908297f, 0.135096943231532f);
+//
+// public static Vector3 SetVectorLength(Vector3 vector, float size){
+//
+// //normalize the vector
+// Vector3 vectorNormalized = Vector3.Normalize(vector);
+//
+// //scale the vector
+// return vectorNormalized *= size;
+// }
+//
+// public static bool LinePlaneIntersection(out Vector3 intersection, Vector3 linePoint, Vector3 lineVec, Vector3 planeNormal, Vector3 planePoint){
+//
+// float length;
+// float dotNumerator;
+// float dotDenominator;
+// Vector3 vector;
+// intersection = Vector3.zero;
+//
+// //calculate the distance between the linePoint and the line-plane intersection point
+// dotNumerator = Vector3.Dot((planePoint - linePoint), planeNormal);
+// dotDenominator = Vector3.Dot(lineVec, planeNormal);
+//
+// //line and plane are not parallel
+// if(dotDenominator != 0.0f){
+// length = dotNumerator / dotDenominator;
+//
+// //create a vector from the linePoint to the intersection point
+// vector = SetVectorLength(lineVec, length);
+//
+// //get the coordinates of the line-plane intersection point
+// intersection = linePoint + vector;
+//
+// return true;
+// }
+//
+// //output not valid
+// else{
+// return false;
+// }
+// }
+//// Vector3 ml = Camera.main.transform.InverseTransformPoint((li) / 2.0f);
+//// ml.x = ml.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x * 3 / 2.0f) + iPhoneXPointSize.x / 2.0f;
+//// ml.y = ml.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y * 3 / 2.0f) + iPhoneXPointSize.y / 2.0f;
+////
+//// Vector3 mr = Camera.main.transform.InverseTransformPoint((ri) / 2.0f);
+//// mr.x = mr.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x * 3 / 2.0f) + iPhoneXPointSize.x / 2.0f;
+//// mr.y = mr.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y * 3 / 2.0f) + iPhoneXPointSize.y / 2.0f;
+//
+// void ModeEyesTracking(Vector3 mi)
+// {
+// if (queue.Count < 5)
+// {
+// queue.Enqueue(mi);
+// }
+// else
+// {
+// Vector3 res = mi;
+// foreach (Vector3 vec in queue)
+// {
+// res += vec;
+// }
+// res /= queue.Count + 1;
+// queue.Dequeue();
+// queue.Enqueue(res);
+// pointer.position = res;
+// eyesLabel.text = $"{res}";
+// }
+// }
+//
+// void Update()
+// {
+// Vector3 li, ri;
+//
+// if (LinePlaneIntersection(out li, leftEye.position, leftEye.forward, mainCamera.forward, Vector3.zero) &&
+// LinePlaneIntersection(out ri, rightEye.position, rightEye.forward, mainCamera.forward, Vector3.zero))
+// {
+// Vector3 mi = Camera.main.transform.InverseTransformPoint(li);
+// mi.x = mi.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x) + iPhoneXPointSize.x / 2.0f;
+// mi.y = mi.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y) + iPhoneXPointSize.y / 2.0f;
+//
+// curPointer.position = mi;
//
-// Vector3 mr = Camera.main.transform.InverseTransformPoint((ri) / 2.0f);
-// mr.x = mr.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x * 3 / 2.0f) + iPhoneXPointSize.x / 2.0f;
-// mr.y = mr.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y * 3 / 2.0f) + iPhoneXPointSize.y / 2.0f;
-
- void ModeEyesTracking(Vector3 mi)
- {
- if (queue.Count < 5)
- {
- queue.Enqueue(mi);
- }
- else
- {
- Vector3 res = mi;
- foreach (Vector3 vec in queue)
- {
- res += vec;
- }
- res /= queue.Count + 1;
- queue.Dequeue();
- queue.Enqueue(res);
- pointer.position = res;
- eyesLabel.text = $"{res}";
- }
- }
-
- void Update()
- {
- Vector3 li, ri;
-
- if (LinePlaneIntersection(out li, leftEye.position, leftEye.forward, mainCamera.forward, Vector3.zero) &&
- LinePlaneIntersection(out ri, rightEye.position, rightEye.forward, mainCamera.forward, Vector3.zero))
- {
- Vector3 mi = Camera.main.transform.InverseTransformPoint(li);
- mi.x = mi.x / (iPhoneXMeterSize.x / 2.0f) * (iPhoneXPointSize.x) + iPhoneXPointSize.x / 2.0f;
- mi.y = mi.y / (iPhoneXMeterSize.y / 2.0f) * (iPhoneXPointSize.y) + iPhoneXPointSize.y / 2.0f;
-
- curPointer.position = mi;
-
- ModeEyesTracking(mi);
- }
-
-
- }
-}
+// ModeEyesTracking(mi);
+// }
+//
+//
+// }
+//}
diff --git a/Assets/SALEY.meta b/Assets/SALEY.meta
new file mode 100644
index 00000000..c7c00a84
--- /dev/null
+++ b/Assets/SALEY.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2efb791de47354c8e914c40fc27d96da
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/SALEY/SALEY.meta b/Assets/SALEY/SALEY.meta
new file mode 100644
index 00000000..49882d80
--- /dev/null
+++ b/Assets/SALEY/SALEY.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: daf5cb8de0f404fc880655bc0d21f871
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/LastBuild.buildreport b/Library/LastBuild.buildreport
index 957ffd08..0469f25d 100644
Binary files a/Library/LastBuild.buildreport and b/Library/LastBuild.buildreport differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/Assembly-CSharp.dll b/Library/PlayerDataCache/iOS/Data/Managed/Assembly-CSharp.dll
index 66d782c8..40127151 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/Assembly-CSharp.dll and b/Library/PlayerDataCache/iOS/Data/Managed/Assembly-CSharp.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/Unity.Analytics.DataPrivacy.dll b/Library/PlayerDataCache/iOS/Data/Managed/Unity.Analytics.DataPrivacy.dll
index c4e49d2d..9d23e403 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/Unity.Analytics.DataPrivacy.dll and b/Library/PlayerDataCache/iOS/Data/Managed/Unity.Analytics.DataPrivacy.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/Unity.TextMeshPro.dll b/Library/PlayerDataCache/iOS/Data/Managed/Unity.TextMeshPro.dll
index 75eaef67..98179c5a 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/Unity.TextMeshPro.dll and b/Library/PlayerDataCache/iOS/Data/Managed/Unity.TextMeshPro.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/Unity.Timeline.dll b/Library/PlayerDataCache/iOS/Data/Managed/Unity.Timeline.dll
index 38bea6f1..162e07c2 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/Unity.Timeline.dll and b/Library/PlayerDataCache/iOS/Data/Managed/Unity.Timeline.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.SpatialTracking.dll b/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.SpatialTracking.dll
index fa48d975..d44ba178 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.SpatialTracking.dll and b/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.SpatialTracking.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.XR.LegacyInputHelpers.dll b/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.XR.LegacyInputHelpers.dll
index ee805ab8..5ca694ff 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.XR.LegacyInputHelpers.dll and b/Library/PlayerDataCache/iOS/Data/Managed/UnityEngine.XR.LegacyInputHelpers.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/Managed/com.unity.multiplayer-hlapi.Runtime.dll b/Library/PlayerDataCache/iOS/Data/Managed/com.unity.multiplayer-hlapi.Runtime.dll
index 320e1532..c19742e7 100644
Binary files a/Library/PlayerDataCache/iOS/Data/Managed/com.unity.multiplayer-hlapi.Runtime.dll and b/Library/PlayerDataCache/iOS/Data/Managed/com.unity.multiplayer-hlapi.Runtime.dll differ
diff --git a/Library/PlayerDataCache/iOS/Data/globalgamemanagers b/Library/PlayerDataCache/iOS/Data/globalgamemanagers
index b9ca153e..ab7e329a 100644
Binary files a/Library/PlayerDataCache/iOS/Data/globalgamemanagers and b/Library/PlayerDataCache/iOS/Data/globalgamemanagers differ
diff --git a/Library/PlayerDataCache/iOS/Data/globalgamemanagers.assets b/Library/PlayerDataCache/iOS/Data/globalgamemanagers.assets
index 9683162b..294c1bdd 100644
Binary files a/Library/PlayerDataCache/iOS/Data/globalgamemanagers.assets and b/Library/PlayerDataCache/iOS/Data/globalgamemanagers.assets differ
diff --git a/Library/PlayerDataCache/iOS/Data/level0 b/Library/PlayerDataCache/iOS/Data/level0
index e0e13123..717a74d2 100644
Binary files a/Library/PlayerDataCache/iOS/Data/level0 and b/Library/PlayerDataCache/iOS/Data/level0 differ
diff --git a/Library/PlayerDataCache/iOS/Data/resources.assets b/Library/PlayerDataCache/iOS/Data/resources.assets
index 031e64ad..7920de37 100644
Binary files a/Library/PlayerDataCache/iOS/Data/resources.assets and b/Library/PlayerDataCache/iOS/Data/resources.assets differ
diff --git a/Library/PlayerDataCache/iOS/Data/sharedassets0.assets b/Library/PlayerDataCache/iOS/Data/sharedassets0.assets
index 68e60d0f..9a1f6468 100644
Binary files a/Library/PlayerDataCache/iOS/Data/sharedassets0.assets and b/Library/PlayerDataCache/iOS/Data/sharedassets0.assets differ
diff --git a/Library/PlayerDataCache/iOS/ScriptsOnlyCache.yaml b/Library/PlayerDataCache/iOS/ScriptsOnlyCache.yaml
index 34925844..69515693 100644
--- a/Library/PlayerDataCache/iOS/ScriptsOnlyCache.yaml
+++ b/Library/PlayerDataCache/iOS/ScriptsOnlyCache.yaml
@@ -2,6 +2,8 @@ ScriptsOnlyBuild:
usedScripts:
Assembly-CSharp.dll:
- ARCameraTracker
+ - EyesInput
+ - EyesInputModule
- Michsky.UI.ModernUIPack.CustomDropdown
- Michsky.UI.ModernUIPack.CustomInputField
- Michsky.UI.ModernUIPack.DropdownMultiSelect
@@ -18,7 +20,7 @@ ScriptsOnlyBuild:
- Michsky.UI.ModernUIPack.SwitchAnim
- Michsky.UI.ModernUIPack.ToggleAnim
- Michsky.UI.ModernUIPack.UIElementInFront
- - PositionInfo
+ - PointerVisualizer
- TongueDetector
- UnityARCameraNearFar
- UnityARKitPluginSettings
@@ -143,8 +145,6 @@ ScriptsOnlyBuild:
Script: {instanceID: 9520}
- Class: 114
Script: {instanceID: 9522}
- - Class: 114
- Script: {instanceID: 9524}
- Class: 114
Script: {instanceID: 9526}
- Class: 114
@@ -221,8 +221,14 @@ ScriptsOnlyBuild:
Script: {instanceID: 11270}
- Class: 114
Script: {instanceID: 11272}
+ - Class: 114
+ Script: {instanceID: 24048}
+ - Class: 114
+ Script: {instanceID: 24054}
- Class: 114
Script: {instanceID: 24352}
+ - Class: 114
+ Script: {instanceID: 48768}
- Class: 115
Script: {instanceID: 0}
- Class: 124
@@ -1742,22 +1748,40 @@ ScriptsOnlyBuild:
className: EyesInputModule
- hash:
serializedVersion: 2
- Hash: 71bb6a6b6c8f052f948db64c7dd3ca4f
+ Hash: a664ed10e0a2d692c1d9ea2c4b38fda5
assemblyName: Assembly-CSharp.dll
namespaceName:
className: EyesInput
- hash:
serializedVersion: 2
- Hash: 24343ee4f3b1e9c3c97b18dfd83d2abc
+ Hash: 7f6b8236ea991687a591fd24b4503229
assemblyName: Assembly-CSharp.dll
namespaceName:
- className: PositionInfo
+ className: Testtt
- hash:
serializedVersion: 2
- Hash: 7f6b8236ea991687a591fd24b4503229
+ Hash: 70a06c49945c7e8ee40859d599d330a5
assemblyName: Assembly-CSharp.dll
namespaceName:
- className: Testtt
+ className: FadeButton
+ - hash:
+ serializedVersion: 2
+ Hash: 617bfe85196c9c1f5a2cc32666d4a173
+ assemblyName: Assembly-CSharp.dll
+ namespaceName:
+ className: StreamVideo
+ - hash:
+ serializedVersion: 2
+ Hash: b24e21a96e1f534385c905f8ff4d4182
+ assemblyName: Assembly-CSharp.dll
+ namespaceName:
+ className: FadeAllButtons
+ - hash:
+ serializedVersion: 2
+ Hash: 6ab24bf47fb92b6fb2e131a0ae071fab
+ assemblyName: Assembly-CSharp.dll
+ namespaceName:
+ className: PointerVisualizer
platform: 9
scenePathNames:
- Assets/Frolov/EyesTest.unity
diff --git a/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll b/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll
index 0f841b13..8f81deaf 100644
Binary files a/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll and b/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp.dll b/Library/ScriptAssemblies/Assembly-CSharp.dll
index d24a6b39..57c9d478 100644
Binary files a/Library/ScriptAssemblies/Assembly-CSharp.dll and b/Library/ScriptAssemblies/Assembly-CSharp.dll differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp.pdb b/Library/ScriptAssemblies/Assembly-CSharp.pdb
index d3a24d3b..9a526f47 100644
Binary files a/Library/ScriptAssemblies/Assembly-CSharp.pdb and b/Library/ScriptAssemblies/Assembly-CSharp.pdb differ
diff --git a/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll b/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll
index d0323d9a..ac672152 100644
Binary files a/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll and b/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll differ
diff --git a/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll b/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll
index 643350f9..f93d5896 100644
Binary files a/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll and b/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll differ
diff --git a/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll b/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll
index 87ab4278..62a68f8d 100644
Binary files a/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll and b/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll differ
diff --git a/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll b/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll
index e322c930..5ceb7f2c 100644
Binary files a/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll and b/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll differ
diff --git a/Library/ScriptAssemblies/Unity.TextMeshPro.dll b/Library/ScriptAssemblies/Unity.TextMeshPro.dll
index 9c62f1e3..d0d97e31 100644
Binary files a/Library/ScriptAssemblies/Unity.TextMeshPro.dll and b/Library/ScriptAssemblies/Unity.TextMeshPro.dll differ
diff --git a/Library/ScriptAssemblies/Unity.Timeline.Editor.dll b/Library/ScriptAssemblies/Unity.Timeline.Editor.dll
index fdd2135e..7749fa38 100644
Binary files a/Library/ScriptAssemblies/Unity.Timeline.Editor.dll and b/Library/ScriptAssemblies/Unity.Timeline.Editor.dll differ
diff --git a/Library/ScriptAssemblies/Unity.Timeline.dll b/Library/ScriptAssemblies/Unity.Timeline.dll
index 73603b89..8d25eab5 100644
Binary files a/Library/ScriptAssemblies/Unity.Timeline.dll and b/Library/ScriptAssemblies/Unity.Timeline.dll differ
diff --git a/Library/ScriptAssemblies/UnityEditor.SpatialTracking.dll b/Library/ScriptAssemblies/UnityEditor.SpatialTracking.dll
index 03782f49..02345079 100644
Binary files a/Library/ScriptAssemblies/UnityEditor.SpatialTracking.dll and b/Library/ScriptAssemblies/UnityEditor.SpatialTracking.dll differ
diff --git a/Library/ScriptAssemblies/UnityEditor.XR.LegacyInputHelpers.dll b/Library/ScriptAssemblies/UnityEditor.XR.LegacyInputHelpers.dll
index e9b997bb..28cf2f14 100644
Binary files a/Library/ScriptAssemblies/UnityEditor.XR.LegacyInputHelpers.dll and b/Library/ScriptAssemblies/UnityEditor.XR.LegacyInputHelpers.dll differ
diff --git a/Library/ScriptAssemblies/UnityEngine.SpatialTracking.dll b/Library/ScriptAssemblies/UnityEngine.SpatialTracking.dll
index 925897c7..d2249db4 100644
Binary files a/Library/ScriptAssemblies/UnityEngine.SpatialTracking.dll and b/Library/ScriptAssemblies/UnityEngine.SpatialTracking.dll differ
diff --git a/Library/ScriptAssemblies/UnityEngine.XR.LegacyInputHelpers.dll b/Library/ScriptAssemblies/UnityEngine.XR.LegacyInputHelpers.dll
index 7a68522e..fc60a6d7 100644
Binary files a/Library/ScriptAssemblies/UnityEngine.XR.LegacyInputHelpers.dll and b/Library/ScriptAssemblies/UnityEngine.XR.LegacyInputHelpers.dll differ
diff --git a/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Editor.dll b/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Editor.dll
index 6166c417..a197ec98 100644
Binary files a/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Editor.dll and b/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Editor.dll differ
diff --git a/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll b/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll
index 4601001b..1375d6a4 100644
Binary files a/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll and b/Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll differ
diff --git a/Library/ScriptAssemblies/com.unity.multiplayer-weaver.Editor.dll b/Library/ScriptAssemblies/com.unity.multiplayer-weaver.Editor.dll
index 33bf4bb9..45664d77 100644
Binary files a/Library/ScriptAssemblies/com.unity.multiplayer-weaver.Editor.dll and b/Library/ScriptAssemblies/com.unity.multiplayer-weaver.Editor.dll differ
diff --git a/Library/ShaderCache/EditorEncounteredVariants b/Library/ShaderCache/EditorEncounteredVariants
index 3cf3646c..ac2801e0 100644
Binary files a/Library/ShaderCache/EditorEncounteredVariants and b/Library/ShaderCache/EditorEncounteredVariants differ
diff --git a/Library/StateCache/Hierarchy/b4d921-mainStage.json b/Library/StateCache/Hierarchy/b4d921-mainStage.json
index 142664dc..1ce7c0e7 100644
--- a/Library/StateCache/Hierarchy/b4d921-mainStage.json
+++ b/Library/StateCache/Hierarchy/b4d921-mainStage.json
@@ -1 +1 @@
-{"m_ExpandedPrefabGameObjectFileIDs":[],"m_ExpandedSceneGameObjectInstanceIDs":[-70060,-70008,-69524,-69310,-69254,-68770,-66560,-66270,-66214,-65730,-54548,-51968,-51868,-51816,-51330,-46722,-46670,-46184,-45980,-45928,-45442,-45238,-45186,-44700,-44496,-44444,-43958,-42908,-42856,-42370,-42010,-41958,-41472,-41182,-41130,-40644,-40440,-40388,-39902,-39536,-39484,-38998,-37904,-37852,-37366,-37062,-37010,-36524,-36108,-36056,-35570,-34856,-34804,-34318,-33746,-33694,-33208,-32224,-28998,-28988,-28818,-28766,-28282,-27446,-27394,-26910,-26388,-26332,-25844,-24208,-24152,-23668,-18590,-18306,-16936,-16884,-16400,-15816,-15764,-15280,-14800,-14744,-14260,-12684,-12632,-12148,-11910,-11850,-11366,-10980,-9878,-9826,-9342,-8940,-8884,-8400,-7528,-7022,-6970,-6962,-6616,-6564,-6080,-5380,-3454,-1862,-1808,-1320,-1138,23950,25448,25942,26374,29034,30626,30716,34976,35064,36410,36414,36526,37272,38168,38284,38882,39004,42096,42116,44378,45126,45210,45906,46008],"m_ScrollY":0.0,"m_LastClickedFileID":0,"m_LastClickedInstanceID":0}
\ No newline at end of file
+{"m_ExpandedPrefabGameObjectFileIDs":[],"m_ExpandedSceneGameObjectInstanceIDs":[-81854,-81802,-81316,-80758,-80706,-80220,-79160,-79104,-78618,-71030,-70974,-70490,-70060,-70008,-69524,-69310,-69254,-68770,-66560,-66270,-66214,-65730,-54548,-51968,-51868,-51816,-51330,-46722,-46670,-46184,-45980,-45928,-45442,-45238,-45186,-44700,-44496,-44444,-43958,-42908,-42856,-42370,-42010,-41958,-41472,-41182,-41130,-40644,-40440,-40388,-39902,-39536,-39484,-38998,-37904,-37852,-37366,-37062,-37010,-36524,-36108,-36056,-35570,-34856,-34804,-34318,-33746,-33694,-33208,-32224,-28998,-28988,-28818,-28766,-28282,-27446,-27394,-26910,-26388,-26332,-25844,-24208,-24152,-23668,-18590,-18306,-16936,-16884,-16400,-15816,-15764,-15280,-14800,-14744,-14260,-12684,-12632,-12148,-11910,-11850,-11366,-10980,-9878,-9826,-9342,-8940,-8884,-8400,-7528,-7022,-6970,-6962,-6616,-6564,-6080,-5380,-3454,-1862,-1808,-1320,-1138,23950,25448,25942,26374,29034,30626,30716,34976,35064,36410,36414,36526,37272,38168,38284,38882,39004,42096,42116,44378,45126,45210,45906,46008,47550,48300,48412,49562,51854,51866,52104],"m_ScrollY":0.0,"m_LastClickedFileID":0,"m_LastClickedInstanceID":53456}
\ No newline at end of file
diff --git a/Library/StateCache/SceneView/f1e9c4-mainStage.json b/Library/StateCache/SceneView/f1e9c4-mainStage.json
index 3f7f3d69..773b24d5 100644
--- a/Library/StateCache/SceneView/f1e9c4-mainStage.json
+++ b/Library/StateCache/SceneView/f1e9c4-mainStage.json
@@ -1 +1 @@
-{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":true,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":877.5025634765625,"y":644.088134765625,"z":-1571.085205078125},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":1160.3167724609375,"orthographic":true}
\ No newline at end of file
+{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":true,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":832.3451538085938,"y":1232.20263671875,"z":-268.0645446777344},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":1685.8594970703125,"orthographic":true}
\ No newline at end of file
diff --git a/Library/assetDatabase3 b/Library/assetDatabase3
index 5f0b240a..2b119491 100644
Binary files a/Library/assetDatabase3 and b/Library/assetDatabase3 differ
diff --git a/Library/shadercompiler-UnityShaderCompiler2.log b/Library/shadercompiler-UnityShaderCompiler2.log
index a20188f5..eaa98440 100644
--- a/Library/shadercompiler-UnityShaderCompiler2.log
+++ b/Library/shadercompiler-UnityShaderCompiler2.log
@@ -2,3 +2,5 @@ Base path: /Applications/Unity/Unity.app/Contents
Cmd: initializeCompiler
Cmd: compileSnippet
api=14 type=0 insize=2355 outsize=2395 kw=SOFTPARTICLES_ON pd=UNITY_NO_DXT5nm UNITY_NO_RGBM UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRAMEBUFFER_FETCH_AVAILABLE UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_MOBILE UNITY_HARDWARE_TIER2 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING ok=1
+Cmd: compileSnippet
+ api=14 type=1 insize=7122 outsize=3401 kw= pd=UNITY_NO_DXT5nm UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_DESKTOP UNITY_HARDWARE_TIER3 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING ok=1
diff --git a/Library/shadercompiler-UnityShaderCompiler4.log b/Library/shadercompiler-UnityShaderCompiler4.log
index a35ff988..471835ef 100644
--- a/Library/shadercompiler-UnityShaderCompiler4.log
+++ b/Library/shadercompiler-UnityShaderCompiler4.log
@@ -4,3 +4,5 @@ Cmd: compileSnippet
api=14 type=1 insize=2355 outsize=966 kw= pd=UNITY_NO_DXT5nm UNITY_NO_RGBM UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRAMEBUFFER_FETCH_AVAILABLE UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_MOBILE UNITY_HARDWARE_TIER2 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING ok=1
Cmd: compileSnippet
api=14 type=1 insize=1596 outsize=8052 kw=UNITY_PASS_FORWARDBASE DIRECTIONAL SHADOWS_SCREEN LIGHTPROBE_SH pd=UNITY_NO_DXT5nm UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_DESKTOP UNITY_HARDWARE_TIER3 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING ok=1
+Cmd: compileSnippet
+ api=14 type=0 insize=7122 outsize=6308 kw= pd=UNITY_NO_DXT5nm UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_DESKTOP UNITY_HARDWARE_TIER3 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING ok=1
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index 99c3680e..9632d09b 100644
--- a/ProjectSettings/ProjectSettings.asset
+++ b/ProjectSettings/ProjectSettings.asset
@@ -8,38 +8,42 @@ PlayerSettings:
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0
AndroidEnableSustainedPerformanceMode: 0
- defaultScreenOrientation: 4
+ defaultScreenOrientation: 0
targetDevice: 2
useOnDemandResources: 0
accelerometerFrequency: 60
- companyName: Unity Technologies
+ companyName: OKOLOSALEYA
productName: Eye Gazing
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
- m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
+ m_SplashScreenBackgroundColor: {r: 1, g: 1, b: 1, a: 1}
m_ShowUnitySplashScreen: 1
m_ShowUnitySplashLogo: 1
- m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenOverlayOpacity: 0.5
m_SplashScreenAnimation: 1
- m_SplashScreenLogoStyle: 1
- m_SplashScreenDrawMode: 0
+ m_SplashScreenLogoStyle: 0
+ m_SplashScreenDrawMode: 1
m_SplashScreenBackgroundAnimationZoom: 1
m_SplashScreenLogoAnimationZoom: 1
m_SplashScreenBackgroundLandscapeAspect: 1
m_SplashScreenBackgroundPortraitAspect: 1
m_SplashScreenBackgroundLandscapeUvs:
serializedVersion: 2
- x: 0
+ x: 0.07936508
y: 0
- width: 1
- height: 1
+ width: 0.8412699
+ height: 0.920635
m_SplashScreenBackgroundPortraitUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
- m_SplashScreenLogos: []
+ m_SplashScreenLogos:
+ - logo: {fileID: 10404, guid: 0000000000000000e000000000000000, type: 0}
+ duration: 2
+ - logo: {fileID: 21300000, guid: 47e2af49114b44a3d9ad7e3e71b5a1f4, type: 3}
+ duration: 2
m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 1024
@@ -223,7 +227,7 @@ PlayerSettings:
iOSLaunchScreenLandscape: {fileID: 0}
iOSLaunchScreenBackgroundColor:
serializedVersion: 2
- rgba: 3452816845
+ rgba: 3456106495
iOSLaunchScreenFillPct: 100
iOSLaunchScreenSize: 100
iOSLaunchScreenCustomXibPath:
@@ -583,7 +587,8 @@ PlayerSettings:
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []
monoEnv:
- splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourceLandscape: {fileID: 21300000, guid: def0b999bf90eaf48ad972dc8f98df24,
+ type: 3}
splashScreenBackgroundSourcePortrait: {fileID: 0}
spritePackerPolicy:
webGLMemorySize: 256