diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..0036326
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,8 @@
+; Used by the 'EditorConfig' VS plugin
+; See http://editorconfig.org
+
+; Use tabs preference set to 2 spaces per tab.
+[*.cs]
+indent_style = space
+indent_size = 4
+charset = utf-8-bom
diff --git a/Assets/VIRTUOSO.meta b/Assets/VIRTUOSO.meta
new file mode 100644
index 0000000..7fd814a
--- /dev/null
+++ b/Assets/VIRTUOSO.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e1e45009909c87245a53d13351a42598
+folderAsset: yes
+timeCreated: 1544108463
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config.meta b/Assets/VIRTUOSO/Config.meta
new file mode 100644
index 0000000..9bb3cbf
--- /dev/null
+++ b/Assets/VIRTUOSO/Config.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8605a2c9674104c49ae53ea1dd969e4a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/actions.json b/Assets/VIRTUOSO/Config/actions.json
new file mode 100644
index 0000000..77ba4c4
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/actions.json
@@ -0,0 +1,194 @@
+{
+ "actions": [
+ {
+ "name": "/actions/default/in/InteractUI",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/default/in/Teleport",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/default/in/GrabPinch",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/default/in/GrabGrip",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/default/in/Pose",
+ "type": "pose"
+ },
+ {
+ "name": "/actions/default/in/SkeletonLeftHand",
+ "type": "skeleton",
+ "skeleton": "/skeleton/hand/left"
+ },
+ {
+ "name": "/actions/default/in/SkeletonRightHand",
+ "type": "skeleton",
+ "skeleton": "/skeleton/hand/right"
+ },
+ {
+ "name": "/actions/default/in/Squeeze",
+ "type": "vector1",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/default/in/HeadsetOnHead",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/default/out/Haptic",
+ "type": "vibration"
+ },
+ {
+ "name": "/actions/platformer/in/Move",
+ "type": "vector2"
+ },
+ {
+ "name": "/actions/platformer/in/Jump",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/buggy/in/Steering",
+ "type": "vector2"
+ },
+ {
+ "name": "/actions/buggy/in/Throttle",
+ "type": "vector1"
+ },
+ {
+ "name": "/actions/buggy/in/Brake",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/buggy/in/Reset",
+ "type": "boolean"
+ },
+ {
+ "name": "/actions/mixedreality/in/ExternalCamera",
+ "type": "pose",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/grab",
+ "type": "boolean",
+ "requirement": "mandatory"
+ },
+ {
+ "name": "/actions/naturalistic/in/trigger",
+ "type": "boolean",
+ "requirement": "mandatory"
+ },
+ {
+ "name": "/actions/naturalistic/in/pose",
+ "type": "pose"
+ },
+ {
+ "name": "/actions/naturalistic/in/touchpad",
+ "type": "vector2"
+ },
+ {
+ "name": "/actions/naturalistic/in/x",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/y",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touch_grab",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touch_trigger",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touch_touchpad",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touch_x",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touch_y",
+ "type": "boolean",
+ "requirement": "optional"
+ },
+ {
+ "name": "/actions/naturalistic/in/touchpad_click",
+ "type": "boolean",
+ "requirement": "suggested"
+ },
+ {
+ "name": "/actions/naturalistic/out/Haptic",
+ "type": "vibration"
+ }
+ ],
+ "action_sets": [
+ {
+ "name": "/actions/default",
+ "usage": "single"
+ },
+ {
+ "name": "/actions/platformer",
+ "usage": "single"
+ },
+ {
+ "name": "/actions/buggy",
+ "usage": "single"
+ },
+ {
+ "name": "/actions/mixedreality",
+ "usage": "single"
+ },
+ {
+ "name": "/actions/naturalistic",
+ "usage": "single"
+ }
+ ],
+ "default_bindings": [
+ {
+ "controller_type": "vive_controller",
+ "binding_url": "bindings_vive_controller.json"
+ },
+ {
+ "controller_type": "oculus_touch",
+ "binding_url": "bindings_oculus_touch.json"
+ },
+ {
+ "controller_type": "knuckles",
+ "binding_url": "bindings_knuckles.json"
+ },
+ {
+ "controller_type": "holographic_controller",
+ "binding_url": "bindings_holographic_controller.json"
+ }
+ ],
+ "localization": [
+ {
+ "language_tag": "en_US",
+ "/actions/default/in/GrabGrip": "Grab Grip",
+ "/actions/default/in/GrabPinch": "Grab Pinch",
+ "/actions/default/in/HeadsetOnHead": "Headset on head (proximity sensor)",
+ "/actions/default/in/InteractUI": "Interact With UI",
+ "/actions/default/in/Pose": "Pose",
+ "/actions/default/in/SkeletonLeftHand": "Skeleton (Left)",
+ "/actions/default/in/SkeletonRightHand": "Skeleton (Right)",
+ "/actions/default/in/Teleport": "Teleport",
+ "/actions/default/out/Haptic": "Haptic",
+ "/actions/platformer/in/Jump": "Jump"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Config/actions.json.meta b/Assets/VIRTUOSO/Config/actions.json.meta
new file mode 100644
index 0000000..af8e96a
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/actions.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d3986c7849cfbe242ba1f3a7a63a5900
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/binding_holographic_hmd.json b/Assets/VIRTUOSO/Config/binding_holographic_hmd.json
new file mode 100644
index 0000000..866c380
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_holographic_hmd.json
@@ -0,0 +1,27 @@
+{
+ "alias_info" : {},
+ "bindings" : {
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/headsetonhead"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/head/proximity"
+ }
+ ]
+ }
+ },
+ "controller_type" : "holographic_hmd",
+ "description" : "",
+ "name" : "holographic_hmd defaults",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/binding_holographic_hmd.json.meta b/Assets/VIRTUOSO/Config/binding_holographic_hmd.json.meta
new file mode 100644
index 0000000..b4b3fa1
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_holographic_hmd.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 106af8be373499e42b24c827721823fa
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/binding_rift.json b/Assets/VIRTUOSO/Config/binding_rift.json
new file mode 100644
index 0000000..4a7bb54
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_rift.json
@@ -0,0 +1,27 @@
+{
+ "alias_info" : {},
+ "bindings" : {
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/headsetonhead"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/head/proximity"
+ }
+ ]
+ }
+ },
+ "controller_type" : "rift",
+ "description" : "",
+ "name" : "rift defaults",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/binding_rift.json.meta b/Assets/VIRTUOSO/Config/binding_rift.json.meta
new file mode 100644
index 0000000..a920f24
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_rift.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d6975092c2d67214d91aa5860258cb13
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/binding_vive.json b/Assets/VIRTUOSO/Config/binding_vive.json
new file mode 100644
index 0000000..a4ad342
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive.json
@@ -0,0 +1,27 @@
+{
+ "alias_info" : {},
+ "bindings" : {
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/headsetonhead"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/head/proximity"
+ }
+ ]
+ }
+ },
+ "controller_type" : "vive",
+ "description" : "",
+ "name" : "vive defaults",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/binding_vive.json.meta b/Assets/VIRTUOSO/Config/binding_vive.json.meta
new file mode 100644
index 0000000..2b6c647
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d61fbc2c88a797241b23f5bdb9b135da
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/binding_vive_pro.json b/Assets/VIRTUOSO/Config/binding_vive_pro.json
new file mode 100644
index 0000000..43ba0d3
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive_pro.json
@@ -0,0 +1,27 @@
+{
+ "alias_info" : {},
+ "bindings" : {
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/headsetonhead"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/head/proximity"
+ }
+ ]
+ }
+ },
+ "controller_type" : "vive_pro",
+ "description" : "",
+ "name" : "vive_pro defaults",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/binding_vive_pro.json.meta b/Assets/VIRTUOSO/Config/binding_vive_pro.json.meta
new file mode 100644
index 0000000..32810a8
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive_pro.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 01233af472b1bba49bfa15bb7c396d86
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json b/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json
new file mode 100644
index 0000000..b828702
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json
@@ -0,0 +1,23 @@
+{
+ "alias_info" : {},
+ "app_key" : "application.generated.unity.steamvr.exe",
+ "bindings": {
+ "/actions/mixedreality": {
+ "haptics": [
+ ],
+ "poses": [
+ {
+ "output": "/actions/mixedreality/in/ExternalCamera",
+ "path": "/user/camera/pose/raw"
+ }
+ ],
+ "sources": [
+ ]
+ }
+ },
+ "controller_type" : "vive_tracker_camera",
+ "description" : "",
+ "name" : "tracker_forcamera",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json.meta b/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json.meta
new file mode 100644
index 0000000..ae2ae95
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/binding_vive_tracker_camera.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1cd61eb33c6e1a644969c99869d6ad22
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/bindings_holographic_controller.json b/Assets/VIRTUOSO/Config/bindings_holographic_controller.json
new file mode 100644
index 0000000..8e50b37
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_holographic_controller.json
@@ -0,0 +1,306 @@
+{
+ "action_manifest_version" : 0,
+ "alias_info" : {},
+ "app_key" : "application.generated.unity.vsdktutorialrunthrough.exe",
+ "bindings" : {
+ "/actions/buggy" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/joystick"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/joystick"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/application_menu"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/application_menu"
+ }
+ ]
+ },
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/left/pose/raw"
+ },
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/right/pose/raw"
+ }
+ ],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ },
+ "touch" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ },
+ "touch" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/left/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/right/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/grip"
+ }
+ ]
+ },
+ "/actions/naturalistic" : {
+ "haptics" : [
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/left/pose/handgrip"
+ },
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/right/pose/handgrip"
+ }
+ ],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/left/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/right/input/trackpad"
+ }
+ ]
+ },
+ "/actions/platformer" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/left/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/right/input/trackpad"
+ }
+ ]
+ }
+ },
+ "controller_type" : "holographic_controller",
+ "description" : "",
+ "name" : "Default bindings for Windows Mixed Reality Controllers",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/bindings_holographic_controller.json.meta b/Assets/VIRTUOSO/Config/bindings_holographic_controller.json.meta
new file mode 100644
index 0000000..cb5e1a0
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_holographic_controller.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 73f2205ed4cc90044a4bd2190e0d2770
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/bindings_knuckles.json b/Assets/VIRTUOSO/Config/bindings_knuckles.json
new file mode 100644
index 0000000..b3d7e67
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_knuckles.json
@@ -0,0 +1,469 @@
+{
+ "action_manifest_version" : 0,
+ "alias_info" : {},
+ "app_key" : "application.generated.unity.virtuososdk.exe",
+ "bindings" : {
+ "/actions/buggy" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/thumbstick"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/thumbstick"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/a"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/a"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/b"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/b"
+ }
+ ]
+ },
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/left/pose/raw"
+ },
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/right/pose/raw"
+ }
+ ],
+ "skeleton" : [
+ {
+ "output" : "/actions/default/in/skeletonlefthand",
+ "path" : "/user/hand/left/input/skeleton/left"
+ },
+ {
+ "output" : "/actions/default/in/skeletonrighthand",
+ "path" : "/user/hand/right/input/skeleton/right"
+ }
+ ],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "force" : {
+ "output" : "/actions/default/in/squeeze"
+ }
+ },
+ "mode" : "force_sensor",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "force" : {
+ "output" : "/actions/default/in/squeeze"
+ }
+ },
+ "mode" : "force_sensor",
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "grab",
+ "parameters" : {
+ "force_hold_threshold" : "0.02",
+ "force_release_threshold" : "0.01"
+ },
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "grab",
+ "parameters" : {
+ "force_hold_threshold" : "0.02",
+ "force_release_threshold" : "0.01"
+ },
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "grab",
+ "parameters" : {
+ "force_hold_threshold" : "0.02",
+ "force_release_threshold" : "0.01"
+ },
+ "path" : "/user/hand/left/input/pinch"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "grab",
+ "parameters" : {
+ "force_hold_threshold" : "0.02",
+ "force_release_threshold" : "0.01"
+ },
+ "path" : "/user/hand/right/input/pinch"
+ }
+ ]
+ },
+ "/actions/naturalistic" : {
+ "haptics" : [
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/left/pose/handgrip"
+ },
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/right/pose/handgrip"
+ }
+ ],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ }
+ },
+ "mode" : "grab",
+ "path" : "/user/hand/left/input/pinch"
+ },
+ {
+ "inputs" : {
+ "grab" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ }
+ },
+ "mode" : "grab",
+ "path" : "/user/hand/right/input/pinch"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/x"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_x"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/a"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/x"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_x"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/a"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/y"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_y"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/b"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/y"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_y"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/b"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/left/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "trackpad",
+ "path" : "/user/hand/right/input/trackpad"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_trigger"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_trigger"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/thumbstick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/thumbstick"
+ }
+ ]
+ },
+ "/actions/platformer" : {
+ "chords" : [],
+ "haptics" : [],
+ "poses" : [],
+ "skeleton" : [],
+ "sources" : [
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/thumbstick"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/thumbstick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/trigger"
+ }
+ ]
+ }
+ },
+ "controller_type" : "knuckles",
+ "description" : "",
+ "name" : "knuckles_default",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/bindings_knuckles.json.meta b/Assets/VIRTUOSO/Config/bindings_knuckles.json.meta
new file mode 100644
index 0000000..5a48959
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_knuckles.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f9ab447104d665a49a17a64e57ba867d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/bindings_oculus_touch.json b/Assets/VIRTUOSO/Config/bindings_oculus_touch.json
new file mode 100644
index 0000000..77c8236
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_oculus_touch.json
@@ -0,0 +1,421 @@
+{
+ "alias_info" : {},
+ "app_key" : "com.charlesriveranalytics.virtuoso",
+ "bindings" : {
+ "/actions/buggy" : {
+ "sources" : [
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/buggy/in/throttle"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/joystick"
+ },
+ {
+ "inputs" : {
+ "position" : {
+ "output" : "/actions/buggy/in/steering"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/x"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/x"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/y"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/y"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/brake"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/a"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/buggy/in/reset"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/b"
+ }
+ ]
+ },
+ "/actions/default" : {
+ "chords" : [],
+ "haptics" : [
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/default/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/left/pose/raw"
+ },
+ {
+ "output" : "/actions/default/in/pose",
+ "path" : "/user/hand/right/pose/raw"
+ }
+ ],
+ "skeleton" : [
+ {
+ "output" : "/actions/default/in/skeletonlefthand",
+ "path" : "/user/hand/left/input/skeleton/left"
+ },
+ {
+ "output" : "/actions/default/in/skeletonrighthand",
+ "path" : "/user/hand/right/input/skeleton/right"
+ }
+ ],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "button",
+ "parameters" : {
+ "click_activate_threshold" : "0.8",
+ "click_deactivate_threshold" : "0.7",
+ "force_input" : "force"
+ },
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "button",
+ "parameters" : {
+ "click_activate_threshold" : "0.8",
+ "click_deactivate_threshold" : "0.7",
+ "force_input" : "value"
+ },
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/interactui"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabpinch"
+ }
+ },
+ "mode" : "button",
+ "parameters" : {
+ "click_activate_threshold" : "0.8",
+ "click_deactivate_threshold" : "0.7"
+ },
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/teleport"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/default/in/grabgrip"
+ }
+ },
+ "mode" : "button",
+ "parameters" : {
+ "click_activate_threshold" : "0.8",
+ "click_deactivate_threshold" : "0.7",
+ "force_input" : "force"
+ },
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/default/in/squeeze"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "pull" : {
+ "output" : "/actions/default/in/squeeze"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/grip"
+ }
+ ]
+ },
+ "/actions/naturalistic" : {
+ "haptics" : [
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/left/output/haptic"
+ },
+ {
+ "output" : "/actions/naturalistic/out/haptic",
+ "path" : "/user/hand/right/output/haptic"
+ }
+ ],
+ "poses" : [
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/left/pose/base"
+ },
+ {
+ "output" : "/actions/naturalistic/in/pose",
+ "path" : "/user/hand/right/pose/base"
+ }
+ ],
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/x"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_x"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/x"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/y"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_y"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/left/input/y"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_trigger"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/left/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/grab"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/grip"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/touchpad_click"
+ },
+ "position" : {
+ "output" : "/actions/naturalistic/in/touchpad"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_touchpad"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/trigger"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_trigger"
+ }
+ },
+ "mode" : "trigger",
+ "path" : "/user/hand/right/input/trigger"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/x"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_x"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/x"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/naturalistic/in/y"
+ },
+ "touch" : {
+ "output" : "/actions/naturalistic/in/touch_y"
+ }
+ },
+ "mode" : "button",
+ "path" : "/user/hand/right/input/y"
+ }
+ ]
+ },
+ "/actions/platformer" : {
+ "sources" : [
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ },
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/left/input/joystick"
+ },
+ {
+ "inputs" : {
+ "click" : {
+ "output" : "/actions/platformer/in/jump"
+ },
+ "position" : {
+ "output" : "/actions/platformer/in/move"
+ }
+ },
+ "mode" : "joystick",
+ "path" : "/user/hand/right/input/joystick"
+ }
+ ]
+ }
+ },
+ "controller_type" : "oculus_touch",
+ "description" : "",
+ "name" : "oculus_touch",
+ "options" : {},
+ "simulated_actions" : []
+}
diff --git a/Assets/VIRTUOSO/Config/bindings_oculus_touch.json.meta b/Assets/VIRTUOSO/Config/bindings_oculus_touch.json.meta
new file mode 100644
index 0000000..a6dfaba
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_oculus_touch.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ecf34e518818c434d809c86064961869
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Config/bindings_vive_controller.json b/Assets/VIRTUOSO/Config/bindings_vive_controller.json
new file mode 100644
index 0000000..7fae921
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_vive_controller.json
@@ -0,0 +1,419 @@
+{
+ "app_key": "com.charlesriveranalytics.virtuoso",
+ "bindings": {
+ "/actions/buggy": {
+ "chords": [],
+ "poses": [],
+ "haptics": [],
+ "sources": [
+ {
+ "path": "/user/hand/left/input/trigger",
+ "mode": "trigger",
+ "parameters": {},
+ "inputs": {
+ "pull": {
+ "output": "/actions/buggy/in/throttle"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trigger",
+ "mode": "trigger",
+ "parameters": {},
+ "inputs": {
+ "pull": {
+ "output": "/actions/buggy/in/throttle"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/buggy/in/brake"
+ },
+ "position": {
+ "output": "/actions/buggy/in/steering"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/buggy/in/brake"
+ },
+ "position": {
+ "output": "/actions/buggy/in/steering"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/application_menu",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/buggy/in/reset"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/application_menu",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/buggy/in/reset"
+ }
+ }
+ }
+ ],
+ "skeleton": []
+ },
+ "/actions/default": {
+ "chords": [],
+ "poses": [
+ {
+ "output": "/actions/default/in/pose",
+ "path": "/user/hand/left/pose/raw"
+ },
+ {
+ "output": "/actions/default/in/pose",
+ "path": "/user/hand/right/pose/raw"
+ }
+ ],
+ "haptics": [
+ {
+ "output": "/actions/default/out/haptic",
+ "path": "/user/hand/left/output/haptic"
+ },
+ {
+ "output": "/actions/default/out/haptic",
+ "path": "/user/hand/right/output/haptic"
+ }
+ ],
+ "sources": [
+ {
+ "path": "/user/hand/left/input/trigger",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/interactui"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/teleport"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/grip",
+ "mode": "button",
+ "parameters": {
+ "click_activate_threshold": "0.05",
+ "click_deactivate_threshold": "0",
+ "force_input": "force"
+ },
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/grabgrip"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trigger",
+ "mode": "button",
+ "parameters": {
+ "click_activate_threshold": "0.75",
+ "click_deactivate_threshold": "0.7",
+ "force_input": "value"
+ },
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/grabpinch"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trigger",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/interactui"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trigger",
+ "mode": "button",
+ "parameters": {
+ "click_activate_threshold": "0.75",
+ "click_deactivate_threshold": "0.7"
+ },
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/grabpinch"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/teleport"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/grip",
+ "mode": "button",
+ "parameters": {
+ "click_activate_threshold": "0.05",
+ "click_deactivate_threshold": "0",
+ "force_input": "force"
+ },
+ "inputs": {
+ "click": {
+ "output": "/actions/default/in/grabgrip"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trigger",
+ "mode": "trigger",
+ "parameters": {},
+ "inputs": {
+ "pull": {
+ "output": "/actions/default/in/squeeze"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trigger",
+ "mode": "trigger",
+ "parameters": {},
+ "inputs": {
+ "pull": {
+ "output": "/actions/default/in/squeeze"
+ }
+ }
+ }
+ ],
+ "skeleton": [
+ {
+ "output": "/actions/default/in/skeletonlefthand",
+ "path": "/user/hand/left/input/skeleton/left"
+ },
+ {
+ "output": "/actions/default/in/skeletonrighthand",
+ "path": "/user/hand/right/input/skeleton/right"
+ }
+ ]
+ },
+ "/actions/legacy": {
+ "chords": [],
+ "poses": [],
+ "haptics": [],
+ "sources": [],
+ "skeleton": []
+ },
+ "/actions/naturalistic": {
+ "chords": [],
+ "poses": [
+ {
+ "output": "/actions/naturalistic/in/pose",
+ "path": "/user/hand/left/pose/raw"
+ },
+ {
+ "output": "/actions/naturalistic/in/pose",
+ "path": "/user/hand/right/pose/raw"
+ }
+ ],
+ "haptics": [
+ {
+ "output": "/actions/naturalistic/out/haptic",
+ "path": "/user/hand/left/output/haptic"
+ },
+ {
+ "output": "/actions/naturalistic/out/haptic",
+ "path": "/user/hand/right/output/haptic"
+ }
+ ],
+ "sources": [
+ {
+ "path": "/user/hand/left/input/grip",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/grab"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/grip",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/grab"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trigger",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/trigger"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trigger",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/trigger"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "position": {
+ "output": "/actions/naturalistic/in/touchpad"
+ },
+ "touch": {
+ "output": "/actions/naturalistic/in/touch_touchpad"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "position": {
+ "output": "/actions/naturalistic/in/touchpad"
+ },
+ "touch": {
+ "output": "/actions/naturalistic/in/touch_touchpad"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/application_menu",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/x"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/application_menu",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/y"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/touchpad_click"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/naturalistic/in/touchpad_click"
+ }
+ }
+ }
+ ],
+ "skeleton": []
+ },
+ "/actions/platformer": {
+ "chords": [],
+ "poses": [],
+ "haptics": [],
+ "sources": [
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/platformer/in/jump"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "button",
+ "parameters": {},
+ "inputs": {
+ "click": {
+ "output": "/actions/platformer/in/jump"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/left/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "position": {
+ "output": "/actions/platformer/in/move"
+ }
+ }
+ },
+ {
+ "path": "/user/hand/right/input/trackpad",
+ "mode": "trackpad",
+ "parameters": {},
+ "inputs": {
+ "position": {
+ "output": "/actions/platformer/in/move"
+ }
+ }
+ }
+ ],
+ "skeleton": []
+ }
+ },
+ "controller_type": "vive_controller",
+ "description": "",
+ "name": "vive_controller"
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Config/bindings_vive_controller.json.meta b/Assets/VIRTUOSO/Config/bindings_vive_controller.json.meta
new file mode 100644
index 0000000..cf78c10
--- /dev/null
+++ b/Assets/VIRTUOSO/Config/bindings_vive_controller.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d2f8c4300e587a04daab358aa0c67057
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples.meta b/Assets/VIRTUOSO/Examples.meta
new file mode 100644
index 0000000..6f193d8
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 849277d053fbb4a4d8c85146d57daf40
+folderAsset: yes
+timeCreated: 1546442776
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity b/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity
new file mode 100644
index 0000000..ef6b0dc
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity
@@ -0,0 +1,15780 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 8
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_TemporalCoherenceThreshold: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_LightmapEditorSettings:
+ serializedVersion: 9
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_TextureWidth: 1024
+ m_TextureHeight: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringMode: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ShowResolutionOverlay: 1
+ m_LightingDataAsset: {fileID: 0}
+ m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &2483436
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1325315483681992, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2483437}
+ - component: {fileID: 2483443}
+ - component: {fileID: 2483442}
+ - component: {fileID: 2483441}
+ - component: {fileID: 2483440}
+ - component: {fileID: 2483439}
+ - component: {fileID: 2483438}
+ m_Layer: 0
+ m_Name: RigidRoundHand_L
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2483437
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4858914955203396, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1542414820}
+ - {fileID: 1516915512}
+ - {fileID: 1627909957}
+ - {fileID: 777583215}
+ - {fileID: 1299871813}
+ - {fileID: 538772792}
+ - {fileID: 1195523829}
+ m_Father: {fileID: 1670684668}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: -90, y: 180, z: 0}
+--- !u!114 &2483438
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114893403919140318, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 08224c2548b75214e81b837a73fae0f9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+ controllerHandId: 0
+ triggerGesture: {fileID: 0}
+ gripGesture: {fileID: 11400000, guid: 00b1d9b68c0fcb149b4a77ca61ba13c0, type: 2}
+ touchpadGesture: {fileID: 0}
+ buttonOneGesture: {fileID: 0}
+ buttonTwoGesture: {fileID: 0}
+ startMenuGesture: {fileID: 0}
+--- !u!114 &2483439
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114752504900293228, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 2483438}
+ interactTouch: {fileID: 2483441}
+ interactGrab: {fileID: 2483440}
+--- !u!114 &2483440
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114032345389470858, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 1756296557}
+ controllerEvents: {fileID: 2483438}
+ interactTouch: {fileID: 2483441}
+--- !u!114 &2483441
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114414518696397854, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 2483436}
+--- !u!114 &2483442
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114450590992621364, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8bcd03e00992e084c8be61565d44b8bd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &2483443
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114691528866644458, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2483436}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9ea79be653ce14db8969d7225d95ec6c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &36426132
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1922512018684852, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 36426133}
+ - component: {fileID: 36426134}
+ m_Layer: 0
+ m_Name: palm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &36426133
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4465051362419226, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 36426132}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.0834, y: 0.117, z: -0.0134}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1808816406}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &36426134
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 65132082703212382, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 36426132}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 0.06, y: 0.02, z: 0.07}
+ m_Center: {x: 0, y: 0, z: -0.005}
+--- !u!1 &37548867
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 37548868}
+ - component: {fileID: 37548871}
+ - component: {fileID: 37548870}
+ - component: {fileID: 37548869}
+ m_Layer: 0
+ m_Name: Plane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &37548868
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37548867}
+ 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: 688036712}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &37548869
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37548867}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 2100000, guid: e9b4035a726ef4b4db69e28454400bc9, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!64 &37548870
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37548867}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Convex: 0
+ m_CookingOptions: 14
+ m_SkinWidth: 0.01
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!33 &37548871
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37548867}
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &37851354
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1383456089813822, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 37851355}
+ - component: {fileID: 37851356}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &37851355
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4782672747295318, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37851354}
+ m_LocalRotation: {x: 0.24710183, y: 0.051211912, z: -0.063631974, w: -0.96554077}
+ m_LocalPosition: {x: 0.18226412, y: 0.30500248, z: -0.08541584}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 777583215}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 6.0762, y: -15.1172, z: 19.823}
+--- !u!136 &37851356
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136338625638998070, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 37851354}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.02611
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &40297911
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100066, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 40297912}
+ m_Layer: 0
+ m_Name: LeftToeBase
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &40297912
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400066, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 40297911}
+ m_LocalRotation: {x: 0.000000004649337, y: 1.1698642e-10, z: 9.313231e-10, w: 1}
+ m_LocalPosition: {x: -0.0037335982, y: -0.10492193, z: 0.12640664}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 134130428}
+ m_Father: {fileID: 158100308}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &62777201
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 62777202}
+ - component: {fileID: 62777203}
+ m_Layer: 5
+ m_Name: '[Shoes] Right'
+ m_TagString: Shooes
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &62777202
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 62777201}
+ 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: 289301848}
+ - {fileID: 498946761}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 9
+ 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: 2.4, y: -2.63}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &62777203
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 62777201}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &75109852
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1903967818133664, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 75109853}
+ - component: {fileID: 75109854}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &75109853
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4700410826160140, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 75109852}
+ m_LocalRotation: {x: -0.19123267, y: -0.055678543, z: 0.07900553, w: 0.97677433}
+ m_LocalPosition: {x: -0.23825322, y: 0.31311387, z: -0.03890297}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 772892186}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -1.7105999, z: -8.6391}
+--- !u!136 &75109854
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136023256047386040, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 75109852}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.025400002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &77031042
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1212056537696620, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 77031043}
+ - component: {fileID: 77031045}
+ - component: {fileID: 77031044}
+ m_Layer: 0
+ m_Name: Controller (Left)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &77031043
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4865555683628974, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 77031042}
+ 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: 1325915190}
+ m_Father: {fileID: 419494050}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &77031044
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114921673225235952, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 77031042}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &77031045
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114100808945921500, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 77031042}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 666f106f8ad384d499459fa8df2e9301, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &80345381
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1903212703384076, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 80345382}
+ - component: {fileID: 80345383}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &80345382
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4224837930104486, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 80345381}
+ m_LocalRotation: {x: 0.18438557, y: -0.10542023, z: 0.17531344, w: -0.9613292}
+ m_LocalPosition: {x: 0.2514498, y: 0.2826522, z: -0.09308395}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1516915512}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 9.6658, z: 0}
+--- !u!136 &80345383
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136034649849060750, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 80345381}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.047780003
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &83942686
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1194369787111610, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 83942687}
+ - component: {fileID: 83942688}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &83942687
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4452855355212552, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 83942686}
+ m_LocalRotation: {x: -0.20731795, y: 0.0090306, z: 0.027792262, w: 0.9778371}
+ m_LocalPosition: {x: -0.20662303, y: 0.3090629, z: -0.06791538}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 814415650}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 7.0464997, z: -11.571899}
+--- !u!136 &83942688
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136245211851905174, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 83942686}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.03365
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &84337006
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1469459356226748, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 84337007}
+ - component: {fileID: 84337008}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &84337007
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4142989794410874, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 84337006}
+ m_LocalRotation: {x: 0.20731795, y: 0.00903069, z: 0.027791852, w: -0.9778371}
+ m_LocalPosition: {x: 0.20682843, y: 0.29545978, z: -0.09853935}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1299871813}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -7.0464997, z: 11.571899}
+--- !u!136 &84337008
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136085305415601956, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 84337006}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.049370002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &93853989
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1247108362005094, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 93853990}
+ - component: {fileID: 93853991}
+ m_Layer: 0
+ m_Name: Oculus
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &93853990
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4370747249168110, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 93853989}
+ 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: 2031144553}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &93853991
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114143306831425858, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 93853989}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 1
+ actualBoundaries: {fileID: 0}
+ actualHeadset: {fileID: 0}
+ actualLeftController: {fileID: 0}
+ actualRightController: {fileID: 0}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 0}
+ modelAliasRightController: {fileID: 0}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_OculusSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_OculusBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_OculusHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_OculusController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_FallbackTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_LeapMotionHand
+ descriptionIndex: 0
+--- !u!1 &108752127 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 159396, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &111077810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 111077816}
+ - component: {fileID: 111077815}
+ - component: {fileID: 111077814}
+ - component: {fileID: 111077813}
+ - component: {fileID: 111077812}
+ - component: {fileID: 111077811}
+ m_Layer: 0
+ m_Name: Head Joint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!138 &111077811
+FixedJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ m_ConnectedBody: {fileID: 1284476404}
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 1
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &111077812
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &111077813
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ m_Enabled: 0
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!135 &111077814
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &111077815
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &111077816
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 111077810}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 2.5, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1630150759}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &114135777
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 114135778}
+ - component: {fileID: 114135780}
+ - component: {fileID: 114135779}
+ m_Layer: 5
+ m_Name: tactshoes_left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &114135778
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114135777}
+ 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: 1689996211}
+ 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.55999947, y: 0.19999886}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &114135779
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114135777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 3d5b6c987f355ab46a5a03ef89167c59, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &114135780
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114135777}
+--- !u!1 &114522028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1707382520060588, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 114522029}
+ - component: {fileID: 114522031}
+ - component: {fileID: 114522030}
+ m_Layer: 5
+ m_Name: Control Hints
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &114522029
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224305327248111550, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114522028}
+ 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: 584085275}
+ m_Father: {fileID: 1152297872}
+ 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 &114522030
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114254209494874826, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114522028}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 10
+ m_Right: 0
+ m_Top: 10
+ m_Bottom: 0
+ m_ChildAlignment: 0
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 1
+--- !u!222 &114522031
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222613451191167698, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 114522028}
+--- !u!1 &119782594
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 119782600}
+ - component: {fileID: 119782599}
+ - component: {fileID: 119782598}
+ - component: {fileID: 119782597}
+ - component: {fileID: 119782596}
+ - component: {fileID: 119782595}
+ m_Layer: 0
+ m_Name: Hand Joint (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!138 &119782595
+FixedJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ m_ConnectedBody: {fileID: 1284476446}
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 1
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &119782596
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &119782597
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ m_Enabled: 0
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!135 &119782598
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &119782599
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &119782600
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 119782594}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0.803, y: 1.575, z: 0.031}
+ m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 1630150759}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &122454695
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 122454696}
+ - component: {fileID: 122454698}
+ - component: {fileID: 122454697}
+ m_Layer: 5
+ m_Name: Item Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &122454696
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 122454695}
+ 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: 1953535382}
+ 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 &122454697
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 122454695}
+ 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.9607843, g: 0.9607843, b: 0.9607843, 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: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &122454698
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 122454695}
+--- !u!1 &134130427
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100064, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 134130428}
+ m_Layer: 0
+ m_Name: LeftToe_End
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &134130428
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400064, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134130427}
+ m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.000000002053664, y: 0.000000009634096, z: 0.09992521}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 40297912}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &134775171
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1250541400732158, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 134775172}
+ - component: {fileID: 134775174}
+ - component: {fileID: 134775173}
+ m_Layer: 0
+ m_Name: Controller (Right)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &134775172
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4820740285754844, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134775171}
+ 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: 1147874358}
+ m_Father: {fileID: 419494050}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &134775173
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114955743664507548, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134775171}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &134775174
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114208647081064652, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134775171}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 666f106f8ad384d499459fa8df2e9301, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &137000813
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1015481899568480, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 137000814}
+ - component: {fileID: 137000815}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &137000814
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4929339282829394, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 137000813}
+ m_LocalRotation: {x: 0.15511838, y: -0.22281167, z: 0.71685785, w: -0.6421901}
+ m_LocalPosition: {x: 0.27401513, y: 0.22215089, z: -0.09655133}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1542414820}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 24.403599, y: 35.2679, z: -62.080498}
+--- !u!136 &137000815
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136142363240077270, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 137000813}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.02967
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &140898220
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1041846503669346, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 140898221}
+ - component: {fileID: 140898222}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &140898221
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4660273544129030, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 140898220}
+ m_LocalRotation: {x: 0.19123271, y: -0.05567847, z: 0.07900512, w: -0.9767744}
+ m_LocalPosition: {x: 0.23028272, y: 0.29219556, z: -0.09169823}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1627909957}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 1.7105999, z: 8.6391}
+--- !u!136 &140898222
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136650095204003834, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 140898220}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.052630004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &147963451
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 147963452}
+ - component: {fileID: 147963454}
+ - component: {fileID: 147963453}
+ m_Layer: 5
+ m_Name: tactglove_right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &147963452
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 147963451}
+ 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: 514078125}
+ 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: 1.1700001, y: 0.67999935}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &147963453
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 147963451}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: f829abb8eb45bfb408c8c3a8e673d569, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &147963454
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 147963451}
+--- !u!1 &152480867
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 152480868}
+ - component: {fileID: 152480869}
+ m_Layer: 5
+ m_Name: '[Tot] Back'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &152480868
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 152480867}
+ 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: 1240601296}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 5
+ 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: 2.09, y: 2.48}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &152480869
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 152480867}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &158100307
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100014, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 158100308}
+ m_Layer: 0
+ m_Name: LeftFoot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &158100308
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400014, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 158100307}
+ m_LocalRotation: {x: -0.000018015498, y: -0.00000010461389, z: -0.0000000013931898,
+ w: 1}
+ m_LocalPosition: {x: 0.002446696, y: -0.42047998, z: -0.020576412}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 40297912}
+ m_Father: {fileID: 1284476437}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &176951932
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: -0.601
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: 1.261
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 1.442
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 180
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: 'Right Hand
+
+ Vive'
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Right Hand Help Text
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.x
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.z
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.y
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &176951933 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 176951932}
+--- !u!1 &212498739
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1448860657120800, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 212498740}
+ - component: {fileID: 212498743}
+ - component: {fileID: 212498742}
+ - component: {fileID: 212498741}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &212498740
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224808776499197216, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 212498739}
+ 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: 584085275}
+ 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: 10, y: 10}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &212498741
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114850898494755026, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 212498739}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreLayout: 1
+ m_MinWidth: -1
+ m_MinHeight: -1
+ m_PreferredWidth: -1
+ m_PreferredHeight: -1
+ m_FlexibleWidth: -1
+ m_FlexibleHeight: -1
+ m_LayoutPriority: 1
+--- !u!114 &212498742
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114658427462144108, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 212498739}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ 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_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: 10917, 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
+--- !u!222 &212498743
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222383023982389702, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 212498739}
+--- !u!1 &218380962
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 218380968}
+ - component: {fileID: 218380967}
+ - component: {fileID: 218380966}
+ - component: {fileID: 218380965}
+ - component: {fileID: 218380964}
+ - component: {fileID: 218380963}
+ m_Layer: 0
+ m_Name: Hand Joint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!138 &218380963
+FixedJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ m_ConnectedBody: {fileID: 1284476445}
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 1
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &218380964
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &218380965
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ m_Enabled: 0
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!135 &218380966
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &218380967
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &218380968
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 218380962}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.828, y: 1.536, z: -0.114}
+ m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 1630150759}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &232443417
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 232443418}
+ - component: {fileID: 232443420}
+ - component: {fileID: 232443419}
+ m_Layer: 5
+ m_Name: Arrow
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &232443418
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 232443417}
+ 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: 235736792}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -15, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &232443419
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 232443417}
+ 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: 10915, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &232443420
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 232443417}
+--- !u!1 &234960657 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 124034, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &235736791
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 235736792}
+ - component: {fileID: 235736795}
+ - component: {fileID: 235736794}
+ - component: {fileID: 235736793}
+ m_Layer: 5
+ m_Name: Pattern Dropdown
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &235736792
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 235736791}
+ 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: 1165664733}
+ - {fileID: 232443418}
+ - {fileID: 689336098}
+ m_Father: {fileID: 1342166475}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &235736793
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 235736791}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 853051423, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 235736794}
+ m_Template: {fileID: 689336098}
+ m_CaptionText: {fileID: 1165664734}
+ m_CaptionImage: {fileID: 0}
+ m_ItemText: {fileID: 1928526049}
+ m_ItemImage: {fileID: 0}
+ m_Value: 0
+ m_Options:
+ m_Options:
+ - m_Text: Option A
+ m_Image: {fileID: 0}
+ - m_Text: Option B
+ m_Image: {fileID: 0}
+ - m_Text: Option C
+ m_Image: {fileID: 0}
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1342166476}
+ m_MethodName: DropdownPatternSelection
+ m_Mode: 2
+ m_Arguments:
+ m_ObjectArgument: {fileID: 235736793}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.UI.Dropdown, UnityEngine.UI
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Dropdown+DropdownEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &235736794
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 235736791}
+ 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
+--- !u!222 &235736795
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 235736791}
+--- !u!1 &257065412
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1573585642572252, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 257065414}
+ - component: {fileID: 257065413}
+ m_Layer: 0
+ m_Name: '[VRTK_SDKManager]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &257065413
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114753725440379030, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 257065412}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5837af0260a118e4d808bfe0405429a1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoManageScriptDefines: 1
+ activeScriptingDefineSymbolsWithoutSDKClasses:
+ - symbol: VRTK_DEFINE_SDK_BHAPTICS
+ buildTargetGroupName: Standalone
+ scriptAliasLeftController: {fileID: 1155796738}
+ scriptAliasRightController: {fileID: 716242861}
+ autoManageVRSettings: 1
+ autoLoadSetup: 1
+ setups:
+ - {fileID: 93853991}
+ - {fileID: 317598317}
+ - {fileID: 1380104170}
+ - {fileID: 457387806}
+ - {fileID: 930465346}
+ excludeTargetGroups: 1a0000001b000000
+ persistOnLoad: 0
+--- !u!4 &257065414
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4056409321884894, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 257065412}
+ 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: 1532369071}
+ m_Father: {fileID: 0}
+ m_RootOrder: 9
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &289301847
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 289301848}
+ - component: {fileID: 289301850}
+ - component: {fileID: 289301849}
+ m_Layer: 5
+ m_Name: tactshoes_left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &289301848
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 289301847}
+ 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: 62777202}
+ 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: -5.4, y: 0.20000076}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &289301849
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 289301847}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 3d5b6c987f355ab46a5a03ef89167c59, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &289301850
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 289301847}
+--- !u!1 &296436640
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1216735881122272, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 296436641}
+ - component: {fileID: 296436642}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &296436641
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4502273016313764, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 296436640}
+ m_LocalRotation: {x: -0.15511829, y: -0.22281176, z: 0.7168581, w: 0.6421898}
+ m_LocalPosition: {x: -0.2740153, y: 0.22215065, z: -0.09655133}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 663617232}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 24.403599, y: -35.2679, z: 62.080498}
+--- !u!136 &296436642
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136059134272725212, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 296436640}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.02967
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &304869208
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 304869209}
+ m_Layer: 0
+ m_Name: '[VRTK_Scripts]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &304869209
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 304869208}
+ 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: 1155796739}
+ - {fileID: 716242862}
+ m_Father: {fileID: 0}
+ m_RootOrder: 7
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &316364392
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 316364393}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &316364393
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 316364392}
+ 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: 2005560391}
+ m_Father: {fileID: 1613062976}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 28}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!1 &317598315
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1155113487749076, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 317598316}
+ - component: {fileID: 317598317}
+ m_Layer: 0
+ m_Name: SteamVR
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &317598316
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4253339659736150, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 317598315}
+ 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: 728662089}
+ - {fileID: 334683060}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &317598317
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114268859023028438, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 317598315}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 1
+ actualBoundaries: {fileID: 728662088}
+ actualHeadset: {fileID: 1518809420}
+ actualLeftController: {fileID: 234960657}
+ actualRightController: {fileID: 108752127}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 1836021409}
+ modelAliasRightController: {fileID: 1273873653}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_SteamVRSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_SteamVRBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_SteamVRHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_SteamVRController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_SteamVRTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_NoHand
+ descriptionIndex: 0
+--- !u!1 &334683059
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1335919602198244, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 334683060}
+ - component: {fileID: 334683061}
+ m_Layer: 0
+ m_Name: '[SteamVR]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &334683060
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4831887068810232, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 334683059}
+ 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: 317598316}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &334683061
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114699381408867346, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 334683059}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e979227f3384fac4b8ca0b3550bf005c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ externalCamera: {fileID: 0}
+ externalCameraConfigPath: externalcamera.cfg
+--- !u!1 &343410512
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 343410513}
+ - component: {fileID: 343410515}
+ - component: {fileID: 343410514}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &343410513
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 343410512}
+ 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: 1334421953}
+ 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 &343410514
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 343410512}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Play Haptics
+--- !u!222 &343410515
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 343410512}
+--- !u!1 &359452183
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1400843197843814, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 359452184}
+ - component: {fileID: 359452186}
+ - component: {fileID: 359452185}
+ m_Layer: 0
+ m_Name: Capsule Hand Right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &359452184
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4322766919459398, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359452183}
+ m_LocalRotation: {x: 0.000000115202326, y: -0.7071067, z: -0.7071068, w: -0.00000011520231}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 444716542}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: -89.980194, y: 180, z: 0}
+--- !u!114 &359452185
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114348116680822976, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359452183}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8bcd03e00992e084c8be61565d44b8bd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &359452186
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114321299249112246, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359452183}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a04122797dd84ca43a07055f12d91e0f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &371949126
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1651281340082060, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 371949127}
+ - component: {fileID: 371949129}
+ - component: {fileID: 371949128}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &371949127
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4475980625765350, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 371949126}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0.800004}
+ m_LocalScale: {x: 0.08000002, y: 0.08000001, z: 0.80000013}
+ m_Children: []
+ m_Father: {fileID: 648673135}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &371949128
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23942193348524890, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 371949126}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &371949129
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33225022897612286, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 371949126}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &391178166
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1769053551462624, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 391178167}
+ - component: {fileID: 391178168}
+ m_Layer: 0
+ m_Name: AttachPoint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &391178167
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4188363941038158, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 391178166}
+ 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: 930951566}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!54 &391178168
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 54990021373575528, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 391178166}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!1 &394221902
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 394221905}
+ - component: {fileID: 394221904}
+ - component: {fileID: 394221903}
+ m_Layer: 5
+ m_Name: Item Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &394221903
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 394221902}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Option A
+--- !u!222 &394221904
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 394221902}
+--- !u!224 &394221905
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 394221902}
+ 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: 1953535382}
+ 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: 5, y: -0.5}
+ m_SizeDelta: {x: -30, y: -3}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &404715962
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1991782692603726, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 404715963}
+ - component: {fileID: 404715964}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &404715963
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4533335261981272, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 404715962}
+ m_LocalRotation: {x: 0.15511838, y: -0.22281167, z: 0.71685785, w: -0.6421901}
+ m_LocalPosition: {x: 0.260477, y: 0.22535107, z: -0.1192472}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1542414820}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 24.403599, y: 35.2679, z: -62.080498}
+--- !u!136 &404715964
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136296273948937674, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 404715962}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.039570004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &411771057
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 411771058}
+ - component: {fileID: 411771060}
+ - component: {fileID: 411771059}
+ m_Layer: 8
+ m_Name: LeftForearmModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &411771058
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411771057}
+ m_LocalRotation: {x: 0.0000000055166502, y: 0.0000000055166636, z: 0.7071068, w: 0.7071068}
+ m_LocalPosition: {x: -0.1361, y: 0, z: 0}
+ m_LocalScale: {x: 0.12000012, y: 0.14000012, z: 0.12}
+ m_Children: []
+ m_Father: {fileID: 1284476444}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+--- !u!23 &411771059
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411771057}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &411771060
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411771057}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &419494049
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1684623231336640, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 419494050}
+ - component: {fileID: 419494052}
+ - component: {fileID: 419494051}
+ m_Layer: 0
+ m_Name: ControllerManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &419494050
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4068599883126506, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 419494049}
+ 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: 77031043}
+ - {fileID: 134775172}
+ m_Father: {fileID: 618659444}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &419494051
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114839601185984422, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 419494049}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &419494052
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114145648023286692, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 419494049}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3e1ce31d654631d43baf0c1ca39fcdff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &438065899
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1105698837829572, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 438065900}
+ - component: {fileID: 438065901}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &438065900
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4401234900509184, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 438065899}
+ m_LocalRotation: {x: 0.20731795, y: 0.00903069, z: 0.027791852, w: -0.9778371}
+ m_LocalPosition: {x: 0.20662276, y: 0.3090631, z: -0.06791538}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1299871813}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -7.0464997, z: 11.571899}
+--- !u!136 &438065901
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136246960581764738, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 438065899}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.03365
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &444716541
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1619615446804074, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 444716542}
+ m_Layer: 0
+ m_Name: Capsule Hands
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &444716542
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4282954864090846, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 444716541}
+ 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: 900486433}
+ - {fileID: 359452184}
+ m_Father: {fileID: 1563294226}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &448739078
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1136459744171206, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 448739079}
+ - component: {fileID: 448739081}
+ - component: {fileID: 448739080}
+ m_Layer: 0
+ m_Name: LeftHand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &448739079
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4373862919206056, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 448739078}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0.2, y: 1.2, z: 0.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 473796923}
+ - {fileID: 584560471}
+ m_Father: {fileID: 669998280}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &448739080
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114928006183831410, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 448739078}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &448739081
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114746264877403140, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 448739078}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0893f0c8a7712e8458dc3722eef95aca, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ selected: 0
+--- !u!1 &450860296
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1244666593593096, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 450860297}
+ m_Layer: 0
+ m_Name: LeftHandAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &450860297
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4385892666093362, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 450860296}
+ 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: 1707304023}
+ m_Father: {fileID: 1288073601}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &454177224
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1417231919781024, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 454177225}
+ - component: {fileID: 454177227}
+ - component: {fileID: 454177226}
+ m_Layer: 0
+ m_Name: VerticalPlane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &454177225
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4119479756697708, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 454177224}
+ m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.1, y: 0.00001, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 661146616}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!23 &454177226
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23328950667591426, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 454177224}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5074e50ed3f02f64ab7f39096a5590bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &454177227
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33867013637699194, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 454177224}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &457387804
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1786545551724282, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 457387805}
+ - component: {fileID: 457387806}
+ m_Layer: 0
+ m_Name: WindowsMR
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &457387805
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4893396583408570, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 457387804}
+ 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: 618659444}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &457387806
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114026570853678028, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 457387804}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 0
+ actualBoundaries: {fileID: 618659443}
+ actualHeadset: {fileID: 1430808219}
+ actualLeftController: {fileID: 77031042}
+ actualRightController: {fileID: 134775171}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 1325915189}
+ modelAliasRightController: {fileID: 1147874357}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_WindowsMR
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_WindowsMRBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_WindowsMRHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_WindowsMRController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_FallbackTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_FallbackHand
+ descriptionIndex: 0
+--- !u!1 &473796922
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1504681646819904, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 473796923}
+ - component: {fileID: 473796925}
+ - component: {fileID: 473796924}
+ m_Layer: 0
+ m_Name: Hand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &473796923
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4147229079044952, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 473796922}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -0}
+ m_LocalScale: {x: 0.025, y: 0.025, z: 0.025}
+ m_Children:
+ - {fileID: 1227837643}
+ m_Father: {fileID: 448739079}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &473796924
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23010861614429216, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 473796922}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 2100000, guid: 167fe894cb53b584bbce353eb367fbda, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &473796925
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33597786634356256, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 473796922}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1001 &477211993
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: -0.601
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: 0.621
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 1.1900024
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 487
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 180
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: 'Right Forearm
+
+ BHaptics'
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Left Forearm Help Text (1)
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.x
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.z
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.y
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 487
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 487
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &477211994 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 477211993}
+--- !u!1001 &494241449
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: -0.601
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 4
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: -0.622
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 1.19
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 474.9
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 180
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: 'Left Forearm
+
+ BHaptics'
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Left Forearm Help Text
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.x
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.z
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.y
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 251.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 474.9
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 474.9
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &494241450 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 494241449}
+--- !u!1 &498946760
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 498946761}
+ - component: {fileID: 498946763}
+ - component: {fileID: 498946762}
+ m_Layer: 5
+ m_Name: tactshoes_right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &498946761
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 498946760}
+ 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: 62777202}
+ 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.5999999, y: 0.20000076}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &498946762
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 498946760}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 6c318c39e5dd83c42ade86630def5356, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &498946763
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 498946760}
+--- !u!1 &514078124
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 514078125}
+ - component: {fileID: 514078126}
+ m_Layer: 5
+ m_Name: '[Glove] Right'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &514078125
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 514078124}
+ 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: 1947528022}
+ - {fileID: 147963452}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 7
+ 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: 8.19, y: -3.11}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &514078126
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 514078124}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &538772791
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1058056810139098, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 538772792}
+ - component: {fileID: 538772793}
+ m_Layer: 0
+ m_Name: palm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &538772792
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4937817609411244, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 538772791}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.0818, y: 0.1158, z: -0.0115}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1756296556}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &538772793
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 65880118717106682, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 538772791}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 0.06, y: 0.02, z: 0.07}
+ m_Center: {x: 0, y: 0, z: -0.005}
+--- !u!1 &545000209
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 545000210}
+ - component: {fileID: 545000212}
+ - component: {fileID: 545000211}
+ m_Layer: 5
+ m_Name: tactglove_right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &545000210
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 545000209}
+ 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: 1992577263}
+ 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: 19.89, y: 0.67999935}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &545000211
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 545000209}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: f829abb8eb45bfb408c8c3a8e673d569, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &545000212
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 545000209}
+--- !u!1 &559557195
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1469947891403574, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 559557196}
+ m_Layer: 0
+ m_Name: TrackerAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &559557196
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4910676698546976, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 559557195}
+ 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: 1288073601}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &584085274
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1597676099965282, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 584085275}
+ - component: {fileID: 584085277}
+ - component: {fileID: 584085276}
+ m_Layer: 5
+ m_Name: Panel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &584085275
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224053319487576386, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 584085274}
+ 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: 212498740}
+ - {fileID: 2133304075}
+ m_Father: {fileID: 114522029}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 51, y: -18}
+ m_SizeDelta: {x: 82, y: 16}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &584085276
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114742504230969498, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 584085274}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 1
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 1
+--- !u!222 &584085277
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222327102156038586, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 584085274}
+--- !u!1 &584560470
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1865430158937836, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 584560471}
+ m_Layer: 0
+ m_Name: Guides
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &584560471
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4233458838164276, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 584560470}
+ 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: 1701685733}
+ - {fileID: 1611547332}
+ m_Father: {fileID: 448739079}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &588126220
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1078755043845854, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 588126221}
+ - component: {fileID: 588126222}
+ m_Layer: 0
+ m_Name: AttachPoint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &588126221
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4516849557337434, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 588126220}
+ 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: 863184525}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!54 &588126222
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 54071174914263672, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 588126220}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!1 &603351672
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1168690500971056, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 603351673}
+ - component: {fileID: 603351674}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &603351673
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4230833658733692, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 603351672}
+ m_LocalRotation: {x: 0.18438557, y: -0.10542023, z: 0.17531344, w: -0.9613292}
+ m_LocalPosition: {x: 0.25975862, y: 0.29252154, z: -0.0648081}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1516915512}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 9.6658, z: 0}
+--- !u!136 &603351674
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136295908951582362, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 603351672}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.03038
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &611413202
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 611413203}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &611413203
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 611413202}
+ 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: 1423808482}
+ m_Father: {fileID: 1924638392}
+ 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: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &617351938
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 617351939}
+ - component: {fileID: 617351941}
+ - component: {fileID: 617351940}
+ m_Layer: 5
+ m_Name: bhaptics-background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &617351939
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 617351938}
+ 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: 1506764931}
+ 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: 3}
+ m_SizeDelta: {x: 32, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &617351940
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 617351938}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 28dbec185ab0b764fbcf7a3d04402f9f, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &617351941
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 617351938}
+--- !u!1 &618659443
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1707210071468292, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 618659444}
+ m_Layer: 0
+ m_Name: '[WindowsMR_CameraRig]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &618659444
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4706214930644432, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 618659443}
+ 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: 1430808220}
+ - {fileID: 419494050}
+ m_Father: {fileID: 457387805}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &625649193
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 625649194}
+ - component: {fileID: 625649195}
+ m_Layer: 0
+ m_Name: Left TACTOSY
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &625649194
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 625649193}
+ 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: 1906596484}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &625649195
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 625649193}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b66cbf23014e0364fb0c144eb87cb5ba, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ affectedBodyPart: {fileID: 11400000, guid: cb48685e7bd87e047a590c721468df91, type: 2}
+ hapticDuration: 100
+ hapticSystemInfo:
+ systemName: Bhaptics
+ deviceName: Left TACTOSY
+ affectedBodyFileLocation: BodyCoordinates/LeftForearm
+ connectedSDKTypeName:
+ bhapticsMapping: {fileID: 11400000, guid: 7c6ecbdc42e31ab4db2f3a1ea04b3da9, type: 2}
+--- !u!1 &632842903
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 632842904}
+ - component: {fileID: 632842905}
+ m_Layer: 0
+ m_Name: Right Controller
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &632842904
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 632842903}
+ 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: 1368876434}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &632842905
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 632842903}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5c0be7d8c5eaf734ba7c5cc56c7cc00d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ affectedBodyPart: {fileID: 11400000, guid: 6b0659655d60c6a4287ec4f3c9b2d83b, type: 2}
+ hapticDuration: 100
+ hapticSystemInfo:
+ systemName: Vive
+ deviceName: Right Controller
+ affectedBodyFileLocation: BodyCoordinates/RightHand
+ connectedSDKTypeName: VRTK.SDK_SteamVRController, Assembly-CSharp, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ vibration:
+ actionPath:
+ needsReinit: 0
+ frequency: 100
+ isRightController: 1
+--- !u!1 &634997059
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 634997060}
+ - component: {fileID: 634997062}
+ - component: {fileID: 634997061}
+ m_Layer: 5
+ m_Name: tactglove_left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &634997060
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 634997059}
+ 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: 1992577263}
+ 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: 1.170002, y: 0.6799991}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &634997061
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 634997059}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 65de9deb6699d1e438e3b78d26840493, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &634997062
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 634997059}
+--- !u!1 &640547552
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 640547553}
+ - component: {fileID: 640547555}
+ - component: {fileID: 640547554}
+ m_Layer: 5
+ m_Name: Item Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &640547553
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 640547552}
+ 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: 2005560391}
+ 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 &640547554
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 640547552}
+ 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.9607843, g: 0.9607843, b: 0.9607843, 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: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &640547555
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 640547552}
+--- !u!1 &640791810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1913793885614386, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 640791811}
+ - component: {fileID: 640791812}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &640791811
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4555523503177122, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 640791810}
+ m_LocalRotation: {x: -0.15511829, y: -0.22281176, z: 0.7168581, w: 0.6421898}
+ m_LocalPosition: {x: -0.2604772, y: 0.22535086, z: -0.1192472}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 663617232}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 24.403599, y: -35.2679, z: 62.080498}
+--- !u!136 &640791812
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136941521936107334, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 640791810}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.039570004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &648673132
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1460125336803618, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 648673135}
+ - component: {fileID: 648673134}
+ - component: {fileID: 648673133}
+ m_Layer: 0
+ m_Name: Hand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!23 &648673133
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23478801334923202, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 648673132}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 2100000, guid: 167fe894cb53b584bbce353eb367fbda, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &648673134
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33433640222341766, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 648673132}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &648673135
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4035418218858506, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 648673132}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.025, y: 0.025, z: 0.025}
+ m_Children:
+ - {fileID: 371949127}
+ m_Father: {fileID: 2137910512}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &653952131
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 653952133}
+ - component: {fileID: 653952132}
+ m_Layer: 0
+ m_Name: '[bHapticsManager]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &653952132
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 653952131}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4f3087c4f0343446a5a7a3f238d4611, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!4 &653952133
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 653952131}
+ 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: 1006506396}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &661146615
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1596631767448288, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 661146616}
+ m_Layer: 0
+ m_Name: Guides
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &661146616
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4409546273568774, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 661146615}
+ 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: 974857488}
+ - {fileID: 454177225}
+ m_Father: {fileID: 2137910512}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &663617231
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1936414623020992, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 663617232}
+ - component: {fileID: 663617233}
+ m_Layer: 0
+ m_Name: thumb
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &663617232
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4073106246790308, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 663617231}
+ 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: 704690296}
+ - {fileID: 640791811}
+ - {fileID: 296436641}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &663617233
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114008108079145074, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 663617231}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &669998279
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1120466931571954, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 669998280}
+ - component: {fileID: 669998281}
+ m_Layer: 0
+ m_Name: '[VRSimulator_CameraRig]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &669998280
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4965971849994896, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 669998279}
+ 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: 1152297872}
+ - {fileID: 1537547127}
+ - {fileID: 448739079}
+ - {fileID: 2137910512}
+ m_Father: {fileID: 930465347}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &669998281
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114481269283045112, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 669998279}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 52d0ccd621417664ca1f1123b9488a27, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ showControlHints: 1
+ hideHandsAtSwitch: 0
+ resetHandsAtSwitch: 1
+ showHandAxisHelpers: 1
+ lockMouseToView: 1
+ mouseMovementInput: 0
+ handMoveMultiplier: 0.2
+ handRotationMultiplier: 30
+ playerMoveMultiplier: 5
+ playerRotationMultiplier: 0.5
+ playerSprintMultiplier: 2
+ lockedCursorMultiplier: 5
+ leftHandColor: {r: 1, g: 0, b: 0, a: 1}
+ rightHandColor: {r: 0, g: 1, b: 0, a: 1}
+ mouseMovementKey: 325
+ toggleControlHints: 282
+ toggleMouseLock: 285
+ changeHands: 9
+ handsOnOff: 308
+ rotationPosition: 304
+ changeAxis: 306
+ distancePickupLeft: 323
+ distancePickupRight: 324
+ distancePickupModifier: 306
+ moveForward: 119
+ moveLeft: 97
+ moveBackward: 115
+ moveRight: 100
+ sprint: 304
+ triggerAlias: 324
+ gripAlias: 323
+ touchpadAlias: 113
+ buttonOneAlias: 101
+ buttonTwoAlias: 114
+ startMenuAlias: 102
+ touchModifier: 116
+ hairTouchModifier: 104
+--- !u!1 &688036711
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 688036712}
+ m_Layer: 0
+ m_Name: World
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &688036712
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 688036711}
+ 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: 37548868}
+ - {fileID: 1910505374}
+ - {fileID: 1783872185}
+ - {fileID: 1841587747}
+ - {fileID: 1650197131}
+ - {fileID: 1792996288}
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &689336097
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 689336098}
+ - component: {fileID: 689336101}
+ - component: {fileID: 689336100}
+ - component: {fileID: 689336099}
+ m_Layer: 5
+ m_Name: Template
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &689336098
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 689336097}
+ 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: 1613062976}
+ - {fileID: 1125272728}
+ m_Father: {fileID: 235736792}
+ 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: 2}
+ m_SizeDelta: {x: 0, y: 150}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!114 &689336099
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 689336097}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 316364393}
+ m_Horizontal: 0
+ m_Vertical: 1
+ m_MovementType: 2
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 16
+ m_Viewport: {fileID: 1613062976}
+ m_HorizontalScrollbar: {fileID: 0}
+ m_VerticalScrollbar: {fileID: 1125272729}
+ m_HorizontalScrollbarVisibility: 0
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: 0
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &689336100
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 689336097}
+ 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
+--- !u!222 &689336101
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 689336097}
+--- !u!1 &704690295
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1617939801711994, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 704690296}
+ - component: {fileID: 704690297}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &704690296
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4347552161531878, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 704690295}
+ m_LocalRotation: {x: -0.15511829, y: -0.22281176, z: 0.7168581, w: 0.6421898}
+ m_LocalPosition: {x: -0.24069634, y: 0.23002677, z: -0.15240854}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 663617232}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 24.403599, y: -35.2679, z: 62.080498}
+--- !u!136 &704690297
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136336396805092656, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 704690295}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.054220006
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &716242861
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 716242862}
+ - component: {fileID: 716242866}
+ - component: {fileID: 716242865}
+ - component: {fileID: 716242864}
+ - component: {fileID: 716242863}
+ m_Layer: 0
+ m_Name: RightControllerScriptAlias
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &716242862
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 716242861}
+ 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: 304869209}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &716242863
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 716242861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 0}
+ controllerEvents: {fileID: 0}
+ interactTouch: {fileID: 0}
+--- !u!114 &716242864
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 716242861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 0}
+ interactTouch: {fileID: 0}
+ interactGrab: {fileID: 0}
+--- !u!114 &716242865
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 716242861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 0}
+--- !u!114 &716242866
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 716242861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eba3cd5456cd79e49948f5ceb58544b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+--- !u!1 &718784007
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1308800263517120, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 718784008}
+ - component: {fileID: 718784009}
+ m_Layer: 0
+ m_Name: LeftEyeAnchor
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &718784008
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4595634873818428, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 718784007}
+ 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: 1288073601}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &718784009
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20337578737832174, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 718784007}
+ m_Enabled: 0
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 1
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!1 &724699685
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1447367261343084, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 724699686}
+ - component: {fileID: 724699691}
+ - component: {fileID: 724699690}
+ - component: {fileID: 724699689}
+ - component: {fileID: 724699688}
+ - component: {fileID: 724699687}
+ m_Layer: 0
+ m_Name: Head
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &724699686
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4510259370964428, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ 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: 2024778040}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &724699687
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114791458514799584, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &724699688
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114781073883826116, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ddd61e3d890b46740a8f450ba5a27aa3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!81 &724699689
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 81642823576855584, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ m_Enabled: 1
+--- !u!124 &724699690
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 124062955869902324, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ m_Enabled: 1
+--- !u!20 &724699691
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20973667912095906, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 724699685}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.05
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!1 &728662088 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 146900, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!4 &728662089 stripped
+Transform:
+ m_PrefabParentObject: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &768331923
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 768331924}
+ - component: {fileID: 768331927}
+ - component: {fileID: 768331926}
+ - component: {fileID: 768331925}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &768331924
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 768331923}
+ 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: 789891344}
+ m_Father: {fileID: 2118958340}
+ 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: -17, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!114 &768331925
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 768331923}
+ 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: 10917, 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
+--- !u!222 &768331926
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 768331923}
+--- !u!114 &768331927
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 768331923}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!1 &772892185
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1878816027686210, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 772892186}
+ - component: {fileID: 772892187}
+ m_Layer: 0
+ m_Name: middle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &772892186
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4302516232365288, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 772892185}
+ 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: 1352095974}
+ - {fileID: 1840722477}
+ - {fileID: 75109853}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &772892187
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114502366536740890, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 772892185}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &776113109
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1874675347595454, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 776113110}
+ - component: {fileID: 776113112}
+ - component: {fileID: 776113111}
+ m_Layer: 0
+ m_Name: Leap Service Provider
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &776113110
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4958595387033106, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 776113109}
+ 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: 791481508}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &776113111
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20080248610181042, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 776113109}
+ m_Enabled: 0
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!114 &776113112
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114308172612242388, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 776113109}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: abb0e8dd6c809854f8fea5e0976884f8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &777583214
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1443261470633526, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 777583215}
+ - component: {fileID: 777583216}
+ m_Layer: 0
+ m_Name: pinky
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &777583215
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4104046538619828, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 777583214}
+ 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: 821959790}
+ - {fileID: 37851355}
+ - {fileID: 2062698094}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &777583216
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114268276142451162, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 777583214}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &786639310
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1087802710260426, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 786639311}
+ - component: {fileID: 786639312}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &786639311
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4292867884886830, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 786639310}
+ m_LocalRotation: {x: -0.1843855, y: -0.10542028, z: 0.17531382, w: 0.9613291}
+ m_LocalPosition: {x: -0.25975886, y: 0.2925213, z: -0.0648081}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1641913276}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -9.6659, z: 0}
+--- !u!136 &786639312
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136878859812035548, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 786639310}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.03038
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &789891343
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 789891344}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &789891344
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 789891343}
+ 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: 1953535382}
+ m_Father: {fileID: 768331924}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 28}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!1 &791481507
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1437707902571696, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 791481508}
+ - component: {fileID: 791481509}
+ m_Layer: 0
+ m_Name: Leap Motion
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &791481508
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4796957222874418, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 791481507}
+ 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: 776113110}
+ - {fileID: 1563294226}
+ - {fileID: 1806969734}
+ m_Father: {fileID: 1004409024}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &791481509
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114480927189018136, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 791481507}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fb8f8839ee256bb458e1657c1ee40572, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &801088930
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1726544739789060, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 801088931}
+ - component: {fileID: 801088932}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &801088931
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4010605441118318, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 801088930}
+ m_LocalRotation: {x: 0.18438557, y: -0.10542023, z: 0.17531344, w: -0.9613292}
+ m_LocalPosition: {x: 0.2648648, y: 0.2985867, z: -0.04743135}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1516915512}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 9.6658, z: 0}
+--- !u!136 &801088932
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136940396560105424, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 801088930}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.023820002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &807001122
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1735374127352810, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 807001123}
+ - component: {fileID: 807001124}
+ m_Layer: 0
+ m_Name: pinky
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &807001123
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4872884040893530, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 807001122}
+ 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: 1468879366}
+ - {fileID: 851141629}
+ - {fileID: 835756278}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &807001124
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114527949847707826, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 807001122}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &814415649
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1858662757229848, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 814415650}
+ - component: {fileID: 814415651}
+ m_Layer: 0
+ m_Name: ring
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &814415650
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4287379973110144, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 814415649}
+ 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: 1827742811}
+ - {fileID: 83942687}
+ - {fileID: 1216948824}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &814415651
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114345556751456086, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 814415649}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &821959789
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1697299808109492, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 821959790}
+ - component: {fileID: 821959791}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &821959790
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4857470690821674, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 821959789}
+ m_LocalRotation: {x: 0.24710183, y: 0.051211912, z: -0.063631974, w: -0.96554077}
+ m_LocalPosition: {x: 0.18557806, y: 0.29303604, z: -0.1076026}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 777583215}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 6.0762, y: -15.1172, z: 19.823}
+--- !u!136 &821959791
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136412223253988268, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 821959789}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.040740006
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &835756277
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1905754823589460, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 835756278}
+ - component: {fileID: 835756279}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &835756278
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4766536300612854, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 835756277}
+ m_LocalRotation: {x: -0.24710186, y: 0.0512118, z: -0.06363156, w: 0.96554077}
+ m_LocalPosition: {x: -0.18004401, y: 0.31301993, z: -0.07055047}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 807001123}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 6.0762, y: 15.1172, z: -19.823}
+--- !u!136 &835756279
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136646793541135700, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 835756277}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.023960002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &847052864
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 847052865}
+ - component: {fileID: 847052866}
+ m_Layer: 5
+ m_Name: '[Tot] Front'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &847052865
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 847052864}
+ 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: 1726639956}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 4
+ 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: -3.32, y: 2.48}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &847052866
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 847052864}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &851141628
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1195534620198154, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 851141629}
+ - component: {fileID: 851141630}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &851141629
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4422642986869174, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 851141628}
+ m_LocalRotation: {x: -0.24710186, y: 0.0512118, z: -0.06363156, w: 0.96554077}
+ m_LocalPosition: {x: -0.18226439, y: 0.3050023, z: -0.08541584}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 807001123}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 6.0762, y: 15.1172, z: -19.823}
+--- !u!136 &851141630
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136850018417713940, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 851141628}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.02611
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &857749983
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 857749984}
+ - component: {fileID: 857749986}
+ - component: {fileID: 857749985}
+ m_Layer: 8
+ m_Name: RightHandModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &857749984
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 857749983}
+ m_LocalRotation: {x: -0.000018344554, y: 0.000018407774, z: 0.7071068, w: 0.7071068}
+ m_LocalPosition: {x: 0.0798, y: 0, z: 0}
+ m_LocalScale: {x: 0.09, y: 0.07, z: 0.09}
+ m_Children: []
+ m_Father: {fileID: 1284476441}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+--- !u!23 &857749985
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 857749983}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &857749986
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 857749983}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &863184524
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1256209495658620, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 863184525}
+ m_Layer: 0
+ m_Name: Model
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &863184525
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4324900632257732, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 863184524}
+ 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: 588126221}
+ m_Father: {fileID: 1843169335}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &865742331
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 865742332}
+ - component: {fileID: 865742333}
+ m_Layer: 0
+ m_Name: Left Controller
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &865742332
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 865742331}
+ 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: 1368876434}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &865742333
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 865742331}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5c0be7d8c5eaf734ba7c5cc56c7cc00d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ affectedBodyPart: {fileID: 11400000, guid: 36d64ff1f7b285e4abb8514b69c9fe2c, type: 2}
+ hapticDuration: 100
+ hapticSystemInfo:
+ systemName: Vive
+ deviceName: Left Controller
+ affectedBodyFileLocation: BodyCoordinates/LeftHand
+ connectedSDKTypeName: VRTK.SDK_SteamVRController, Assembly-CSharp, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ vibration:
+ actionPath:
+ needsReinit: 0
+ frequency: 100
+ isRightController: 0
+--- !u!1 &900486432
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1964633185906870, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 900486433}
+ - component: {fileID: 900486435}
+ - component: {fileID: 900486434}
+ m_Layer: 0
+ m_Name: Capsule Hand Left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &900486433
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4219523294204700, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 900486432}
+ m_LocalRotation: {x: 0.000000115202326, y: -0.7071067, z: -0.7071068, w: -0.00000011520231}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 444716542}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: -89.980194, y: 180, z: 0}
+--- !u!114 &900486434
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114752439104306834, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 900486432}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8bcd03e00992e084c8be61565d44b8bd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &900486435
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114049565823993872, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 900486432}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a04122797dd84ca43a07055f12d91e0f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &929526288
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 929526289}
+ - component: {fileID: 929526291}
+ - component: {fileID: 929526290}
+ m_Layer: 5
+ m_Name: Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &929526289
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 929526288}
+ 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: 1175871414}
+ 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: -7.5, y: -0.5}
+ m_SizeDelta: {x: -35, y: -13}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &929526290
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 929526288}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Option A
+--- !u!222 &929526291
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 929526288}
+--- !u!1 &930465345
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1911259997843678, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 930465347}
+ - component: {fileID: 930465346}
+ m_Layer: 0
+ m_Name: VRSimulator
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!114 &930465346
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114748454163793994, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 930465345}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 0
+ actualBoundaries: {fileID: 669998279}
+ actualHeadset: {fileID: 1462477657}
+ actualLeftController: {fileID: 448739078}
+ actualRightController: {fileID: 2137910511}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 473796922}
+ modelAliasRightController: {fileID: 648673132}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_SimSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_SimBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_SimHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_SimController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_FallbackTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_FallbackHand
+ descriptionIndex: 0
+--- !u!4 &930465347
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4905110860467342, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 930465345}
+ 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: 669998280}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &930951565
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1471410089643362, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 930951566}
+ m_Layer: 0
+ m_Name: Model
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &930951566
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4372011469334450, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 930951565}
+ 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: 391178167}
+ m_Father: {fileID: 1087430416}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &940169797
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 940169798}
+ - component: {fileID: 940169799}
+ m_Layer: 5
+ m_Name: '[Tosy] ForearmR'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &940169798
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 940169797}
+ 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: 1647094081}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 2
+ 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: 8.54, y: 2.56}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &940169799
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 940169797}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &974857487
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1964071249290786, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 974857488}
+ - component: {fileID: 974857490}
+ - component: {fileID: 974857489}
+ m_Layer: 0
+ m_Name: HorizontalPlane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &974857488
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4415498974874364, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 974857487}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.1, y: 0.00001, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 661146616}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &974857489
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23800681542671876, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 974857487}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5074e50ed3f02f64ab7f39096a5590bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &974857490
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33317395431219816, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 974857487}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &981941550
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 981941551}
+ - component: {fileID: 981941553}
+ - component: {fileID: 981941552}
+ m_Layer: 8
+ m_Name: LeftHandModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &981941551
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 981941550}
+ m_LocalRotation: {x: -0.000018402257, y: 0.00001835007, z: 0.7071068, w: 0.7071068}
+ m_LocalPosition: {x: -0.0772, y: 0, z: 0}
+ m_LocalScale: {x: 0.090000056, y: 0.07000006, z: 0.089999996}
+ m_Children: []
+ m_Father: {fileID: 1284476449}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+--- !u!23 &981941552
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 981941550}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &981941553
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 981941550}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &991635713
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 991635714}
+ - component: {fileID: 991635716}
+ - component: {fileID: 991635715}
+ m_Layer: 5
+ m_Name: L
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &991635714
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 991635713}
+ 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: 1506764931}
+ m_RootOrder: 2
+ 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: -9.32, y: 8.19}
+ m_SizeDelta: {x: 1.06, y: 1.39}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &991635715
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 991635713}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 8de3fc29048cb0543a9d628122a6d8ea, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &991635716
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 991635713}
+--- !u!1 &1004409023
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1114917664990482, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1004409024}
+ m_Layer: 0
+ m_Name: Hands
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1004409024
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4914436192568478, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1004409023}
+ 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: 791481508}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1006506395
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1006506396}
+ - component: {fileID: 1006506399}
+ - component: {fileID: 1006506398}
+ - component: {fileID: 1006506397}
+ m_Layer: 5
+ m_Name: bHapticsPrefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1006506396
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1006506395}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1506764931}
+ - {fileID: 1255657396}
+ - {fileID: 940169798}
+ - {fileID: 1468646422}
+ - {fileID: 847052865}
+ - {fileID: 152480868}
+ - {fileID: 1992577263}
+ - {fileID: 514078125}
+ - {fileID: 1689996211}
+ - {fileID: 62777202}
+ m_Father: {fileID: 653952133}
+ 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: -0.000000014901161, y: 0}
+ m_SizeDelta: {x: 32, y: 24.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1006506397
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1006506395}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1006506398
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1006506395}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1006506399
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1006506395}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 2
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!1 &1010700833
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1752558603995118, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1010700834}
+ - component: {fileID: 1010700836}
+ - component: {fileID: 1010700835}
+ m_Layer: 0
+ m_Name: CenterEyeAnchor
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1010700834
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4275042247198080, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1010700833}
+ 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: 1288073601}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &1010700835
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20032596465791040, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1010700833}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.1
+ far clip plane: 1000
+ field of view: 90
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!81 &1010700836
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 81718092898818214, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1010700833}
+ m_Enabled: 1
+--- !u!1 &1087430415
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1545926306520640, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1087430416}
+ - component: {fileID: 1087430418}
+ - component: {fileID: 1087430417}
+ m_Layer: 0
+ m_Name: RightHandAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1087430416
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4927757308597710, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1087430415}
+ 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: 930951566}
+ m_Father: {fileID: 2024778040}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1087430417
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114374662426475888, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1087430415}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &1087430418
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114720659735242642, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1087430415}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a56f0178eefe7b9409460ae29588f961, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeType: 5
+ index: 0
+ triggerAxisName: RightTrigger
+ gripAxisName: RightGrip
+ touchpadHorizontalAxisName: RightTrackpadHorizontal
+ touchpadVerticalAxisName: RightTrackpadVertical
+--- !u!1 &1094810988
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1094810990}
+ - component: {fileID: 1094810989}
+ m_Layer: 0
+ m_Name: Haptic Reaction
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1094810989
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1094810988}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c9debd9feb2c98040b9bdf03ddc36536, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ bodyPart: 15
+ hapticPattern: {fileID: 11400000, guid: e945ad208e7c58f4b9889d37b657d2ca, type: 2}
+--- !u!4 &1094810990
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1094810988}
+ 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: 1841587747}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1102824642
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1102824645}
+ - component: {fileID: 1102824644}
+ - component: {fileID: 1102824643}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1102824643
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1102824642}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1102824644
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1102824642}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 5
+--- !u!4 &1102824645
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1102824642}
+ 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: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1125272727
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1125272728}
+ - component: {fileID: 1125272731}
+ - component: {fileID: 1125272730}
+ - component: {fileID: 1125272729}
+ m_Layer: 5
+ m_Name: Scrollbar
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1125272728
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1125272727}
+ 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: 1544560132}
+ m_Father: {fileID: 689336098}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!114 &1125272729
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1125272727}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -2061169968, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2048806586}
+ m_HandleRect: {fileID: 2048806585}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &1125272730
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1125272727}
+ 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: 10907, 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
+--- !u!222 &1125272731
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1125272727}
+--- !u!1 &1146686599
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1718441947272428, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1146686600}
+ - component: {fileID: 1146686601}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1146686600
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4626720970581652, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1146686599}
+ m_LocalRotation: {x: -0.1843855, y: -0.10542028, z: 0.17531382, w: 0.9613291}
+ m_LocalPosition: {x: -0.25145003, y: 0.28265196, z: -0.09308395}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1641913276}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -9.6659, z: 0}
+--- !u!136 &1146686601
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136626176615973570, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1146686599}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.047780003
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1147874357
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1164736652621108, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1147874358}
+ m_Layer: 0
+ m_Name: RightControllerModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1147874358
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4876794383662070, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1147874357}
+ 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: 134775172}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1152297871
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1064360500507578, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1152297872}
+ - component: {fileID: 1152297875}
+ - component: {fileID: 1152297874}
+ - component: {fileID: 1152297873}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1152297872
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224855823348637950, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1152297871}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 114522029}
+ - {fileID: 1287455576}
+ m_Father: {fileID: 669998280}
+ 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: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1152297873
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114894191058346284, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1152297871}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1152297874
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114326158156049784, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1152297871}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1152297875
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 223786215626120172, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1152297871}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 1
+ m_Camera: {fileID: 1462477659}
+ m_PlaneDistance: 0.5
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!1 &1155796738
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1155796739}
+ - component: {fileID: 1155796743}
+ - component: {fileID: 1155796742}
+ - component: {fileID: 1155796741}
+ - component: {fileID: 1155796740}
+ m_Layer: 0
+ m_Name: LeftControllerScriptAlias
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1155796739
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1155796738}
+ 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: 304869209}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1155796740
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1155796738}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 0}
+ controllerEvents: {fileID: 0}
+ interactTouch: {fileID: 0}
+--- !u!114 &1155796741
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1155796738}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 0}
+ interactTouch: {fileID: 0}
+ interactGrab: {fileID: 0}
+--- !u!114 &1155796742
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1155796738}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 0}
+--- !u!114 &1155796743
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1155796738}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eba3cd5456cd79e49948f5ceb58544b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+--- !u!1 &1162115786
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1162115787}
+ - component: {fileID: 1162115788}
+ m_Layer: 0
+ m_Name: Right TACTOSY
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1162115787
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1162115786}
+ 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: 1906596484}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1162115788
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1162115786}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b66cbf23014e0364fb0c144eb87cb5ba, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ affectedBodyPart: {fileID: 11400000, guid: ff0cb3cd8eb0dca47b2cb34973fb27c5, type: 2}
+ hapticDuration: 100
+ hapticSystemInfo:
+ systemName: Bhaptics
+ deviceName: Right TACTOSY
+ affectedBodyFileLocation: BodyCoordinates/RightForearm
+ connectedSDKTypeName:
+ bhapticsMapping: {fileID: 11400000, guid: 652417e418b21f743b9c063d19d2d4f3, type: 2}
+--- !u!1 &1165664732
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1165664733}
+ - component: {fileID: 1165664735}
+ - component: {fileID: 1165664734}
+ m_Layer: 5
+ m_Name: Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1165664733
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1165664732}
+ 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: 235736792}
+ 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: -7.5, y: -0.5}
+ m_SizeDelta: {x: -35, y: -13}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1165664734
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1165664732}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Option A
+--- !u!222 &1165664735
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1165664732}
+--- !u!1 &1175871412
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1175871414}
+ - component: {fileID: 1175871416}
+ - component: {fileID: 1175871415}
+ - component: {fileID: 1175871413}
+ m_Layer: 5
+ m_Name: Body Dropdown
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1175871413
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1175871412}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 853051423, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1175871415}
+ m_Template: {fileID: 2118958340}
+ m_CaptionText: {fileID: 929526290}
+ m_CaptionImage: {fileID: 0}
+ m_ItemText: {fileID: 394221903}
+ m_ItemImage: {fileID: 0}
+ m_Value: 0
+ m_Options:
+ m_Options:
+ - m_Text: Option A
+ m_Image: {fileID: 0}
+ - m_Text: Option B
+ m_Image: {fileID: 0}
+ - m_Text: Option C
+ m_Image: {fileID: 0}
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1342166476}
+ m_MethodName: DropdownBodyPartSelection
+ m_Mode: 2
+ m_Arguments:
+ m_ObjectArgument: {fileID: 1175871413}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.UI.Dropdown, UnityEngine.UI
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Dropdown+DropdownEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!224 &1175871414
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1175871412}
+ 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: 929526289}
+ - {fileID: 2107991718}
+ - {fileID: 2118958340}
+ m_Father: {fileID: 1342166475}
+ 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: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1175871415
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1175871412}
+ 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
+--- !u!222 &1175871416
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1175871412}
+--- !u!1 &1190203622
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1945479589542958, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1190203623}
+ - component: {fileID: 1190203624}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1190203623
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4106760405702672, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1190203622}
+ m_LocalRotation: {x: 0.19123271, y: -0.05567847, z: 0.07900512, w: -0.9767744}
+ m_LocalPosition: {x: 0.23825295, y: 0.3131141, z: -0.03890297}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1627909957}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 1.7105999, z: 8.6391}
+--- !u!136 &1190203624
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136309642309884142, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1190203622}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.025400002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1195523828
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1912988704047734, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1195523829}
+ - component: {fileID: 1195523830}
+ m_Layer: 0
+ m_Name: forearm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1195523829
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4077879077816998, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1195523828}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.0856, y: 0.105, z: -0.1819}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &1195523830
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136934477622181288, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1195523828}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.0205
+ m_Height: 0.29100004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1216948823
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1758921476385182, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1216948824}
+ - component: {fileID: 1216948825}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1216948824
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4119602282079422, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1216948823}
+ m_LocalRotation: {x: -0.20731795, y: 0.0090306, z: 0.027792262, w: 0.9778371}
+ m_LocalPosition: {x: -0.20649122, y: 0.31778064, z: -0.048289925}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 814415650}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 7.0464997, z: -11.571899}
+--- !u!136 &1216948825
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136806613013171808, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1216948823}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.0253
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1220059042
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1673286107328652, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1220059043}
+ - component: {fileID: 1220059044}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1220059043
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4299261196859416, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1220059042}
+ m_LocalRotation: {x: 0.19123271, y: -0.05567847, z: 0.07900512, w: -0.9767744}
+ m_LocalPosition: {x: 0.23521398, y: 0.30513808, z: -0.059033215}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1627909957}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 1.7105999, z: 8.6391}
+--- !u!136 &1220059044
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136560004394064246, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1220059042}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.034330003
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1227837642
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1363763836707764, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1227837643}
+ - component: {fileID: 1227837645}
+ - component: {fileID: 1227837644}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1227837643
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4209160235473860, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1227837642}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0, y: 0, z: 0.800004}
+ m_LocalScale: {x: 0.08000002, y: 0.08000001, z: 0.80000013}
+ m_Children: []
+ m_Father: {fileID: 473796923}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1227837644
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23233870342336032, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1227837642}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1227837645
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33120070185735714, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1227837642}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1240601295
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1240601296}
+ - component: {fileID: 1240601298}
+ - component: {fileID: 1240601297}
+ m_Layer: 5
+ m_Name: Tacot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1240601296
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1240601295}
+ 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: 152480868}
+ 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: -2.0900004, y: 1.31}
+ m_SizeDelta: {x: 11.59, y: 5.45}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1240601297
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1240601295}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 4aa71fb0af869ae44875dab406884abb, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1240601298
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1240601295}
+--- !u!1 &1245194039
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100128, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1245194040}
+ m_Layer: 0
+ m_Name: RightToeBase
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1245194040
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400128, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1245194039}
+ m_LocalRotation: {x: 0.000000029802322, y: 6.530776e-11, z: -2.3527402e-10, w: 1}
+ m_LocalPosition: {x: 0.0037335984, y: -0.10492194, z: 0.12640662}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 2010008178}
+ m_Father: {fileID: 1469379999}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1255657395
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1255657396}
+ - component: {fileID: 1255657397}
+ m_Layer: 5
+ m_Name: '[Tosy] ForearmL'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1255657396
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1255657395}
+ 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: 1399263399}
+ m_Father: {fileID: 1006506396}
+ 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: -10.1, y: 2.56}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1255657397
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1255657395}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1273873653 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 192944, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &1284476376
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100138, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476431}
+ - component: {fileID: 1284476390}
+ m_Layer: 0
+ m_Name: Character
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476377
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100080, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476441}
+ - component: {fileID: 1284476445}
+ - component: {fileID: 1284476392}
+ - component: {fileID: 1284476447}
+ - component: {fileID: 1284476391}
+ m_Layer: 8
+ m_Name: RightHand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476378
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100078, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476440}
+ - component: {fileID: 1284476396}
+ - component: {fileID: 1284476394}
+ - component: {fileID: 1284476397}
+ - component: {fileID: 1284476393}
+ m_Layer: 8
+ m_Name: RightForeArm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476379
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100072, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476439}
+ - component: {fileID: 1284476395}
+ - component: {fileID: 1284476398}
+ - component: {fileID: 1284476400}
+ m_Layer: 0
+ m_Name: RightArm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476380
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100004, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476442}
+ - component: {fileID: 1284476404}
+ - component: {fileID: 1284476402}
+ - component: {fileID: 1284476403}
+ - component: {fileID: 1284476401}
+ m_Layer: 8
+ m_Name: Head
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476381
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100018, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476449}
+ - component: {fileID: 1284476446}
+ - component: {fileID: 1284476407}
+ - component: {fileID: 1284476448}
+ - component: {fileID: 1284476406}
+ m_Layer: 8
+ m_Name: LeftHand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476382
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100016, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476444}
+ - component: {fileID: 1284476411}
+ - component: {fileID: 1284476409}
+ - component: {fileID: 1284476412}
+ - component: {fileID: 1284476408}
+ m_Layer: 8
+ m_Name: LeftForeArm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476383
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100010, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476443}
+ - component: {fileID: 1284476410}
+ - component: {fileID: 1284476413}
+ - component: {fileID: 1284476414}
+ m_Layer: 0
+ m_Name: LeftArm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476384
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100134, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476438}
+ - component: {fileID: 1284476399}
+ - component: {fileID: 1284476405}
+ - component: {fileID: 1284476415}
+ m_Layer: 0
+ m_Name: Spine1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476385
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100122, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476435}
+ - component: {fileID: 1284476420}
+ - component: {fileID: 1284476418}
+ - component: {fileID: 1284476421}
+ m_Layer: 0
+ m_Name: RightLeg
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476386
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100130, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476434}
+ - component: {fileID: 1284476419}
+ - component: {fileID: 1284476422}
+ - component: {fileID: 1284476423}
+ m_Layer: 0
+ m_Name: RightUpLeg
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476387
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100060, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476437}
+ - component: {fileID: 1284476426}
+ - component: {fileID: 1284476424}
+ - component: {fileID: 1284476427}
+ m_Layer: 0
+ m_Name: LeftLeg
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476388
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100068, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476436}
+ - component: {fileID: 1284476425}
+ - component: {fileID: 1284476428}
+ - component: {fileID: 1284476429}
+ m_Layer: 0
+ m_Name: LeftUpLeg
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1284476389
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100008, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1284476433}
+ - component: {fileID: 1284476416}
+ - component: {fileID: 1284476417}
+ - component: {fileID: 1284476432}
+ - component: {fileID: 1284476430}
+ m_Layer: 0
+ m_Name: Hips
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1284476390
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476376}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a75400c659f89a34caa71e27eafcf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1284476391
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476377}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!136 &1284476392
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476377}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.05
+ m_Height: 0.15
+ m_Direction: 0
+ m_Center: {x: 0.08, y: 0, z: 0}
+--- !u!114 &1284476393
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476378}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!144 &1284476394
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476378}
+ m_ConnectedBody: {fileID: 1284476395}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 0, y: 0, z: 1}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.27404684, y: 0.00000033126352, z: 0.000000024214376}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 1, z: 0}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -90
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476395
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476379}
+ serializedVersion: 2
+ m_Mass: 1.25
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!54 &1284476396
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476378}
+ serializedVersion: 2
+ m_Mass: 1.25
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476397
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476378}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.28
+ m_Direction: 0
+ m_Center: {x: 0.15, y: 0, z: 0}
+--- !u!144 &1284476398
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476379}
+ m_ConnectedBody: {fileID: 1284476399}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 0, y: 1, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.18760645, y: 0.22204688, z: -0.035217896}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -70
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 10
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 50
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476399
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476384}
+ serializedVersion: 2
+ m_Mass: 3.125
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476400
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476379}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06851171
+ m_Height: 0.27404684
+ m_Direction: 0
+ m_Center: {x: 0.13702342, y: 0, z: 0}
+--- !u!114 &1284476401
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476380}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 1, y: 0, z: 0}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!136 &1284476402
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476380}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.12
+ m_Height: 0.25
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.08, z: 0}
+--- !u!144 &1284476403
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476380}
+ m_ConnectedBody: {fileID: 1284476399}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.0000011901354, y: 0.3871452, z: 0.023088738}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -40
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 25
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 25
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476404
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476380}
+ serializedVersion: 2
+ m_Mass: 1.25
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476405
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476384}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.13
+ m_Height: 0.3
+ m_Direction: 1
+ m_Center: {x: -0.00000153482, y: 0.16, z: -0.004637659}
+--- !u!114 &1284476406
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476381}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!136 &1284476407
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476381}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.05
+ m_Height: 0.15
+ m_Direction: 0
+ m_Center: {x: -0.08, y: 0, z: 0}
+--- !u!114 &1284476408
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476382}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!144 &1284476409
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476382}
+ m_ConnectedBody: {fileID: 1284476410}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 0, y: 0, z: 1}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.27404684, y: 0.000000417287, z: 0.000000054016674}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 1, z: 0}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -90
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476410
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476383}
+ serializedVersion: 2
+ m_Mass: 1.25
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!54 &1284476411
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476382}
+ serializedVersion: 2
+ m_Mass: 1.25
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476412
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476382}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.28
+ m_Direction: 0
+ m_Center: {x: -0.14, y: 0, z: 0}
+--- !u!144 &1284476413
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476383}
+ m_ConnectedBody: {fileID: 1284476399}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 0, y: 1, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.18760951, y: 0.222047, z: -0.035218313}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -70
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 10
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 50
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!136 &1284476414
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476383}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06851171
+ m_Height: 0.27404684
+ m_Direction: 0
+ m_Center: {x: -0.13702342, y: 0, z: 0}
+--- !u!144 &1284476415
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476384}
+ m_ConnectedBody: {fileID: 1284476416}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.0000012805019, y: 0.215689, z: -0.026496775}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -20
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 20
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 10
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476416
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476389}
+ serializedVersion: 2
+ m_Mass: 3.125
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476417
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476389}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.12
+ m_Height: 0.29
+ m_Direction: 1
+ m_Center: {x: -0.0000004470348, y: 0.0745625, z: -0.03085753}
+--- !u!144 &1284476418
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476385}
+ m_ConnectedBody: {fileID: 1284476419}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.0024468026, y: -0.4059544, z: -0.0051452597}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -80
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476419
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476386}
+ serializedVersion: 2
+ m_Mass: 1.875
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!54 &1284476420
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476385}
+ serializedVersion: 2
+ m_Mass: 1.875
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476421
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476385}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.08
+ m_Height: 0.5253997
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.26269984, z: 0}
+--- !u!144 &1284476422
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476386}
+ m_ConnectedBody: {fileID: 1284476416}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.09124453, y: -0.066564, z: -0.0005537919}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -20
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 70
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 30
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!136 &1284476423
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476386}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.09
+ m_Height: 0.4059544
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.2029772, z: 0}
+--- !u!144 &1284476424
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476387}
+ m_ConnectedBody: {fileID: 1284476425}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.0024467986, y: -0.40595406, z: -0.0051703993}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -80
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!54 &1284476425
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476388}
+ serializedVersion: 2
+ m_Mass: 1.875
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!54 &1284476426
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476387}
+ serializedVersion: 2
+ m_Mass: 1.875
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!136 &1284476427
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476387}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.08
+ m_Height: 0.5253974
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.2626987, z: 0}
+--- !u!144 &1284476428
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476388}
+ m_ConnectedBody: {fileID: 1284476416}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.091244526, y: -0.066563986, z: -0.0005537969}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 0, z: 1}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -20
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 70
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 30
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 0
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 0
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!136 &1284476429
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476388}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.09
+ m_Height: 0.40595406
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.20297703, z: 0}
+--- !u!33 &1284476430
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476389}
+ m_Mesh: {fileID: 0}
+--- !u!4 &1284476431
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400138, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476376}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -0.566}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476433}
+ - {fileID: 1368876434}
+ - {fileID: 1906596484}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1284476432
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476389}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!4 &1284476433
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400008, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476389}
+ m_LocalRotation: {x: 1.3930912e-15, y: 0.00000001376344, z: -0.0000004417766, w: 1}
+ m_LocalPosition: {x: 0.00000006757011, y: 0.9979194, z: 0.000000484474}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476436}
+ - {fileID: 1284476434}
+ - {fileID: 2042970089}
+ m_Father: {fileID: 1284476431}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476434
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400130, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476386}
+ m_LocalRotation: {x: -0.000002931613, y: -0.000000013649597, z: 0.00000043784848,
+ w: 1}
+ m_LocalPosition: {x: 0.09124453, y: -0.06656398, z: -0.00055377925}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476435}
+ m_Father: {fileID: 1284476433}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476435
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400122, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476385}
+ m_LocalRotation: {x: 0.0000065525965, y: -0.000000021011672, z: -2.99793e-11, w: 1}
+ m_LocalPosition: {x: 0.002446805, y: -0.40595436, z: -0.0051452797}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1469379999}
+ m_Father: {fileID: 1284476434}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476436
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400068, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476388}
+ m_LocalRotation: {x: -0.000017517097, y: -0.000000013640878, z: 0.00000043808052,
+ w: 1}
+ m_LocalPosition: {x: -0.091244526, y: -0.06656399, z: -0.00055377925}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476437}
+ m_Father: {fileID: 1284476433}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476437
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400060, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476387}
+ m_LocalRotation: {x: 0.000035527948, y: 0.000000089582485, z: 0.0000000041595536,
+ w: 1}
+ m_LocalPosition: {x: -0.0024468019, y: -0.40595403, z: -0.005170411}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 158100308}
+ m_Father: {fileID: 1284476436}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476438
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400134, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476384}
+ m_LocalRotation: {x: 3.8774097e-26, y: -4.2632574e-14, z: 6.82121e-13, w: 1}
+ m_LocalPosition: {x: 0.0000013886521, y: 0.1164544, z: -0.014223412}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 2077198172}
+ - {fileID: 1869269957}
+ m_Father: {fileID: 2042970089}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476439
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400072, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476379}
+ m_LocalRotation: {x: 0.000000014901161, y: 7.7756505e-24, z: 0.000000044703484,
+ w: 1}
+ m_LocalPosition: {x: 0.1265504, y: -0.0026602063, z: -0.026008958}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476440}
+ m_Father: {fileID: 1629613222}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476440
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400078, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476378}
+ m_LocalRotation: {x: -0.000000059604638, y: 0.000000003900862, z: -3.0876939e-15,
+ w: 1}
+ m_LocalPosition: {x: 0.27404684, y: 0.0000003288411, z: 0.000000052756395}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 2032420838}
+ - {fileID: 1284476441}
+ m_Father: {fileID: 1284476439}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476441
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400080, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476377}
+ m_LocalRotation: {x: 0.000025987818, y: -0.000000044703476, z: 1.1585687e-12, w: 1}
+ m_LocalPosition: {x: 0.27614462, y: 0.00000022661457, z: 0.0000001832407}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 857749984}
+ m_Father: {fileID: 1284476440}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476442
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400004, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476380}
+ m_LocalRotation: {x: 0, y: -0, z: -2.3158745e-36, w: 1}
+ m_LocalPosition: {x: -0.000000023707482, y: 0.1032183, z: 0.031424288}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1666846249}
+ m_Father: {fileID: 1544287198}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476443
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400010, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476383}
+ m_LocalRotation: {x: 0.000000044703484, y: 2.4507967e-22, z: 0.000000044703484,
+ w: 1}
+ m_LocalPosition: {x: -0.12655036, y: -0.0026593448, z: -0.026009219}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476444}
+ m_Father: {fileID: 1652904149}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &1284476444
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400016, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476382}
+ m_LocalRotation: {x: -0.000000059604638, y: -0.000000003900862, z: -1.3205547e-24,
+ w: 1}
+ m_LocalPosition: {x: -0.27404684, y: 0.00000039126675, z: 0.000000065881096}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 411771058}
+ - {fileID: 1284476449}
+ m_Father: {fileID: 1284476443}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!54 &1284476445
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476377}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!54 &1284476446
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476381}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 1
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!144 &1284476447
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476377}
+ m_ConnectedBody: {fileID: 1284476396}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: 0.27614456, y: 0.00000024083178, z: 0.00000021203098}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 1, z: 0}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -20
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 70
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 40
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 40
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 1
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!144 &1284476448
+CharacterJoint:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476381}
+ m_ConnectedBody: {fileID: 1284476411}
+ m_Anchor: {x: 0, y: 0, z: 0}
+ m_Axis: {x: 1, y: 0, z: 0}
+ m_AutoConfigureConnectedAnchor: 1
+ m_ConnectedAnchor: {x: -0.27614462, y: 0.00000026444798, z: 0.00000022870857}
+ serializedVersion: 2
+ m_SwingAxis: {x: 0, y: 1, z: 0}
+ m_TwistLimitSpring:
+ spring: 0
+ damper: 0
+ m_LowTwistLimit:
+ limit: -20
+ bounciness: 0
+ contactDistance: 0
+ m_HighTwistLimit:
+ limit: 70
+ bounciness: 0
+ contactDistance: 0
+ m_SwingLimitSpring:
+ spring: 0
+ damper: 0
+ m_Swing1Limit:
+ limit: 40
+ bounciness: 0
+ contactDistance: 0
+ m_Swing2Limit:
+ limit: 40
+ bounciness: 0
+ contactDistance: 0
+ m_EnableProjection: 0
+ m_ProjectionDistance: 0.1
+ m_ProjectionAngle: 180
+ m_BreakForce: Infinity
+ m_BreakTorque: Infinity
+ m_EnableCollision: 0
+ m_EnablePreprocessing: 1
+ m_MassScale: 1
+ m_ConnectedMassScale: 1
+--- !u!4 &1284476449
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400018, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1284476381}
+ m_LocalRotation: {x: 0.000025987818, y: 0.000000044703476, z: -1.1585687e-12, w: 1}
+ m_LocalPosition: {x: -0.27614462, y: 0.00000028951808, z: 0.00000019646586}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 981941551}
+ m_Father: {fileID: 1284476444}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1287455575
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1139149426671878, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1287455576}
+ - component: {fileID: 1287455577}
+ m_Layer: 5
+ m_Name: CrosshairPanel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1287455576
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224898842318825022, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1287455575}
+ 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: 1401924464}
+ m_Father: {fileID: 1152297872}
+ 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!222 &1287455577
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222216596249104770, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1287455575}
+--- !u!1 &1288073600
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1385365442151190, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1288073601}
+ m_Layer: 0
+ m_Name: TrackingSpace
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1288073601
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4037241614861164, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1288073600}
+ 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: 718784008}
+ - {fileID: 1010700834}
+ - {fileID: 1422457117}
+ - {fileID: 559557196}
+ - {fileID: 450860297}
+ - {fileID: 1600475213}
+ m_Father: {fileID: 2031144553}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1291806750
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1497821511363720, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1291806751}
+ - component: {fileID: 1291806752}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1291806751
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4842595962813678, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1291806750}
+ m_LocalRotation: {x: 0.20731795, y: 0.00903069, z: 0.027791852, w: -0.9778371}
+ m_LocalPosition: {x: 0.20649095, y: 0.31778085, z: -0.048289925}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1299871813}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -7.0464997, z: 11.571899}
+--- !u!136 &1291806752
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136917256857246474, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1291806750}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.0253
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1299871812
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1444680322249500, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1299871813}
+ - component: {fileID: 1299871814}
+ m_Layer: 0
+ m_Name: ring
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1299871813
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4774557640849410, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1299871812}
+ 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: 84337007}
+ - {fileID: 438065900}
+ - {fileID: 1291806751}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1299871814
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114352946706345296, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1299871812}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1303779584
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1303779585}
+ - component: {fileID: 1303779587}
+ - component: {fileID: 1303779586}
+ m_Layer: 5
+ m_Name: R
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1303779585
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1303779584}
+ 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: 1506764931}
+ m_RootOrder: 3
+ 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: 9.42, y: 8.19}
+ m_SizeDelta: {x: 1.06, y: 1.39}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1303779586
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1303779584}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: fa3a9f4d837870f46aa7f0d831b05b98, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1303779587
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1303779584}
+--- !u!1 &1325915189
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1201667435498660, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1325915190}
+ m_Layer: 0
+ m_Name: LeftControllerModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1325915190
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4055772235268756, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1325915189}
+ 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: 77031043}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1334421952
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1334421953}
+ - component: {fileID: 1334421956}
+ - component: {fileID: 1334421955}
+ - component: {fileID: 1334421954}
+ m_Layer: 5
+ m_Name: Play Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1334421953
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1334421952}
+ 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: 343410513}
+ m_Father: {fileID: 1342166475}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1334421954
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1334421952}
+ 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1334421955}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1342166476}
+ m_MethodName: PlaySelectedPattern
+ 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 &1334421955
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1334421952}
+ 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
+--- !u!222 &1334421956
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1334421952}
+--- !u!1 &1342166471
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1342166475}
+ - component: {fileID: 1342166474}
+ - component: {fileID: 1342166473}
+ - component: {fileID: 1342166472}
+ - component: {fileID: 1342166476}
+ - component: {fileID: 1342166477}
+ m_Layer: 5
+ m_Name: Haptic Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1342166472
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1342166473
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1342166474
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1342166475
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 1175871414}
+ - {fileID: 235736792}
+ - {fileID: 1334421953}
+ - {fileID: 1575750594}
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1342166476
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 41655ee12c386e54fa5b94ad661c26c4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ availablePatterns:
+ - {fileID: 11400000, guid: e945ad208e7c58f4b9889d37b657d2ca, type: 2}
+ - {fileID: 11400000, guid: 9da88975d2790784ab3908ce8d92ae06, type: 2}
+ - {fileID: 11400000, guid: c7aa2ff9b31b5c14ebe2a0032acbee93, type: 2}
+ - {fileID: 11400000, guid: 5f9548af75015c64295ef0fa38ef3183, type: 2}
+ - {fileID: 11400000, guid: 69cb33b80d6d91d4ea69336ac63910c6, type: 2}
+ - {fileID: 0}
+ patternDropdown: {fileID: 235736793}
+ bodyPartDropdown: {fileID: 1175871413}
+--- !u!114 &1342166477
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1342166471}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 10
+ m_Right: 0
+ m_Top: 10
+ m_Bottom: 0
+ m_ChildAlignment: 0
+ m_Spacing: 5
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+--- !u!1 &1343421668
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1343421669}
+ - component: {fileID: 1343421671}
+ - component: {fileID: 1343421670}
+ m_Layer: 5
+ m_Name: bhaptics-logo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1343421669
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1343421668}
+ 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: 1506764931}
+ 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: -12.91, y: 10.71}
+ m_SizeDelta: {x: 4.22, y: 1.11}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1343421670
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1343421668}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 694d4c4424909f441abc3db51c282e5b, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1343421671
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1343421668}
+--- !u!1 &1352095973
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1609316719242768, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1352095974}
+ - component: {fileID: 1352095975}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1352095974
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4121817303765614, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1352095973}
+ m_LocalRotation: {x: -0.19123267, y: -0.055678543, z: 0.07900553, w: 0.97677433}
+ m_LocalPosition: {x: -0.23028298, y: 0.29219535, z: -0.09169823}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 772892186}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -1.7105999, z: -8.6391}
+--- !u!136 &1352095975
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136902914092528082, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1352095973}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.052630004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1368876433
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1368876434}
+ m_Layer: 0
+ m_Name: Vive
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1368876434
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1368876433}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0.566}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 865742332}
+ - {fileID: 632842904}
+ m_Father: {fileID: 1284476431}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1380104168
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1864327457564016, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1380104169}
+ - component: {fileID: 1380104170}
+ m_Layer: 0
+ m_Name: UnityXR
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &1380104169
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4833973726280048, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380104168}
+ 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: 2024778040}
+ m_Father: {fileID: 1532369071}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1380104170
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114097171707248180, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380104168}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 0
+ actualBoundaries: {fileID: 2024778039}
+ actualHeadset: {fileID: 724699685}
+ actualLeftController: {fileID: 1843169334}
+ actualRightController: {fileID: 1087430415}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 863184524}
+ modelAliasRightController: {fileID: 930951565}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_UnitySystem
+ descriptionIndex: 1
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_UnityBoundaries
+ descriptionIndex: 1
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_UnityHeadset
+ descriptionIndex: 1
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_UnityController
+ descriptionIndex: 1
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_FallbackTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_FallbackHand
+ descriptionIndex: 0
+--- !u!1 &1380121266
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1380121267}
+ - component: {fileID: 1380121269}
+ - component: {fileID: 1380121268}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1380121267
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380121266}
+ 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: 1575750594}
+ 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 &1380121268
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380121266}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Play On All Parts
+--- !u!222 &1380121269
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380121266}
+--- !u!1 &1398061901
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1786062999679222, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1398061902}
+ - component: {fileID: 1398061903}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1398061902
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4733806916941664, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1398061901}
+ m_LocalRotation: {x: 0.15511838, y: -0.22281167, z: 0.71685785, w: -0.6421901}
+ m_LocalPosition: {x: 0.24069616, y: 0.23002695, z: -0.15240857}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1542414820}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 24.403599, y: 35.2679, z: -62.080498}
+--- !u!136 &1398061903
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136261225259917888, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1398061901}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.054220006
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1399263398
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1399263399}
+ - component: {fileID: 1399263401}
+ - component: {fileID: 1399263400}
+ m_Layer: 5
+ m_Name: tactosy_left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1399263399
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1399263398}
+ 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: 1255657396}
+ 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.7400017, y: 1.2200007}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1399263400
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1399263398}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: fa7768468db2d024e93ab5d0c166b8b8, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1399263401
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1399263398}
+--- !u!1 &1401924463
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1910343897166918, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1401924464}
+ - component: {fileID: 1401924466}
+ - component: {fileID: 1401924465}
+ m_Layer: 5
+ m_Name: Image
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1401924464
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224769544342183684, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1401924463}
+ 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: 1287455576}
+ 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: 25, y: 25}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1401924465
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114226909144389536, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1401924463}
+ 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: 13ad2ad7c4126c64b9713ab9ce478f82, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &1401924466
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222683853949172698, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1401924463}
+--- !u!1 &1422457116
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1532569555860248, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1422457117}
+ - component: {fileID: 1422457118}
+ m_Layer: 0
+ m_Name: RightEyeAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1422457117
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4453936174958260, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1422457116}
+ 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: 1288073601}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &1422457118
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20511210392418334, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1422457116}
+ m_Enabled: 0
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 2
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!1 &1423808481
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1423808482}
+ - component: {fileID: 1423808484}
+ - component: {fileID: 1423808483}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1423808482
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1423808481}
+ 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: 611413203}
+ 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: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1423808483
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1423808481}
+ 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
+--- !u!222 &1423808484
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1423808481}
+--- !u!1 &1430808219
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1469036089373606, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1430808220}
+ - component: {fileID: 1430808224}
+ - component: {fileID: 1430808223}
+ - component: {fileID: 1430808222}
+ - component: {fileID: 1430808221}
+ m_Layer: 0
+ m_Name: Head
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1430808220
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4486952429594258, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1430808219}
+ 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: 618659444}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1430808221
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114488276184429078, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1430808219}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e02f8c9a00f838548ac1b43fd6738130, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ forceRoomScaleTracking: 1
+--- !u!81 &1430808222
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 81392431515360088, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1430808219}
+ m_Enabled: 1
+--- !u!124 &1430808223
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 124308063330812152, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1430808219}
+ m_Enabled: 1
+--- !u!20 &1430808224
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20907468643624242, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1430808219}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!1 &1462477657
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1032642348073938, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1462477658}
+ - component: {fileID: 1462477659}
+ - component: {fileID: 1462477663}
+ - component: {fileID: 1462477662}
+ - component: {fileID: 1462477661}
+ - component: {fileID: 1462477660}
+ m_Layer: 0
+ m_Name: Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1462477658
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4682112467028718, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.08, z: 0.08}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1537547127}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &1462477659
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 20165139100398262, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.05
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: 1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!114 &1462477660
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114678009003922790, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!81 &1462477661
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 81226871471363398, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_Enabled: 1
+--- !u!92 &1462477662
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 92827885659946426, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_Enabled: 1
+--- !u!124 &1462477663
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 124459182134215684, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1462477657}
+ m_Enabled: 1
+--- !u!1 &1468646421
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1468646422}
+ - component: {fileID: 1468646423}
+ m_Layer: 5
+ m_Name: '[Tal]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1468646422
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1468646421}
+ 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: 1799362731}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 3
+ 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: -1.14, y: 8.94}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1468646423
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1468646421}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1468879365
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1388208206479294, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1468879366}
+ - component: {fileID: 1468879367}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1468879366
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4544185383078752, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1468879365}
+ m_LocalRotation: {x: -0.24710186, y: 0.0512118, z: -0.06363156, w: 0.96554077}
+ m_LocalPosition: {x: -0.1855783, y: 0.29303586, z: -0.1076026}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 807001123}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 6.0762, y: 15.1172, z: -19.823}
+--- !u!136 &1468879367
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136488868207834022, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1468879365}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.040740006
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1469379998
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100076, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1469379999}
+ m_Layer: 0
+ m_Name: RightFoot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1469379999
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400076, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1469379998}
+ m_LocalRotation: {x: -0.000003650786, y: 0.000000020896566, z: 0.0000000039579957,
+ w: 1}
+ m_LocalPosition: {x: -0.0024466943, y: -0.4204787, z: -0.02060231}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1245194040}
+ m_Father: {fileID: 1284476435}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1506764930
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1506764931}
+ m_Layer: 5
+ m_Name: UI
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1506764931
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1506764930}
+ 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: 617351939}
+ - {fileID: 1343421669}
+ - {fileID: 991635714}
+ - {fileID: 1303779585}
+ m_Father: {fileID: 1006506396}
+ 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: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1516915511
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1080704025289860, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1516915512}
+ - component: {fileID: 1516915513}
+ m_Layer: 0
+ m_Name: index
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1516915512
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4933049805345832, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1516915511}
+ 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: 80345382}
+ - {fileID: 603351673}
+ - {fileID: 801088931}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1516915513
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114202823677404760, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1516915511}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1518809420 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 1000014254142504, guid: 4d293c8e162f3874b982baadd71153d2,
+ type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &1532369070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1964395617527810, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1532369071}
+ m_Layer: 0
+ m_Name: '[VRTK_SDKSetups]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1532369071
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4502798307038566, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1532369070}
+ 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: 930465347}
+ - {fileID: 1380104169}
+ - {fileID: 317598316}
+ - {fileID: 93853990}
+ - {fileID: 457387805}
+ - {fileID: 1004409024}
+ m_Father: {fileID: 257065414}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1537547126
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1350645740531612, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1537547127}
+ m_Layer: 0
+ m_Name: Neck
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1537547127
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4095234681191514, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1537547126}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.6, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1462477658}
+ m_Father: {fileID: 669998280}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1542414819
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1961585682527576, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1542414820}
+ - component: {fileID: 1542414821}
+ m_Layer: 0
+ m_Name: thumb
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1542414820
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4572648074254794, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1542414819}
+ 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: 1398061902}
+ - {fileID: 404715963}
+ - {fileID: 137000814}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1542414821
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114747560902451554, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1542414819}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1544287197
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100070, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1544287198}
+ m_Layer: 0
+ m_Name: Neck
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1544287198
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400070, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1544287197}
+ m_LocalRotation: {x: -5.2041704e-18, y: 4.2632927e-14, z: 2.273737e-13, w: 1}
+ m_LocalPosition: {x: -0.0000002520208, y: 0.15032491, z: 0.007929048}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476442}
+ m_Father: {fileID: 1869269957}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1544560131
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1544560132}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1544560132
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1544560131}
+ 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: 2048806585}
+ m_Father: {fileID: 1125272728}
+ 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: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1563294225
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1061688524953738, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1563294226}
+ - component: {fileID: 1563294227}
+ m_Layer: 0
+ m_Name: Hand Models
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1563294226
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4974089456128826, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1563294225}
+ 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: 444716542}
+ - {fileID: 1670684668}
+ m_Father: {fileID: 791481508}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1563294227
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114186152659676312, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1563294225}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c592f16851a620743868a31232613370, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1575750593
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1575750594}
+ - component: {fileID: 1575750597}
+ - component: {fileID: 1575750596}
+ - component: {fileID: 1575750595}
+ m_Layer: 5
+ m_Name: Play All Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1575750594
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1575750593}
+ 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: 1380121267}
+ m_Father: {fileID: 1342166475}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1575750595
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1575750593}
+ 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1575750596}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1342166476}
+ m_MethodName: PlayOnAllBodyParts
+ 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 &1575750596
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1575750593}
+ 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
+--- !u!222 &1575750597
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1575750593}
+--- !u!1 &1600475212
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1287265860742004, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1600475213}
+ m_Layer: 0
+ m_Name: RightHandAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1600475213
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4482255681612226, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1600475212}
+ 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: 1831518859}
+ m_Father: {fileID: 1288073601}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1611547331
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1501846747677908, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1611547332}
+ - component: {fileID: 1611547334}
+ - component: {fileID: 1611547333}
+ m_Layer: 0
+ m_Name: VerticalPlane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &1611547332
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4494433477066046, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1611547331}
+ m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.1, y: 0.00001, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 584560471}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!23 &1611547333
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23197025958151808, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1611547331}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5074e50ed3f02f64ab7f39096a5590bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1611547334
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33543263719158058, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1611547331}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1613062975
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1613062976}
+ - component: {fileID: 1613062979}
+ - component: {fileID: 1613062978}
+ - component: {fileID: 1613062977}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1613062976
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1613062975}
+ 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: 316364393}
+ m_Father: {fileID: 689336098}
+ 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: -17, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!114 &1613062977
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1613062975}
+ 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: 10917, 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
+--- !u!222 &1613062978
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1613062975}
+--- !u!114 &1613062979
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1613062975}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!1 &1627909956
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1475602129951188, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1627909957}
+ - component: {fileID: 1627909958}
+ m_Layer: 0
+ m_Name: middle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1627909957
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4088604332331054, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1627909956}
+ 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: 140898221}
+ - {fileID: 1220059043}
+ - {fileID: 1190203623}
+ m_Father: {fileID: 2483437}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1627909958
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114864015252059480, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1627909956}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1629613221
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100124, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1629613222}
+ m_Layer: 0
+ m_Name: RightShoulder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1629613222
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400124, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1629613221}
+ m_LocalRotation: {x: -0.000000014901161, y: 4.2632564e-14, z: -0.000000044703256,
+ w: 1}
+ m_LocalPosition: {x: 0.06105696, y: 0.09110509, z: 0.007055634}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476439}
+ m_Father: {fileID: 1869269957}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1630150758
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1630150759}
+ m_Layer: 0
+ m_Name: Ragdoll Joints
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1630150759
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1630150758}
+ 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: 111077816}
+ - {fileID: 218380968}
+ - {fileID: 119782600}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1641913275
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1996954743937194, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1641913276}
+ - component: {fileID: 1641913277}
+ m_Layer: 0
+ m_Name: index
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1641913276
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4348304978444730, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1641913275}
+ 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: 1146686600}
+ - {fileID: 786639311}
+ - {fileID: 2047951603}
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1641913277
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114558755167639708, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1641913275}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 862e1c8d784604a8ba021be6abc6470a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1647094080
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1647094081}
+ - component: {fileID: 1647094083}
+ - component: {fileID: 1647094082}
+ m_Layer: 5
+ m_Name: tactosy_right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1647094081
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1647094080}
+ 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: 940169798}
+ 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.8199997, y: 1.2199998}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1647094082
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1647094080}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 159bf72d3b52e014eb56d43149b96d8b, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1647094083
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1647094080}
+--- !u!1 &1650197130
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1650197131}
+ - component: {fileID: 1650197139}
+ - component: {fileID: 1650197138}
+ - component: {fileID: 1650197137}
+ - component: {fileID: 1650197136}
+ - component: {fileID: 1650197135}
+ - component: {fileID: 1650197134}
+ - component: {fileID: 1650197133}
+ - component: {fileID: 1650197132}
+ m_Layer: 0
+ m_Name: Grabbable Cube (1)
+ m_TagString: Cubes
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1650197131
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.082, y: 1.113, z: -0.258}
+ m_LocalScale: {x: 0.099999994, y: 0.099999994, z: 0.099999994}
+ m_Children: []
+ m_Father: {fileID: 688036712}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1650197132
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 11dd23e0d1b103642b773b8b2eaf26b6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ patternToSend: {fileID: 11400000, guid: 5f9548af75015c64295ef0fa38ef3183, type: 2}
+--- !u!114 &1650197133
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 18055ba762aa3994f9c10208cd088bc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1650197134
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ec2ac476f2fc9a45a4e69712580a603, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ precisionGrab: 0
+ rightSnapHandle: {fileID: 0}
+ leftSnapHandle: {fileID: 0}
+ throwVelocityWithAttachDistance: 0
+ throwMultiplier: 1
+ onGrabCollisionDelay: 0
+--- !u!114 &1650197135
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a3abaf4521bf2344ea21ed3020b98eb2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ disableWhenIdle: 0
+ allowedNearTouchControllers: 0
+ allowedTouchControllers: 0
+ ignoredColliders: []
+ isGrabbable: 1
+ holdButtonToGrab: 1
+ stayGrabbedOnTeleport: 1
+ validDrop: 1
+ grabOverrideButton: 0
+ allowedGrabControllers: 0
+ grabAttachMechanicScript: {fileID: 1650197134}
+ secondaryGrabActionScript: {fileID: 1650197133}
+ isUsable: 0
+ holdButtonToUse: 1
+ useOnlyIfGrabbed: 0
+ pointerActivatesUseAction: 0
+ useOverrideButton: 0
+ allowedUseControllers: 0
+ objectHighlighter: {fileID: 0}
+ touchHighlightColor: {r: 0, g: 0, b: 0, a: 0}
+ usingState: 0
+--- !u!54 &1650197136
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &1650197137
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!65 &1650197138
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &1650197139
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1650197130}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1652904148
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100062, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1652904149}
+ m_Layer: 0
+ m_Name: LeftShoulder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1652904149
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400062, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1652904148}
+ m_LocalRotation: {x: -0.000000044703484, y: 4.2632557e-14, z: -0.000000044703256,
+ w: 1}
+ m_LocalPosition: {x: -0.061058242, y: 0.09110424, z: 0.0070555084}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476443}
+ m_Father: {fileID: 1869269957}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1666846248
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1666846249}
+ - component: {fileID: 1666846252}
+ - component: {fileID: 1666846251}
+ - component: {fileID: 1666846250}
+ m_Layer: 8
+ m_Name: HeadModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1666846249
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1666846248}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0, y: 0.084, z: 0}
+ m_LocalScale: {x: 0.22, y: 0.22, z: 0.22}
+ m_Children: []
+ m_Father: {fileID: 1284476442}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1666846250
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1666846248}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!135 &1666846251
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1666846248}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &1666846252
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1666846248}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1670684667
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1433946982761302, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1670684668}
+ m_Layer: 0
+ m_Name: Physics Hands
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1670684668
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4238094411635756, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1670684667}
+ 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: 2483437}
+ - {fileID: 1819287518}
+ m_Father: {fileID: 1563294226}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1689996210
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1689996211}
+ - component: {fileID: 1689996212}
+ m_Layer: 5
+ m_Name: '[Shoes] Left'
+ m_TagString: Shooes
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1689996211
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1689996210}
+ 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: 114135778}
+ - {fileID: 1896981786}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 8
+ 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: -3.56, y: -2.63}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1689996212
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1689996210}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1701685732
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1952719937766460, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1701685733}
+ - component: {fileID: 1701685735}
+ - component: {fileID: 1701685734}
+ m_Layer: 0
+ m_Name: HorizontalPlane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &1701685733
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4858507111139268, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1701685732}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.1, y: 0.00001, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 584560471}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1701685734
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 23804919660389120, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1701685732}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5074e50ed3f02f64ab7f39096a5590bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1701685735
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 33378613211845398, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1701685732}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1707304022
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1910473203283544, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1707304023}
+ m_Layer: 0
+ m_Name: LeftControllerAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1707304023
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4978215952081374, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1707304022}
+ 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: 450860297}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1726639955
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1726639956}
+ - component: {fileID: 1726639958}
+ - component: {fileID: 1726639957}
+ m_Layer: 5
+ m_Name: Tacot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1726639956
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1726639955}
+ 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: 847052865}
+ 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: 3.32, y: 1.31}
+ m_SizeDelta: {x: 11.59, y: 5.45}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1726639957
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1726639955}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 4aa71fb0af869ae44875dab406884abb, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1726639958
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1726639955}
+--- !u!1 &1742251323
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1742251324}
+ m_Layer: 0
+ m_Name: UI Texts
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1742251324
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1742251323}
+ 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: 1818324908}
+ - {fileID: 2042508953}
+ - {fileID: 176951933}
+ - {fileID: 1857386322}
+ - {fileID: 494241450}
+ - {fileID: 477211994}
+ m_Father: {fileID: 0}
+ m_RootOrder: 8
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1756296555
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1573731592900666, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1756296556}
+ - component: {fileID: 1756296557}
+ m_Layer: 0
+ m_Name: LeftHandAttachPoint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1756296556
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4475173891939648, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1756296555}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.0157, y: -0.0513, z: -0.0578}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 538772792}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!54 &1756296557
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 54445129595783252, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1756296555}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!1001 &1775261156
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 317598316}
+ m_Modifications:
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_RootOrder
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 146900, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ propertyPath: m_Name
+ value: '[CameraRig]'
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_IsPrefabParent: 0
+--- !u!1 &1783872183
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1783872185}
+ - component: {fileID: 1783872184}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &1783872184
+Light:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1783872183}
+ m_Enabled: 1
+ serializedVersion: 8
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_Lightmapping: 4
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &1783872185
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1783872183}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 688036712}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1788085138
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1788085139}
+ - component: {fileID: 1788085141}
+ - component: {fileID: 1788085140}
+ m_Layer: 5
+ m_Name: Item Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1788085139
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1788085138}
+ 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: 1953535382}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 10, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1788085140
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1788085138}
+ 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: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &1788085141
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1788085138}
+--- !u!1 &1792996287
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1792996288}
+ - component: {fileID: 1792996296}
+ - component: {fileID: 1792996295}
+ - component: {fileID: 1792996294}
+ - component: {fileID: 1792996293}
+ - component: {fileID: 1792996292}
+ - component: {fileID: 1792996291}
+ - component: {fileID: 1792996289}
+ m_Layer: 0
+ m_Name: Grabbable Cube (2)
+ m_TagString: Cubes
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1792996288
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0.102, y: 1.113, z: -0.22099999}
+ m_LocalScale: {x: 0.099999994, y: 0.099999994, z: 0.099999994}
+ m_Children: []
+ m_Father: {fileID: 688036712}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &1792996289
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &1792996291
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 18055ba762aa3994f9c10208cd088bc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1792996292
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ec2ac476f2fc9a45a4e69712580a603, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ precisionGrab: 0
+ rightSnapHandle: {fileID: 0}
+ leftSnapHandle: {fileID: 0}
+ throwVelocityWithAttachDistance: 0
+ throwMultiplier: 1
+ onGrabCollisionDelay: 0
+--- !u!114 &1792996293
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a3abaf4521bf2344ea21ed3020b98eb2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ disableWhenIdle: 0
+ allowedNearTouchControllers: 0
+ allowedTouchControllers: 0
+ ignoredColliders: []
+ isGrabbable: 1
+ holdButtonToGrab: 1
+ stayGrabbedOnTeleport: 1
+ validDrop: 1
+ grabOverrideButton: 0
+ allowedGrabControllers: 0
+ grabAttachMechanicScript: {fileID: 1792996292}
+ secondaryGrabActionScript: {fileID: 1792996291}
+ isUsable: 0
+ holdButtonToUse: 1
+ useOnlyIfGrabbed: 0
+ pointerActivatesUseAction: 0
+ useOverrideButton: 0
+ allowedUseControllers: 0
+ objectHighlighter: {fileID: 0}
+ touchHighlightColor: {r: 0, g: 0, b: 0, a: 0}
+ usingState: 0
+--- !u!54 &1792996294
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &1792996295
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1792996296
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1792996287}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1799362730
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1799362731}
+ - component: {fileID: 1799362733}
+ - component: {fileID: 1799362732}
+ m_Layer: 5
+ m_Name: Tactal
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1799362731
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1799362730}
+ 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: 1468646422}
+ 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: 1.1400003, y: 0.33000135}
+ m_SizeDelta: {x: 11.59, y: 4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1799362732
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1799362730}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 0f2254132914d1f4fbedb2d5cfc8dcae, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1799362733
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1799362730}
+--- !u!1 &1806969733
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1061651550551484, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1806969734}
+ - component: {fileID: 1806969735}
+ m_Layer: 0
+ m_Name: Gesture Library
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1806969734
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4395903898592316, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1806969733}
+ 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: 791481508}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1806969735
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114000515623505006, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1806969733}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f8d540a965210f443930079a1ad41a71, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1808816405
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1730560945124626, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1808816406}
+ - component: {fileID: 1808816407}
+ m_Layer: 0
+ m_Name: Right Hand Attach Point
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1808816406
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4977676604287820, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1808816405}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.0141, y: -0.0387, z: -0.0594}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 36426133}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!54 &1808816407
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 54592707630803568, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1808816405}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 1
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!1 &1809216703
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1809216704}
+ m_Layer: 0
+ m_Name: VRTK Scripts
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1809216704
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1809216703}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.0521479, y: 1.2540956, z: 0.25547457}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1818324907
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: 0.328
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 0.7071068
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0.7071068
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: 0.813
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 1.292
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 1000
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 400
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 90
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: 'Grab the small cube to pick it up
+
+ Enter the sphere to trigger a haptic reaction'
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Haptic Reaction Help Text
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &1818324908 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 1818324907}
+--- !u!1 &1819287517
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1396298851505636, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1819287518}
+ - component: {fileID: 1819287524}
+ - component: {fileID: 1819287523}
+ - component: {fileID: 1819287522}
+ - component: {fileID: 1819287521}
+ - component: {fileID: 1819287520}
+ - component: {fileID: 1819287519}
+ m_Layer: 0
+ m_Name: RigidRoundHand_R
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1819287518
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4930726566791830, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 663617232}
+ - {fileID: 1641913276}
+ - {fileID: 772892186}
+ - {fileID: 807001123}
+ - {fileID: 814415650}
+ - {fileID: 36426133}
+ - {fileID: 1880603251}
+ m_Father: {fileID: 1670684668}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: -90, y: 180, z: 0}
+--- !u!114 &1819287519
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114696658258709028, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 1819287517}
+--- !u!114 &1819287520
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114484111883414362, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 1808816407}
+ controllerEvents: {fileID: 1819287522}
+ interactTouch: {fileID: 1819287519}
+--- !u!114 &1819287521
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114509189517675652, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 1819287522}
+ interactTouch: {fileID: 1819287519}
+ interactGrab: {fileID: 1819287520}
+--- !u!114 &1819287522
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114873666186308438, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 08224c2548b75214e81b837a73fae0f9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+ controllerHandId: 1
+ triggerGesture: {fileID: 0}
+ gripGesture: {fileID: 11400000, guid: 00b1d9b68c0fcb149b4a77ca61ba13c0, type: 2}
+ touchpadGesture: {fileID: 0}
+ buttonOneGesture: {fileID: 0}
+ buttonTwoGesture: {fileID: 0}
+ startMenuGesture: {fileID: 0}
+--- !u!114 &1819287523
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114831214037701944, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8bcd03e00992e084c8be61565d44b8bd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1819287524
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114368488987016902, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1819287517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9ea79be653ce14db8969d7225d95ec6c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1827742810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1294563422490880, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1827742811}
+ - component: {fileID: 1827742812}
+ m_Layer: 0
+ m_Name: bone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1827742811
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4211508663462816, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1827742810}
+ m_LocalRotation: {x: -0.20731795, y: 0.0090306, z: 0.027792262, w: 0.9778371}
+ m_LocalPosition: {x: -0.2068287, y: 0.2954596, z: -0.09853935}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 814415650}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 8.5308, y: 7.0464997, z: -11.571899}
+--- !u!136 &1827742812
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136018311780351028, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1827742810}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.049370002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1831518858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1295617316922432, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1831518859}
+ m_Layer: 0
+ m_Name: RightControllerAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1831518859
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4707447147038386, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1831518858}
+ 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: 1600475213}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1836021409 stripped
+GameObject:
+ m_PrefabParentObject: {fileID: 147176, guid: 4d293c8e162f3874b982baadd71153d2, type: 2}
+ m_PrefabInternal: {fileID: 1775261156}
+--- !u!1 &1840722476
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1978156016186648, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1840722477}
+ - component: {fileID: 1840722478}
+ m_Layer: 0
+ m_Name: bone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1840722477
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4121815110197452, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1840722476}
+ m_LocalRotation: {x: -0.19123267, y: -0.055678543, z: 0.07900553, w: 0.97677433}
+ m_LocalPosition: {x: -0.23521426, y: 0.30513787, z: -0.059033215}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 772892186}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -1.7105999, z: -8.6391}
+--- !u!136 &1840722478
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136087574594328558, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1840722476}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.034330003
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1841587741
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1841587747}
+ - component: {fileID: 1841587746}
+ - component: {fileID: 1841587745}
+ - component: {fileID: 1841587744}
+ - component: {fileID: 1841587742}
+ - component: {fileID: 1841587748}
+ - component: {fileID: 1841587743}
+ m_Layer: 0
+ m_Name: Sphere
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1841587742
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 064eb441a0471cf45a3356d08a2067a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ eventSender: {fileID: 1841587748}
+ lastUsedComponent: {fileID: 1841587748}
+ _keyList:
+ - ObjectEnteredInteractionArea
+ - ObjectExitedInteractionArea
+ - ObjectUsedInteractionArea
+ - ObjectFinishedInteractionArea
+ - ObjectInterruptInteractionArea
+ _valueList:
+ - foldoutOpenStatus: 1
+ reactionList:
+ - {fileID: 1094810989}
+ reactionTriggerMethodList:
+ - StartReaction
+ reactionTriggerIndexSelectionList: 00000000
+ - foldoutOpenStatus: 0
+ reactionList: []
+ reactionTriggerMethodList: []
+ reactionTriggerIndexSelectionList:
+ - foldoutOpenStatus: 0
+ reactionList: []
+ reactionTriggerMethodList: []
+ reactionTriggerIndexSelectionList:
+ - foldoutOpenStatus: 0
+ reactionList: []
+ reactionTriggerMethodList: []
+ reactionTriggerIndexSelectionList:
+ - foldoutOpenStatus: 0
+ reactionList: []
+ reactionTriggerMethodList: []
+ reactionTriggerIndexSelectionList:
+--- !u!114 &1841587743
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2ed2aa1a29b92ca4f84a26a5f6e9218b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ operation: 1
+ checkType: 1
+ identifiers:
+ - Cubes
+--- !u!23 &1841587744
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!135 &1841587745
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &1841587746
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1841587747
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.606, y: 0.73402447, z: 0.13}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_Children:
+ - {fileID: 1094810990}
+ m_Father: {fileID: 688036712}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1841587748
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1841587741}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 81be2159e26d1b847a5cfcb7d5dfa568, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ validObjectListPolicy: {fileID: 1841587743}
+--- !u!1 &1843169334
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1228810617523274, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1843169335}
+ - component: {fileID: 1843169337}
+ - component: {fileID: 1843169336}
+ m_Layer: 0
+ m_Name: LeftHandAnchor
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1843169335
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4440968765787812, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1843169334}
+ 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: 863184525}
+ m_Father: {fileID: 2024778040}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1843169336
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114217163107519250, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1843169334}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &1843169337
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114212909320761364, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1843169334}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a56f0178eefe7b9409460ae29588f961, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeType: 4
+ index: 1
+ triggerAxisName: LeftTrigger
+ gripAxisName: LeftGrip
+ touchpadHorizontalAxisName: LeftTrackpadHorizontal
+ touchpadVerticalAxisName: LeftTrackpadVertical
+--- !u!1001 &1857386321
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: -0.601
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: -1.227
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 1.442
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 180
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: 'Left Hand
+
+ Vive'
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Left Hand Help Text
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.x
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.z
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.y
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 271.04
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 509.1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &1857386322 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 1857386321}
+--- !u!1 &1869269956
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100136, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1869269957}
+ m_Layer: 0
+ m_Name: Spine2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1869269957
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400136, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1869269956}
+ m_LocalRotation: {x: 0, y: 0, z: 1.8056423e-35, w: 1}
+ m_LocalPosition: {x: -0.00000091440717, y: 0.13360204, z: -0.016264597}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1652904149}
+ - {fileID: 1544287198}
+ - {fileID: 1629613222}
+ m_Father: {fileID: 1284476438}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1880603250
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1604533724134352, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1880603251}
+ - component: {fileID: 1880603252}
+ m_Layer: 0
+ m_Name: forearm
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1880603251
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4755224638836044, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1880603250}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.088, y: 0.1044, z: -0.1811}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1819287518}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &1880603252
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136953014128808428, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1880603250}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.0205
+ m_Height: 0.29100004
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1896981785
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1896981786}
+ - component: {fileID: 1896981788}
+ - component: {fileID: 1896981787}
+ m_Layer: 5
+ m_Name: tactshoes_right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1896981786
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1896981785}
+ 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: 1689996211}
+ 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: 6.56, y: 0.19999886}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1896981787
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1896981785}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 6c318c39e5dd83c42ade86630def5356, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1896981788
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1896981785}
+--- !u!1 &1906596483
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1906596484}
+ m_Layer: 0
+ m_Name: Bhaptics
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1906596484
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1906596483}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0.566}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1162115787}
+ - {fileID: 625649194}
+ m_Father: {fileID: 1284476431}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1910505373
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1910505374}
+ - component: {fileID: 1910505381}
+ - component: {fileID: 1910505380}
+ - component: {fileID: 1910505379}
+ - component: {fileID: 1910505378}
+ - component: {fileID: 1910505377}
+ - component: {fileID: 1910505376}
+ - component: {fileID: 1910505375}
+ m_Layer: 0
+ m_Name: Grabbable Cube
+ m_TagString: Cubes
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1910505374
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.557, y: 0.792, z: 0.583}
+ m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
+ m_Children: []
+ m_Father: {fileID: 688036712}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1910505375
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 18055ba762aa3994f9c10208cd088bc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1910505376
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ec2ac476f2fc9a45a4e69712580a603, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ precisionGrab: 0
+ rightSnapHandle: {fileID: 0}
+ leftSnapHandle: {fileID: 0}
+ throwVelocityWithAttachDistance: 0
+ throwMultiplier: 1
+ onGrabCollisionDelay: 0
+--- !u!114 &1910505377
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a3abaf4521bf2344ea21ed3020b98eb2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ disableWhenIdle: 0
+ allowedNearTouchControllers: 0
+ allowedTouchControllers: 0
+ ignoredColliders: []
+ isGrabbable: 1
+ holdButtonToGrab: 1
+ stayGrabbedOnTeleport: 1
+ validDrop: 1
+ grabOverrideButton: 0
+ allowedGrabControllers: 0
+ grabAttachMechanicScript: {fileID: 1910505376}
+ secondaryGrabActionScript: {fileID: 1910505375}
+ isUsable: 0
+ holdButtonToUse: 1
+ useOnlyIfGrabbed: 0
+ pointerActivatesUseAction: 0
+ useOverrideButton: 0
+ allowedUseControllers: 0
+ objectHighlighter: {fileID: 0}
+ touchHighlightColor: {r: 0, g: 0, b: 0, a: 0}
+ usingState: 0
+--- !u!54 &1910505378
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ serializedVersion: 2
+ m_Mass: 1
+ m_Drag: 0
+ m_AngularDrag: 0.05
+ m_UseGravity: 0
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 0
+--- !u!23 &1910505379
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!65 &1910505380
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &1910505381
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1910505373}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1924638391
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1924638392}
+ - component: {fileID: 1924638395}
+ - component: {fileID: 1924638394}
+ - component: {fileID: 1924638393}
+ m_Layer: 5
+ m_Name: Scrollbar
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1924638392
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1924638391}
+ 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: 611413203}
+ m_Father: {fileID: 2118958340}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!114 &1924638393
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1924638391}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -2061169968, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1423808483}
+ m_HandleRect: {fileID: 1423808482}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &1924638394
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1924638391}
+ 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: 10907, 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
+--- !u!222 &1924638395
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1924638391}
+--- !u!1 &1928526047
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1928526048}
+ - component: {fileID: 1928526050}
+ - component: {fileID: 1928526049}
+ m_Layer: 5
+ m_Name: Item Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1928526048
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1928526047}
+ 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: 2005560391}
+ 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: 5, y: -0.5}
+ m_SizeDelta: {x: -30, y: -3}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1928526049
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1928526047}
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Option A
+--- !u!222 &1928526050
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1928526047}
+--- !u!1 &1947528021
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1947528022}
+ - component: {fileID: 1947528024}
+ - component: {fileID: 1947528023}
+ m_Layer: 5
+ m_Name: tactglove_left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1947528022
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1947528021}
+ 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: 514078125}
+ 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: -17.550001, y: 0.6799996}
+ m_SizeDelta: {x: 5.5, y: 5.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1947528023
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1947528021}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_Texture: {fileID: 2800000, guid: 65de9deb6699d1e438e3b78d26840493, type: 3}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1947528024
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1947528021}
+--- !u!1 &1953535381
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1953535382}
+ - component: {fileID: 1953535383}
+ m_Layer: 5
+ m_Name: Item
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1953535382
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1953535381}
+ 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: 122454696}
+ - {fileID: 1788085139}
+ - {fileID: 394221905}
+ m_Father: {fileID: 789891344}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1953535383
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1953535381}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 2109663825, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 122454697}
+ toggleTransition: 1
+ graphic: {fileID: 1788085140}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_IsOn: 1
+--- !u!1 &1992577262
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1992577263}
+ - component: {fileID: 1992577264}
+ m_Layer: 5
+ m_Name: '[Glove] Left'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1992577263
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1992577262}
+ 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: 634997060}
+ - {fileID: 545000210}
+ m_Father: {fileID: 1006506396}
+ m_RootOrder: 6
+ 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: -10.53, y: -3.11}
+ m_SizeDelta: {x: 1, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1992577264
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1992577262}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876c63562f1f72e498d2ae0ee343d094, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &2005560390
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2005560391}
+ - component: {fileID: 2005560392}
+ m_Layer: 5
+ m_Name: Item
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2005560391
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2005560390}
+ 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: 640547553}
+ - {fileID: 2056324024}
+ - {fileID: 1928526048}
+ m_Father: {fileID: 316364393}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2005560392
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2005560390}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 2109663825, 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_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_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 640547554}
+ toggleTransition: 1
+ graphic: {fileID: 2056324025}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_IsOn: 1
+--- !u!1 &2010008177
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100126, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2010008178}
+ m_Layer: 0
+ m_Name: RightToe_End
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2010008178
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400126, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2010008177}
+ m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0.0000000011347395, y: 0.000000004587741, z: 0.09992521}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1245194040}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2024778039
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1451268688835368, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2024778040}
+ - component: {fileID: 2024778041}
+ m_Layer: 0
+ m_Name: '[UnityBase_CameraRig]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2024778040
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4928960185606304, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2024778039}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.5, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 724699686}
+ - {fileID: 1843169335}
+ - {fileID: 1087430416}
+ m_Father: {fileID: 1380104169}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2024778041
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114030496420040178, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2024778039}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eb11f5366d9c17040b6a0ed716e36353, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ lockPhysicsUpdateRateToRenderFrequency: 1
+--- !u!1 &2031144552
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1517136650344390, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2031144553}
+ - component: {fileID: 2031144556}
+ - component: {fileID: 2031144555}
+ - component: {fileID: 2031144554}
+ m_Layer: 0
+ m_Name: OVRCameraRig
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2031144553
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4973452351988574, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2031144552}
+ 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: 1288073601}
+ m_Father: {fileID: 93853990}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2031144554
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114259044173967846, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2031144552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &2031144555
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114955355810483510, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2031144552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &2031144556
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114319718199485736, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2031144552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &2032420837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2032420838}
+ - component: {fileID: 2032420841}
+ - component: {fileID: 2032420839}
+ m_Layer: 8
+ m_Name: RightForearmModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2032420838
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2032420837}
+ m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068}
+ m_LocalPosition: {x: 0.1501, y: -0, z: 0}
+ m_LocalScale: {x: 0.12, y: 0.14, z: 0.12}
+ m_Children: []
+ m_Father: {fileID: 1284476440}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+--- !u!23 &2032420839
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2032420837}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &2032420841
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2032420837}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1001 &2042508952
+Prefab:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1742251324}
+ m_Modifications:
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalPosition.z
+ value: -0.601
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalRotation.w
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.x
+ value: 0.006
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchoredPosition.y
+ value: 2.091
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.x
+ value: 1000
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 549.4
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 180
+ objectReference: {fileID: 0}
+ - target: {fileID: 114642603537886326, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_Text
+ value: This body is mapped with haptics on the upper torso. Hit the body with
+ the cube to play a pattern. Hit with the sphere for a pulse.
+ objectReference: {fileID: 0}
+ - target: {fileID: 1678482369823558, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ propertyPath: m_Name
+ value: Body Help Text
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.x
+ value: 0.0010000004
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.z
+ value: 0.0010000004
+ objectReference: {fileID: 0}
+ - target: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_LocalScale.y
+ value: 0.0009999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 224175581045623504, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 549.4
+ objectReference: {fileID: 0}
+ - target: {fileID: 224435910559421880, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ propertyPath: m_SizeDelta.y
+ value: 549.4
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 100100000, guid: 55bcebf0300be464cb5f7ef8d78bb36d, type: 2}
+ m_IsPrefabParent: 0
+--- !u!224 &2042508953 stripped
+RectTransform:
+ m_PrefabParentObject: {fileID: 224861586572071280, guid: 55bcebf0300be464cb5f7ef8d78bb36d,
+ type: 2}
+ m_PrefabInternal: {fileID: 2042508952}
+--- !u!1 &2042970088
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 100132, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2042970089}
+ m_Layer: 0
+ m_Name: Spine
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2042970089
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 400132, guid: 9d87c9e4e1c3b4748a1b8dcfcd5ed78c, type: 3}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2042970088}
+ m_LocalRotation: {x: -1.3930783e-15, y: -0.00000001376344, z: 0.00000044177568,
+ w: 1}
+ m_LocalPosition: {x: -0.0000000056483196, y: 0.09923459, z: -0.012273348}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1284476438}
+ m_Father: {fileID: 1284476433}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2047951602
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1304511809735652, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2047951603}
+ - component: {fileID: 2047951604}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2047951603
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4963525775687238, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2047951602}
+ m_LocalRotation: {x: -0.1843855, y: -0.10542028, z: 0.17531382, w: 0.9613291}
+ m_LocalPosition: {x: -0.26486504, y: 0.29858646, z: -0.04743135}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1641913276}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 8.5308, y: -9.6659, z: 0}
+--- !u!136 &2047951604
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136399032289694602, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2047951602}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.023820002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2048806584
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2048806585}
+ - component: {fileID: 2048806587}
+ - component: {fileID: 2048806586}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2048806585
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2048806584}
+ 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: 1544560132}
+ 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: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2048806586
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2048806584}
+ 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
+--- !u!222 &2048806587
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2048806584}
+--- !u!1 &2056324023
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2056324024}
+ - component: {fileID: 2056324026}
+ - component: {fileID: 2056324025}
+ m_Layer: 5
+ m_Name: Item Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2056324024
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2056324023}
+ 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: 2005560391}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 10, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2056324025
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2056324023}
+ 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: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &2056324026
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2056324023}
+--- !u!1 &2062698093
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1888994616582004, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2062698094}
+ - component: {fileID: 2062698095}
+ m_Layer: 0
+ m_Name: bone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2062698094
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4475908241950904, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2062698093}
+ m_LocalRotation: {x: 0.24710183, y: 0.051211912, z: -0.063631974, w: -0.96554077}
+ m_LocalPosition: {x: 0.18004374, y: 0.3130201, z: -0.07055047}
+ m_LocalScale: {x: 0.9999995, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 777583215}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 6.0762, y: -15.1172, z: 19.823}
+--- !u!136 &2062698095
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 136610530761379460, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2062698093}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ m_Radius: 0.004
+ m_Height: 0.023960002
+ m_Direction: 2
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2077198171
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2077198172}
+ - component: {fileID: 2077198174}
+ - component: {fileID: 2077198173}
+ m_Layer: 0
+ m_Name: BodyModel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2077198172
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2077198171}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0, y: 0.007, z: -0}
+ m_LocalScale: {x: 0.2, y: 0.3, z: 0.2}
+ m_Children: []
+ m_Father: {fileID: 1284476438}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &2077198173
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2077198171}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &2077198174
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2077198171}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2107991717
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2107991718}
+ - component: {fileID: 2107991720}
+ - component: {fileID: 2107991719}
+ m_Layer: 5
+ m_Name: Arrow
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2107991718
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2107991717}
+ 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: 1175871414}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -15, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2107991719
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2107991717}
+ 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: 10915, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &2107991720
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2107991717}
+--- !u!1 &2118958339
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2118958340}
+ - component: {fileID: 2118958343}
+ - component: {fileID: 2118958342}
+ - component: {fileID: 2118958341}
+ m_Layer: 5
+ m_Name: Template
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &2118958340
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2118958339}
+ 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: 768331924}
+ - {fileID: 1924638392}
+ m_Father: {fileID: 1175871414}
+ 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: 2}
+ m_SizeDelta: {x: 0, y: 150}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!114 &2118958341
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2118958339}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 789891344}
+ m_Horizontal: 0
+ m_Vertical: 1
+ m_MovementType: 2
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 16
+ m_Viewport: {fileID: 768331924}
+ m_HorizontalScrollbar: {fileID: 0}
+ m_VerticalScrollbar: {fileID: 1924638393}
+ m_HorizontalScrollbarVisibility: 0
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: 0
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &2118958342
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2118958339}
+ 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
+--- !u!222 &2118958343
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2118958339}
+--- !u!1 &2133304074
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1761415754028618, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2133304075}
+ - component: {fileID: 2133304077}
+ - component: {fileID: 2133304076}
+ m_Layer: 5
+ m_Name: Hints
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2133304075
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 224715467185839308, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2133304074}
+ 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: 584085275}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 41, y: -8}
+ m_SizeDelta: {x: 82, y: 16}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2133304076
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114623937304754896, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2133304074}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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: 0
+ 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: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Control Hints
+--- !u!222 &2133304077
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 222344553750954074, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2133304074}
+--- !u!1 &2137910511
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 1597183874378494, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 2137910512}
+ - component: {fileID: 2137910514}
+ - component: {fileID: 2137910513}
+ m_Layer: 0
+ m_Name: RightHand
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2137910512
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 4162364069602562, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2137910511}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.2, y: 1.2, z: 0.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 648673135}
+ - {fileID: 661146616}
+ m_Father: {fileID: 669998280}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2137910513
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114758034639662924, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2137910511}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b32642724c1719444826991e4ff8fccd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoStartSampling: 1
+ velocityAverageFrames: 5
+ angularVelocityAverageFrames: 10
+--- !u!114 &2137910514
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 114202371887820390, guid: 52d03cf50b60de244a4d9e97934eec67,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 2137910511}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0893f0c8a7712e8458dc3722eef95aca, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ selected: 0
diff --git a/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity.meta b/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity.meta
new file mode 100644
index 0000000..0efc470
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Haptic Example Scene.unity.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: eca80662c935fd7458bc2b08bf184b2e
+timeCreated: 1551303725
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects.meta b/Assets/VIRTUOSO/Examples/Scripted Objects.meta
new file mode 100644
index 0000000..0bd03f7
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: bf909ae293ceed345aab3343b3687db1
+folderAsset: yes
+timeCreated: 1546448237
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures.meta b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures.meta
new file mode 100644
index 0000000..d7d68bb
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: dd64e8d669464da46bd0a3159d627d77
+folderAsset: yes
+timeCreated: 1546879249
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset
new file mode 100644
index 0000000..6308407
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3a946ec1f6eba3847a40b65e89f9f034, type: 3}
+ m_Name: Grab
+ m_EditorClassIdentifier:
+ gestureConditionList:
+ - featureToCheck: 6
+ featureValue: 1
+ handSpecific: 0
+ specificHand: 0
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset.meta b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset.meta
new file mode 100644
index 0000000..4043c10
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Grab.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 00b1d9b68c0fcb149b4a77ca61ba13c0
+timeCreated: 1546448255
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset
new file mode 100644
index 0000000..c91d524
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3a946ec1f6eba3847a40b65e89f9f034, type: 3}
+ m_Name: Pinch
+ m_EditorClassIdentifier:
+ gestureConditionList:
+ - featureToCheck: 7
+ featureValue: 1
+ handSpecific: 0
+ specificHand: 0
diff --git a/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset.meta b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset.meta
new file mode 100644
index 0000000..93e2e3c
--- /dev/null
+++ b/Assets/VIRTUOSO/Examples/Scripted Objects/Gestures/Pinch.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 9a2bef50be5bb8342aaf62f44dfbefe8
+timeCreated: 1547581165
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials.meta b/Assets/VIRTUOSO/Materials.meta
new file mode 100644
index 0000000..73f5f1b
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 88d9314c7f908f64a8d94624ad003d07
+folderAsset: yes
+timeCreated: 1554232320
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat
new file mode 100644
index 0000000..257011e
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat
@@ -0,0 +1,76 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: HapticPatternHitLocation_Active
+ m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.35335144, g: 0.32320502, b: 0.7205882, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat.meta b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat.meta
new file mode 100644
index 0000000..6ea5a2e
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Active.mat.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: cfb9c0ad0f7cc3f489fe4a69ed117f38
+timeCreated: 1554232300
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat
new file mode 100644
index 0000000..19eabd1
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat
@@ -0,0 +1,76 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: HapticPatternHitLocation_Inactive
+ m_Shader: {fileID: 4800000, guid: 4c84081e4523a5646919b30697cfccb8, type: 3}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.50395554, g: 0.46323526, b: 1, a: 0.19607843}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat.meta b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat.meta
new file mode 100644
index 0000000..bdba433
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitLocation_Inactive.mat.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 5b923cd611d17a9419f5788d216210e3
+timeCreated: 1554232300
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat b/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat
new file mode 100644
index 0000000..9ab4c34
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat
@@ -0,0 +1,76 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: HapticPatternHitVisualization
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 0, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat.meta b/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat.meta
new file mode 100644
index 0000000..6f476a8
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternHitVisualization.mat.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 3d9809e611ea4f040aa4ba1c97679ff1
+timeCreated: 1556041615
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat b/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat
new file mode 100644
index 0000000..a7e4e31
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat
@@ -0,0 +1,107 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: HapticPatternLineRenderer
+ m_Shader: {fileID: 4800000, guid: 89b31743c7038024bb7feb2af9c3a232, type: 3}
+ m_ShaderKeywords: _COLORCOLOR_ON _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ColorMask: 15
+ - _ColorMode: 4
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 0
+ - _EmissionEnabled: 0
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 0
+ - _InvFade: 1
+ - _LightingEnabled: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _Shininess: 0.7
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 0
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
+ - _EmisColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 0}
+ - _Emission: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 1, g: 1, b: 1, a: 1}
+ - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
diff --git a/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat.meta b/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat.meta
new file mode 100644
index 0000000..0eaa4da
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/HapticPatternLineRenderer.mat.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 8e0e7d5234ddbdc48829ca867689274d
+timeCreated: 1556025569
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Materials/UnlitWhite.mat b/Assets/VIRTUOSO/Materials/UnlitWhite.mat
new file mode 100644
index 0000000..73b8f42
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/UnlitWhite.mat
@@ -0,0 +1,76 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: UnlitWhite
+ m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/VIRTUOSO/Materials/UnlitWhite.mat.meta b/Assets/VIRTUOSO/Materials/UnlitWhite.mat.meta
new file mode 100644
index 0000000..05696c4
--- /dev/null
+++ b/Assets/VIRTUOSO/Materials/UnlitWhite.mat.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 5969cc5b3b50cad4595ffacc3129c769
+timeCreated: 1556025849
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs.meta b/Assets/VIRTUOSO/Prefabs.meta
new file mode 100644
index 0000000..b776e99
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: f72eeea04be752b41ba4e178963e61a6
+folderAsset: yes
+timeCreated: 1544123344
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/HapticSDK.meta b/Assets/VIRTUOSO/Prefabs/HapticSDK.meta
new file mode 100644
index 0000000..2f35b28
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/HapticSDK.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: a1e390efcbf21be45a3798f819988d41
+folderAsset: yes
+timeCreated: 1554234800
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab b/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab
new file mode 100644
index 0000000..997d694
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab
@@ -0,0 +1,955 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+ m_ObjectHideFlags: 1
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications: []
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 0}
+ m_RootGameObject: {fileID: 1053843759791868}
+ m_IsPrefabParent: 1
+--- !u!1 &1035385870975372
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4054231629665346}
+ m_Layer: 0
+ m_Name: Left_Shoulder_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1053843759791868
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4271500221960068}
+ - component: {fileID: 114208904744087430}
+ m_Layer: 0
+ m_Name: Haptic Visualization Body
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1083105962149960
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4631098692621878}
+ - component: {fileID: 136089835174983310}
+ - component: {fileID: 114012929115563988}
+ m_Layer: 8
+ m_Name: Right_Upper_Arm_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1099149619659028
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4525650680892206}
+ - component: {fileID: 136407344686077820}
+ - component: {fileID: 114377134507875152}
+ m_Layer: 8
+ m_Name: Left_Knee_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1114742339652056
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4877908846605584}
+ - component: {fileID: 136654630011083612}
+ - component: {fileID: 114783843953625652}
+ m_Layer: 8
+ m_Name: Ribs
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1167577692357882
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4453963229045382}
+ m_Layer: 0
+ m_Name: Neck
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1247336718772814
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4292699886160312}
+ - component: {fileID: 136884419415170528}
+ - component: {fileID: 114490903555144712}
+ m_Layer: 8
+ m_Name: Left_Wrist_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1264096109293900
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4236578248422772}
+ - component: {fileID: 136341330852093402}
+ - component: {fileID: 114203006580595834}
+ m_Layer: 8
+ m_Name: Left_Upper_Arm_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1282347187217802
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4938691408390086}
+ - component: {fileID: 136735353089342698}
+ - component: {fileID: 114536451109548210}
+ m_Layer: 8
+ m_Name: Right_Wrist_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1386005033434358
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4174663229968330}
+ - component: {fileID: 136132395505693606}
+ - component: {fileID: 114165963249344892}
+ m_Layer: 8
+ m_Name: Right_Thigh_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1392779160023346
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4767739134601712}
+ - component: {fileID: 136347526042230748}
+ - component: {fileID: 114811040180811708}
+ m_Layer: 8
+ m_Name: Left_Forearm_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1408092913153990
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4763025958127566}
+ - component: {fileID: 136755727195907238}
+ - component: {fileID: 114058718944829676}
+ m_Layer: 8
+ m_Name: Right_Forearm_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1528493124020778
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4172871355335284}
+ - component: {fileID: 136550040054478894}
+ - component: {fileID: 114881026745060690}
+ - component: {fileID: 33148308552271424}
+ - component: {fileID: 23272952462608808}
+ m_Layer: 8
+ m_Name: Hip
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1769606172213892
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4647434389575900}
+ - component: {fileID: 136916909018245066}
+ - component: {fileID: 114102444894479292}
+ m_Layer: 8
+ m_Name: Left_Thigh_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1889990419116682
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4621912735386154}
+ m_Layer: 0
+ m_Name: Right_Shoulder_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1903020889364280
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4899135427112030}
+ - component: {fileID: 136372234853610230}
+ - component: {fileID: 114294154893535948}
+ m_Layer: 8
+ m_Name: Right_Knee_Joint_01
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1919306430183628
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4465287776919878}
+ - component: {fileID: 136852640287320400}
+ - component: {fileID: 114737506146178392}
+ m_Layer: 8
+ m_Name: Head
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4054231629665346
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1035385870975372}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.109, y: 0.30299997, z: -0.003}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4236578248422772}
+ m_Father: {fileID: 4877908846605584}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4172871355335284
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1528493124020778}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.0337268, z: 0.035603084}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4647434389575900}
+ - {fileID: 4174663229968330}
+ m_Father: {fileID: 4271500221960068}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4174663229968330
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1386005033434358}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.06890567, y: -0.12026131, z: 0.024128828}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4899135427112030}
+ m_Father: {fileID: 4172871355335284}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4236578248422772
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1264096109293900}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.06358527, y: 0, z: -3.1086245e-17}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4767739134601712}
+ m_Father: {fileID: 4054231629665346}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4271500221960068
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1053843759791868}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.806, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4172871355335284}
+ - {fileID: 4877908846605584}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4292699886160312
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1247336718772814}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.3473, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 4767739134601712}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4453963229045382
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1167577692357882}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.39391303, z: -0.03425329}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4465287776919878}
+ m_Father: {fileID: 4877908846605584}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4465287776919878
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1919306430183628}
+ m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.07959311, z: -2.0962138e-17}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 4453963229045382}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4525650680892206
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1099149619659028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.061, y: -0.3707034, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 4647434389575900}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4621912735386154
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1889990419116682}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.115, y: 0.303, z: -0.002999954}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4631098692621878}
+ m_Father: {fileID: 4877908846605584}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4631098692621878
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1083105962149960}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.063585564, y: 0, z: -0.000000039259945}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4763025958127566}
+ m_Father: {fileID: 4621912735386154}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4647434389575900
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1769606172213892}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.06890549, y: -0.12026149, z: 0.024128921}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4525650680892206}
+ m_Father: {fileID: 4172871355335284}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4763025958127566
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1408092913153990}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.24062023, y: 0, z: -0.012117967}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4938691408390086}
+ m_Father: {fileID: 4631098692621878}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4767739134601712
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1392779160023346}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.2383711, y: 0, z: -0.0012605645}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4292699886160312}
+ m_Father: {fileID: 4236578248422772}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4877908846605584
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1114742339652056}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.1426954, z: 0.027298741}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 4054231629665346}
+ - {fileID: 4453963229045382}
+ - {fileID: 4621912735386154}
+ m_Father: {fileID: 4271500221960068}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4899135427112030
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1903020889364280}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.054, y: -0.37070364, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 4174663229968330}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4938691408390086
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1282347187217802}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.312, y: 0, z: 0.007066546}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 4763025958127566}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &23272952462608808
+MeshRenderer:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1528493124020778}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &33148308552271424
+MeshFilter:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1528493124020778}
+ m_Mesh: {fileID: 0}
+--- !u!114 &114012929115563988
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1083105962149960}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 14
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114058718944829676
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1408092913153990}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 16
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114102444894479292
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1769606172213892}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 1
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 1
+ drawGizmoUnselected: 0
+--- !u!114 &114165963249344892
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1386005033434358}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 2
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114203006580595834
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1264096109293900}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 13
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114208904744087430
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1053843759791868}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a4a905045b12a42a41413d4bef4b6c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ timeToFadeOut: 1
+ hapticPatternVisualMesh: {fileID: 10207, guid: 0000000000000000e000000000000000,
+ type: 0}
+ hapticPatternVisualMaterial: {fileID: 2100000, guid: 3d9809e611ea4f040aa4ba1c97679ff1,
+ type: 2}
+--- !u!114 &114294154893535948
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1903020889364280}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 4
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114377134507875152
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1099149619659028}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 3
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 1
+ drawGizmoUnselected: 0
+--- !u!114 &114490903555144712
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1247336718772814}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 17
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114536451109548210
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1282347187217802}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 18
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114737506146178392
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1919306430183628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 10
+ polarAxis: {x: 1, y: 0, z: 0}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114783843953625652
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1114742339652056}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 7
+ polarAxis: {x: 1, y: 0, z: 0}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114811040180811708
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1392779160023346}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 15
+ polarAxis: {x: 0, y: 0, z: 1}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!114 &114881026745060690
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1528493124020778}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b723a283540a41e48a91402afa4a18a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ attachedBody: 0
+ polarAxis: {x: 1, y: 0, z: 0}
+ invertAngleDirection: 0
+ drawGizmoUnselected: 0
+--- !u!136 &136089835174983310
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1083105962149960}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06015505
+ m_Height: 0.2406202
+ m_Direction: 0
+ m_Center: {x: 0.1203101, y: 0, z: 0}
+--- !u!136 &136132395505693606
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1386005033434358}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.3717341
+ m_Direction: 1
+ m_Center: {x: 0.06, y: -0.1858671, z: 0}
+--- !u!136 &136341330852093402
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1264096109293900}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.05959277
+ m_Height: 0.23837107
+ m_Direction: 0
+ m_Center: {x: -0.11918554, y: 0, z: 0}
+--- !u!136 &136347526042230748
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1392779160023346}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.3
+ m_Direction: 0
+ m_Center: {x: -0.1779953, y: 0, z: 0}
+--- !u!136 &136372234853610230
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1903020889364280}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.50453115
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.2522656, z: 0}
+--- !u!136 &136407344686077820
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1099149619659028}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.5045313
+ m_Direction: 1
+ m_Center: {x: 0, y: -0.2522657, z: 0}
+--- !u!136 &136550040054478894
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1528493124020778}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.1
+ m_Height: 0.2311621
+ m_Direction: 1
+ m_Center: {x: -0.006552562, y: -0.02565179, z: 0.00000001490116}
+--- !u!136 &136654630011083612
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1114742339652056}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.1
+ m_Height: 0.4
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.21, z: 0}
+--- !u!136 &136735353089342698
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1282347187217802}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.04
+ m_Height: 0.1
+ m_Direction: 0
+ m_Center: {x: 0.05, y: 0, z: 0}
+--- !u!136 &136755727195907238
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1408092913153990}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.28
+ m_Direction: 0
+ m_Center: {x: 0.16, y: 0, z: 0}
+--- !u!136 &136852640287320400
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1919306430183628}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.1
+ m_Height: 0.22
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.1, z: 0}
+--- !u!136 &136884419415170528
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1247336718772814}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.04
+ m_Height: 0.1
+ m_Direction: 0
+ m_Center: {x: -0.05, y: 0, z: 0}
+--- !u!136 &136916909018245066
+CapsuleCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1769606172213892}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.06
+ m_Height: 0.37173384
+ m_Direction: 1
+ m_Center: {x: -0.06, y: -0.1858669, z: 0}
diff --git a/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab.meta b/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab.meta
new file mode 100644
index 0000000..8dcde63
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/HapticSDK/Haptic Visualization Body.prefab.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 2e599cc0145c01a4eb72f91e86ee1192
+timeCreated: 1556135203
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab b/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab
new file mode 100644
index 0000000..fdaea08
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab
@@ -0,0 +1,115 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+ m_ObjectHideFlags: 1
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications: []
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 0}
+ m_RootGameObject: {fileID: 1869474814193224}
+ m_IsPrefabParent: 1
+--- !u!1 &1869474814193224
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4948784911913882}
+ - component: {fileID: 33177577060087966}
+ - component: {fileID: 135729222570438320}
+ - component: {fileID: 23549047301104296}
+ - component: {fileID: 114960066427519544}
+ m_Layer: 0
+ m_Name: Hit Location
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4948784911913882
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1869474814193224}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.05, y: 0.05, z: 0.05}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &23549047301104296
+MeshRenderer:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1869474814193224}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_Materials:
+ - {fileID: 2100000, guid: cfb9c0ad0f7cc3f489fe4a69ed117f38, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 1
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &33177577060087966
+MeshFilter:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1869474814193224}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!114 &114960066427519544
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1869474814193224}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 68547b836d856594492dc71ce6e4d9e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ hitAngle: 0
+ hitHeight: 0
+ intensity: 0
+ timing: 0
+ keyFrameIndex: 0
+ isTemporary: 0
+--- !u!135 &135729222570438320
+SphereCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1869474814193224}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.75
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab.meta b/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab.meta
new file mode 100644
index 0000000..349b525
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/HapticSDK/Hit Location.prefab.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: d5a00861e7f46694596ab7fa221e9880
+timeCreated: 1554234804
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab b/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab
new file mode 100644
index 0000000..0d5426f
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab
@@ -0,0 +1,660 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+ m_ObjectHideFlags: 1
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications: []
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 0}
+ m_RootGameObject: {fileID: 1530813272837972}
+ m_IsPrefabParent: 1
+--- !u!1 &1008300763738600
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4066959826334798}
+ - component: {fileID: 20059012370197968}
+ - component: {fileID: 114272501480705338}
+ - component: {fileID: 92860168854984720}
+ m_Layer: 0
+ m_Name: Camera (head)
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1137961307450786
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4447134295776998}
+ - component: {fileID: 114799103268352884}
+ m_Layer: 0
+ m_Name: Controller (right)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1298517128135166
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4320580495385126}
+ - component: {fileID: 20173899230636822}
+ - component: {fileID: 124879373713902466}
+ - component: {fileID: 114722099414197240}
+ m_Layer: 0
+ m_Name: Camera (eye)
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1334760165482454
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4806820895658530}
+ - component: {fileID: 114283496042481242}
+ m_Layer: 0
+ m_Name: Model
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1429831684904166
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4125342936573170}
+ - component: {fileID: 81268690088085246}
+ - component: {fileID: 114720572018341394}
+ m_Layer: 0
+ m_Name: Camera (ears)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1469340642443624
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4057365329095650}
+ - component: {fileID: 114322037301311306}
+ m_Layer: 0
+ m_Name: Model
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1500525119058844
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4814017328576562}
+ - component: {fileID: 114239814234397900}
+ - component: {fileID: 23817272513856494}
+ - component: {fileID: 33874511872519910}
+ - component: {fileID: 114275759369447404}
+ m_Layer: 0
+ m_Name: '[CameraRig]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1530813272837972
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4174144911341272}
+ - component: {fileID: 114570725477862640}
+ m_Layer: 0
+ m_Name: SteamVR (Pre 2.0)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!1 &1884910531735076
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4734078123124586}
+ - component: {fileID: 114308243647686688}
+ m_Layer: 0
+ m_Name: Controller (left)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1979197243136844
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4749873164935810}
+ - component: {fileID: 114736430303698032}
+ m_Layer: 0
+ m_Name: '[SteamVR]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4057365329095650
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1469340642443624}
+ 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: 4734078123124586}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4066959826334798
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1008300763738600}
+ 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: 4320580495385126}
+ - {fileID: 4125342936573170}
+ m_Father: {fileID: 4814017328576562}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4125342936573170
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1429831684904166}
+ 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: 4066959826334798}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4174144911341272
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1530813272837972}
+ 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: 4814017328576562}
+ - {fileID: 4749873164935810}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4320580495385126
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1298517128135166}
+ 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: 4066959826334798}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4447134295776998
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1137961307450786}
+ 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: 4806820895658530}
+ m_Father: {fileID: 4814017328576562}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4734078123124586
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1884910531735076}
+ 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: 4057365329095650}
+ m_Father: {fileID: 4814017328576562}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4749873164935810
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1979197243136844}
+ 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: 4174144911341272}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4806820895658530
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1334760165482454}
+ 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: 4447134295776998}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4814017328576562
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1500525119058844}
+ 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: 4734078123124586}
+ - {fileID: 4447134295776998}
+ - {fileID: 4066959826334798}
+ m_Father: {fileID: 4174144911341272}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &20059012370197968
+Camera:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1008300763738600}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 4
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0
+ far clip plane: 1
+ field of view: 60
+ orthographic: 1
+ orthographic size: 1
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 0
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!20 &20173899230636822
+Camera:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1298517128135166}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.05
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 0
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!23 &23817272513856494
+MeshRenderer:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1500525119058844}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &33874511872519910
+MeshFilter:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1500525119058844}
+ m_Mesh: {fileID: 0}
+--- !u!81 &81268690088085246
+AudioListener:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1429831684904166}
+ m_Enabled: 1
+--- !u!92 &92860168854984720
+Behaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1008300763738600}
+ m_Enabled: 1
+--- !u!114 &114239814234397900
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1500525119058844}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e3b47c2980b93bc48844a54641dab5b8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ left: {fileID: 1884910531735076}
+ right: {fileID: 1137961307450786}
+ objects: []
+ assignAllBeforeIdentified: 0
+--- !u!114 &114272501480705338
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1008300763738600}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d37c2cf88f7c59f4c8cf5d3812568143, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ index: 0
+ origin: {fileID: 0}
+--- !u!114 &114275759369447404
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1500525119058844}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1f0522eaef74d984591c060d05a095c8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ borderThickness: 0.15
+ wireframeHeight: 2
+ drawWireframeWhenSelectedOnly: 0
+ drawInGame: 0
+ size: 0
+ color: {r: 0, g: 1, b: 1, a: 1}
+ vertices:
+ - {x: 1.5, y: 0.01, z: 1.125}
+ - {x: 1.5, y: 0.01, z: -1.125}
+ - {x: -1.5, y: 0.01, z: -1.125}
+ - {x: -1.5, y: 0.01, z: 1.125}
+ - {x: 1.65, y: 0.01, z: 1.275}
+ - {x: 1.65, y: 0.01, z: -1.275}
+ - {x: -1.65, y: 0.01, z: -1.275}
+ - {x: -1.65, y: 0.01, z: 1.275}
+--- !u!114 &114283496042481242
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1334760165482454}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5890e3cad70bea64d91aef9145ba3454, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ index: -1
+ modelOverride:
+ shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ verbose: 0
+ createComponents: 1
+ updateDynamically: 1
+--- !u!114 &114308243647686688
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1884910531735076}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d37c2cf88f7c59f4c8cf5d3812568143, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ index: -1
+ origin: {fileID: 0}
+--- !u!114 &114322037301311306
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1469340642443624}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5890e3cad70bea64d91aef9145ba3454, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ index: -1
+ modelOverride:
+ shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ verbose: 0
+ createComponents: 1
+ updateDynamically: 1
+--- !u!114 &114570725477862640
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1530813272837972}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 0
+ actualBoundaries: {fileID: 1500525119058844}
+ actualHeadset: {fileID: 1298517128135166}
+ actualLeftController: {fileID: 1884910531735076}
+ actualRightController: {fileID: 1137961307450786}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 1469340642443624}
+ modelAliasRightController: {fileID: 1334760165482454}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_SteamVRSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_SteamVRBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_SteamVRHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_SteamVRController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_FallbackTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_NoHand
+ descriptionIndex: 0
+--- !u!114 &114720572018341394
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1429831684904166}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 49a86c1078ce4314b9c4224560e031b9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ vrcam: {fileID: 0}
+--- !u!114 &114722099414197240
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1298517128135166}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6bca9ccf900ccc84c887d783321d27e2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _head: {fileID: 4066959826334798}
+ _ears: {fileID: 4125342936573170}
+ wireframe: 0
+--- !u!114 &114736430303698032
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1979197243136844}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e979227f3384fac4b8ca0b3550bf005c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ pauseGameWhenDashboardIsVisible: 1
+ lockPhysicsUpdateRateToRenderFrequency: 1
+ externalCamera: {fileID: 0}
+ externalCameraConfigPath: externalcamera.cfg
+ trackingSpace: 1
+--- !u!114 &114799103268352884
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1137961307450786}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d37c2cf88f7c59f4c8cf5d3812568143, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ index: -1
+ origin: {fileID: 0}
+--- !u!124 &124879373713902466
+Behaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1298517128135166}
+ m_Enabled: 1
diff --git a/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab.meta b/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab.meta
new file mode 100644
index 0000000..8236bed
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/SteamVR (Pre 2.0).prefab.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 867b75944957c6f4e8d9230c068e1624
+timeCreated: 1548270708
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab b/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab
new file mode 100644
index 0000000..eb2c975
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab
@@ -0,0 +1,285 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+ m_ObjectHideFlags: 1
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications: []
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 0}
+ m_RootGameObject: {fileID: 1824136381808930}
+ m_IsPrefabParent: 1
+--- !u!1 &1418099757997208
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4130436502419554}
+ m_Layer: 0
+ m_Name: Hands
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1589639960284702
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4742538663691552}
+ - component: {fileID: 114298336582019970}
+ m_Layer: 0
+ m_Name: SteamVR
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!1 &1704517358722742
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4318050741881642}
+ - component: {fileID: 114315273328022568}
+ m_Layer: 0
+ m_Name: Oculus
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!1 &1805614529223182
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4145184380927994}
+ m_Layer: 0
+ m_Name: '[VRTK_SDKSetups]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1824136381808930
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4971090550619334}
+ - component: {fileID: 114820094090411886}
+ m_Layer: 0
+ m_Name: '[VRTK_SDKManager]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4130436502419554
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1418099757997208}
+ 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: 4145184380927994}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4145184380927994
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1805614529223182}
+ 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: 4742538663691552}
+ - {fileID: 4318050741881642}
+ - {fileID: 4130436502419554}
+ m_Father: {fileID: 4971090550619334}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4318050741881642
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1704517358722742}
+ 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: 4145184380927994}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4742538663691552
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1589639960284702}
+ 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: 4145184380927994}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4971090550619334
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1824136381808930}
+ 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: 4145184380927994}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &114298336582019970
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1589639960284702}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 0
+ actualBoundaries: {fileID: 0}
+ actualHeadset: {fileID: 0}
+ actualLeftController: {fileID: 0}
+ actualRightController: {fileID: 0}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 0}
+ modelAliasRightController: {fileID: 0}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_SteamVRSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_SteamVRBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_SteamVRHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_SteamVRController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_SteamVRTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_NoHand
+ descriptionIndex: 0
+--- !u!114 &114315273328022568
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1704517358722742}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eeda6d41317f444b900e374895f14e95, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoPopulateObjectReferences: 1
+ actualBoundaries: {fileID: 0}
+ actualHeadset: {fileID: 0}
+ actualLeftController: {fileID: 0}
+ actualRightController: {fileID: 0}
+ actualTrackers: []
+ actualHand: {fileID: 0}
+ modelAliasLeftController: {fileID: 0}
+ modelAliasRightController: {fileID: 0}
+ cachedSystemSDKInfo:
+ baseTypeName: VRTK.SDK_BaseSystem
+ fallbackTypeName: VRTK.SDK_FallbackSystem
+ typeName: VRTK.SDK_OculusSystem
+ descriptionIndex: 0
+ cachedBoundariesSDKInfo:
+ baseTypeName: VRTK.SDK_BaseBoundaries
+ fallbackTypeName: VRTK.SDK_FallbackBoundaries
+ typeName: VRTK.SDK_OculusBoundaries
+ descriptionIndex: 0
+ cachedHeadsetSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHeadset
+ fallbackTypeName: VRTK.SDK_FallbackHeadset
+ typeName: VRTK.SDK_OculusHeadset
+ descriptionIndex: 0
+ cachedControllerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseController
+ fallbackTypeName: VRTK.SDK_FallbackController
+ typeName: VRTK.SDK_OculusController
+ descriptionIndex: 0
+ cachedTrackerSDKInfo:
+ baseTypeName: VRTK.SDK_BaseTracker
+ fallbackTypeName: VRTK.SDK_FallbackTracker
+ typeName: VRTK.SDK_OculusTracker
+ descriptionIndex: 0
+ cachedHandSDKInfo:
+ baseTypeName: VRTK.SDK_BaseHand
+ fallbackTypeName: VRTK.SDK_FallbackHand
+ typeName: VRTK.SDK_NoHand
+ descriptionIndex: 0
+--- !u!114 &114820094090411886
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1824136381808930}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5837af0260a118e4d808bfe0405429a1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ autoManageScriptDefines: 1
+ activeScriptingDefineSymbolsWithoutSDKClasses: []
+ scriptAliasLeftController: {fileID: 0}
+ scriptAliasRightController: {fileID: 0}
+ autoManageVRSettings: 1
+ autoLoadSetup: 1
+ setups:
+ - {fileID: 114315273328022568}
+ - {fileID: 114298336582019970}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ excludeTargetGroups: 1a0000001b000000
+ persistOnLoad: 0
diff --git a/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab.meta b/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab.meta
new file mode 100644
index 0000000..d3f0a3d
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/[VRTK_SDKManager].prefab.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 52d03cf50b60de244a4d9e97934eec67
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab b/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab
new file mode 100644
index 0000000..09ca363
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab
@@ -0,0 +1,321 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+ m_ObjectHideFlags: 1
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications: []
+ m_RemovedComponents: []
+ m_ParentPrefab: {fileID: 0}
+ m_RootGameObject: {fileID: 1650106300411788}
+ m_IsPrefabParent: 1
+--- !u!1 &1402785467559628
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4232736678061846}
+ - component: {fileID: 114010055366141268}
+ - component: {fileID: 114941995053046290}
+ - component: {fileID: 114916317532594616}
+ - component: {fileID: 114264736996810730}
+ - component: {fileID: 135535306576535436}
+ m_Layer: 0
+ m_Name: LeftControllerScriptAlias
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1403344188374614
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4224632779464888}
+ - component: {fileID: 114892990097616302}
+ - component: {fileID: 114549548085660490}
+ - component: {fileID: 114970712872520258}
+ - component: {fileID: 114292905040315242}
+ - component: {fileID: 135537510739073292}
+ m_Layer: 0
+ m_Name: RightControllerScriptAlias
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!1 &1650106300411788
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 4316360019514298}
+ m_Layer: 0
+ m_Name: '[VRTK_Scripts]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4224632779464888
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ 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: 4316360019514298}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4232736678061846
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ 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: 4316360019514298}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &4316360019514298
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1650106300411788}
+ 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: 4232736678061846}
+ - {fileID: 4224632779464888}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &114010055366141268
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eba3cd5456cd79e49948f5ceb58544b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+--- !u!114 &114264736996810730
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 114010055366141268}
+ interactTouch: {fileID: 114941995053046290}
+ interactGrab: {fileID: 114916317532594616}
+--- !u!114 &114292905040315242
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65eb64f0f2fd6d64faddbcf5d7d3bdbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useButton: 3
+ controllerEvents: {fileID: 114892990097616302}
+ interactTouch: {fileID: 114549548085660490}
+ interactGrab: {fileID: 114970712872520258}
+--- !u!114 &114549548085660490
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 0}
+--- !u!114 &114892990097616302
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eba3cd5456cd79e49948f5ceb58544b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ axisFidelity: 1
+ senseAxisForceZeroThreshold: 0.15
+ senseAxisPressThreshold: 0.95
+ triggerClickThreshold: 1
+ triggerForceZeroThreshold: 0.01
+ triggerAxisZeroOnUntouch: 0
+ gripClickThreshold: 1
+ gripForceZeroThreshold: 0.01
+ gripAxisZeroOnUntouch: 0
+ triggerPressed: 0
+ triggerTouched: 0
+ triggerHairlinePressed: 0
+ triggerClicked: 0
+ triggerAxisChanged: 0
+ triggerSenseAxisChanged: 0
+ gripPressed: 0
+ gripTouched: 0
+ gripHairlinePressed: 0
+ gripClicked: 0
+ gripAxisChanged: 0
+ touchpadPressed: 0
+ touchpadTouched: 0
+ touchpadAxisChanged: 0
+ touchpadSenseAxisChanged: 0
+ touchpadTwoTouched: 0
+ touchpadTwoPressed: 0
+ touchpadTwoAxisChanged: 0
+ buttonOnePressed: 0
+ buttonOneTouched: 0
+ buttonTwoPressed: 0
+ buttonTwoTouched: 0
+ startMenuPressed: 0
+ middleFingerSenseAxisChanged: 0
+ ringFingerSenseAxisChanged: 0
+ pinkyFingerSenseAxisChanged: 0
+ gripSenseAxisChanged: 0
+ gripSensePressed: 0
+ controllerVisible: 1
+--- !u!114 &114916317532594616
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 0}
+ controllerEvents: {fileID: 114010055366141268}
+ interactTouch: {fileID: 114941995053046290}
+--- !u!114 &114941995053046290
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 64e104da36bd3b04b90c6ae969ac66dc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ customColliderContainer: {fileID: 0}
+--- !u!114 &114970712872520258
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 947b27445602ed640b885db7e667dfc1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ grabButton: 7
+ grabPrecognition: 0
+ throwMultiplier: 1
+ createRigidBodyWhenNotTouching: 0
+ controllerAttachPoint: {fileID: 0}
+ controllerEvents: {fileID: 114892990097616302}
+ interactTouch: {fileID: 114549548085660490}
+--- !u!135 &135535306576535436
+SphereCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1402785467559628}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!135 &135537510739073292
+SphereCollider:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 100100000}
+ m_GameObject: {fileID: 1403344188374614}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 1
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab.meta b/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab.meta
new file mode 100644
index 0000000..f3b5c42
--- /dev/null
+++ b/Assets/VIRTUOSO/Prefabs/[VRTK_Scripts].prefab.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b2aedf7687cf8a14ba8c0082add663cf
+timeCreated: 1544123408
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources.meta b/Assets/VIRTUOSO/Resources.meta
new file mode 100644
index 0000000..19cc927
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 0ace389e79e9cfd44aaf8589ac875d58
+folderAsset: yes
+timeCreated: 1554315166
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates.meta
new file mode 100644
index 0000000..746b3b0
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 1c1114ce336419540a3209cb427dfc97
+folderAsset: yes
+timeCreated: 1552497947
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset
new file mode 100644
index 0000000..8f5916c
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset
@@ -0,0 +1,95 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: ChestBack
+ m_EditorClassIdentifier:
+ affectableBodyParts: 7
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 180
+ endAngle: 225
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 225
+ endAngle: 270
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 270
+ endAngle: 315
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 315
+ endAngle: 359
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 180
+ endAngle: 225
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 225
+ endAngle: 270
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 270
+ endAngle: 315
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 315
+ endAngle: 359
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 180
+ endAngle: 225
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 225
+ endAngle: 270
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 270
+ endAngle: 315
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 315
+ endAngle: 359
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 180
+ endAngle: 225
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 225
+ endAngle: 270
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 270
+ endAngle: 315
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 315
+ endAngle: 359
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 180
+ endAngle: 225
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 225
+ endAngle: 270
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 270
+ endAngle: 315
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 315
+ endAngle: 359
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset.meta
new file mode 100644
index 0000000..5883fdc
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestBack.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ed634900b26ad4a448307e4f7619a75e
+timeCreated: 1553705389
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset
new file mode 100644
index 0000000..bdab249
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset
@@ -0,0 +1,95 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: ChestFront
+ m_EditorClassIdentifier:
+ affectableBodyParts: 7
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 0
+ endAngle: 45
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 45
+ endAngle: 90
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 90
+ endAngle: 135
+ - startHeight: 0
+ endHeight: 0.2
+ startAngle: 135
+ endAngle: 179
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 0
+ endAngle: 45
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 45
+ endAngle: 90
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 90
+ endAngle: 135
+ - startHeight: 0.2
+ endHeight: 0.4
+ startAngle: 135
+ endAngle: 179
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 0
+ endAngle: 45
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 45
+ endAngle: 90
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 90
+ endAngle: 135
+ - startHeight: 0.4
+ endHeight: 0.6
+ startAngle: 135
+ endAngle: 179
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 0
+ endAngle: 45
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 45
+ endAngle: 90
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 90
+ endAngle: 135
+ - startHeight: 0.6
+ endHeight: 0.8
+ startAngle: 135
+ endAngle: 179
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 0
+ endAngle: 45
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 45
+ endAngle: 90
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 90
+ endAngle: 135
+ - startHeight: 0.8
+ endHeight: 1
+ startAngle: 135
+ endAngle: 179
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset.meta
new file mode 100644
index 0000000..ef1f86f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/ChestFront.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: fe3c126820cb632409b13e08dee3fa11
+timeCreated: 1553705389
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset
new file mode 100644
index 0000000..6d89a7f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_LeftIndex
+ m_EditorClassIdentifier:
+ affectableBodyParts: 29
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset.meta
new file mode 100644
index 0000000..66fcc91
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftIndex.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: dedbda0d1fd46bb469a80757bbd12978
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset
new file mode 100644
index 0000000..7b13ce4
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_LeftMiddle
+ m_EditorClassIdentifier:
+ affectableBodyParts: 32
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset.meta
new file mode 100644
index 0000000..82e4e60
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftMiddle.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 3458a14fdc465bf44a9c34ac6241736d
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset
new file mode 100644
index 0000000..eb89235
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_LeftPinky
+ m_EditorClassIdentifier:
+ affectableBodyParts: 38
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset.meta
new file mode 100644
index 0000000..f8f3548
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftPinky.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 9f598e7be8bdaae45999db14de16b485
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset
new file mode 100644
index 0000000..edfce8b
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_LeftRing
+ m_EditorClassIdentifier:
+ affectableBodyParts: 35
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset.meta
new file mode 100644
index 0000000..0960e25
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftRing.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ff4c197f10f29664a9cb286664d865e8
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset
new file mode 100644
index 0000000..559f9bb
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_LeftThumb
+ m_EditorClassIdentifier:
+ affectableBodyParts: 26
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset.meta
new file mode 100644
index 0000000..e74bfde
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_LeftThumb.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: c9a85e5d35d4e1e45999cc449d57535a
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset
new file mode 100644
index 0000000..29c67bb
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_RightIndex
+ m_EditorClassIdentifier:
+ affectableBodyParts: 44
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset.meta
new file mode 100644
index 0000000..7f8be15
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightIndex.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: f598f95841d451b4faad5876441997e4
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset
new file mode 100644
index 0000000..3100ecb
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_RightMiddle
+ m_EditorClassIdentifier:
+ affectableBodyParts: 47
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset.meta
new file mode 100644
index 0000000..35035a2
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightMiddle.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 23ce873f29dfebc4fbb3179c3df4b68a
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset
new file mode 100644
index 0000000..356de71
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_RightPinky
+ m_EditorClassIdentifier:
+ affectableBodyParts: 53
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset.meta
new file mode 100644
index 0000000..3a58347
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightPinky.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ad60123eb5f58ae468a3c0d9180b0979
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset
new file mode 100644
index 0000000..4d4690e
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_RightRing
+ m_EditorClassIdentifier:
+ affectableBodyParts: 50
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset.meta
new file mode 100644
index 0000000..16e0304
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightRing.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 189eb958a6e527c46a2fe6b96b117334
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset
new file mode 100644
index 0000000..cb6c506
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Finger_RightThumb
+ m_EditorClassIdentifier:
+ affectableBodyParts: 41
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset.meta
new file mode 100644
index 0000000..16565ee
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Finger_RightThumb.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 5aafbb39a115bc14cb54844b9a8a00d0
+timeCreated: 1553700033
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset
new file mode 100644
index 0000000..b8bde56
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: Head
+ m_EditorClassIdentifier:
+ affectableBodyParts: 10
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 30
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 30
+ endAngle: 60
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 60
+ endAngle: 90
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 90
+ endAngle: 120
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 120
+ endAngle: 150
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 150
+ endAngle: 180
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset.meta
new file mode 100644
index 0000000..8c39d24
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/Head.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b15c96454bed8d94b9f3bdf484be36f6
+timeCreated: 1553710504
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset
new file mode 100644
index 0000000..bda77fb
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: LeftFoot
+ m_EditorClassIdentifier:
+ affectableBodyParts: 5
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset.meta
new file mode 100644
index 0000000..0e6be7d
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftFoot.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 42f7e5b8361b6f2419ab4cc6dd3dd0a9
+timeCreated: 1556113301
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset
new file mode 100644
index 0000000..a3727e9
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset
@@ -0,0 +1,31 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: LeftForearm
+ m_EditorClassIdentifier:
+ affectableBodyParts: 15
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 0.25
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.25
+ endHeight: 0.5
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.5
+ endHeight: 0.75
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.75
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset.meta
new file mode 100644
index 0000000..64dd824
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftForearm.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: cb48685e7bd87e047a590c721468df91
+timeCreated: 1553284122
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset
new file mode 100644
index 0000000..af3734a
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: LeftHand
+ m_EditorClassIdentifier:
+ affectableBodyParts: 17
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset.meta
new file mode 100644
index 0000000..f41294f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftHand.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 36d64ff1f7b285e4abb8514b69c9fe2c
+timeCreated: 1551989782
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset
new file mode 100644
index 0000000..a89cd84
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: LeftLeg
+ m_EditorClassIdentifier:
+ affectableBodyParts: 3
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset.meta
new file mode 100644
index 0000000..bad9e7a
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/LeftLeg.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 3785731bebdc91a44beeb615294b8ef9
+timeCreated: 1556113301
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset
new file mode 100644
index 0000000..8396362
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: RightFoot
+ m_EditorClassIdentifier:
+ affectableBodyParts: 6
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset.meta
new file mode 100644
index 0000000..4ff95ed
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightFoot.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 298c9e943d6f96b4aac8975b3b3d3d09
+timeCreated: 1556113301
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset
new file mode 100644
index 0000000..37b58f7
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset
@@ -0,0 +1,31 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: RightForearm
+ m_EditorClassIdentifier:
+ affectableBodyParts: 16
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 0.25
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.25
+ endHeight: 0.5
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.5
+ endHeight: 0.75
+ startAngle: 0
+ endAngle: 360
+ - startHeight: 0.75
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset.meta
new file mode 100644
index 0000000..4715a16
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightForearm.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ff0cb3cd8eb0dca47b2cb34973fb27c5
+timeCreated: 1553284122
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset
new file mode 100644
index 0000000..a127022
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: RightHand
+ m_EditorClassIdentifier:
+ affectableBodyParts: 18
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset.meta
new file mode 100644
index 0000000..32d926d
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightHand.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 6b0659655d60c6a4287ec4f3c9b2d83b
+timeCreated: 1551988597
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset
new file mode 100644
index 0000000..69ff8b6
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1def597fc958b34428d434d67f612575, type: 3}
+ m_Name: RightLeg
+ m_EditorClassIdentifier:
+ affectableBodyParts: 4
+ affectedAreaList:
+ - startHeight: 0
+ endHeight: 1
+ startAngle: 0
+ endAngle: 360
diff --git a/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset.meta b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset.meta
new file mode 100644
index 0000000..77ceefe
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/BodyCoordinates/RightLeg.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 0ea50ba428a88e8439de164de407b6a2
+timeCreated: 1556113301
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves.meta b/Assets/VIRTUOSO/Resources/Curves.meta
new file mode 100644
index 0000000..c2c14a3
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 1122f1cd28004834b9845d19812ce6c8
+folderAsset: yes
+timeCreated: 1556551986
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset b/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset
new file mode 100644
index 0000000..9118509
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: DownAndAroundCurve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0.5
+ tangentMode: 69
+ - serializedVersion: 2
+ time: 2
+ value: 1
+ inSlope: 0.5
+ outSlope: 0
+ tangentMode: 69
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2
+ value: 360
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2
+ value: 0.76464844
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset.meta
new file mode 100644
index 0000000..7f65ec5
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownAndAroundCurve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: be8f507082442cb4a92e9c73d8f48e4d
+timeCreated: 1553707854
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset b/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset
new file mode 100644
index 0000000..d31da80
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: DownToLeftCurve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 180
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0.81769615
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset.meta
new file mode 100644
index 0000000..ea597d6
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownToLeftCurve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 356d42e602239df44abce2a087449f86
+timeCreated: 1553708144
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset b/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset
new file mode 100644
index 0000000..5bf1f23
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: DownToRightCurve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 180
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0.84462225
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset.meta
new file mode 100644
index 0000000..15b8183
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/DownToRightCurve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 579b4f9b12bdbf4418d5760d4437ec4c
+timeCreated: 1553708144
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset b/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset
new file mode 100644
index 0000000..c91a85f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: RampDown180Curve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 1
+ outSlope: 0.33333334
+ tangentMode: 65
+ - serializedVersion: 2
+ time: 3
+ value: 1
+ inSlope: 0.33333334
+ outSlope: -1
+ tangentMode: 5
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 180
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 180
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0.9
+ inSlope: -0.29999998
+ outSlope: -0.29999998
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 3
+ value: 0
+ inSlope: -0.29999998
+ outSlope: -0.29999998
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset.meta
new file mode 100644
index 0000000..3d906c0
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDown180Curve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 2b9862a4aa9509e4f851fed992a40257
+timeCreated: 1553103737
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset b/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset
new file mode 100644
index 0000000..e6f0a4d
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: RampDownCurve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 1
+ outSlope: 0.34916493
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2.9472046
+ value: 1
+ inSlope: 0.3859385
+ outSlope: 0.3859385
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2.9472046
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0.9
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2.9472046
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset.meta
new file mode 100644
index 0000000..04c4d2c
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDownCurve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 3269d16e1676fd644924be89cd2ad252
+timeCreated: 1553103737
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset b/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset
new file mode 100644
index 0000000..1058367
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 614963222c5fc264abeee260e20d8641, type: 3}
+ m_Name: RampDownUpCurve
+ m_EditorClassIdentifier:
+ heightCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ - serializedVersion: 2
+ time: 1
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ - serializedVersion: 2
+ time: 2
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ angleCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 1
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ intensityCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 2
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 1
+ value: 0.9
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ - serializedVersion: 2
+ time: 2
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 0
+ temporaryCurve: 0
diff --git a/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset.meta b/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset.meta
new file mode 100644
index 0000000..65d0136
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Curves/RampDownUpCurve.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e3fed996ad617f54090e053efc4c7a4b
+timeCreated: 1554237166
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings.meta b/Assets/VIRTUOSO/Resources/DeviceMappings.meta
new file mode 100644
index 0000000..adc8c21
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: d31973b478ec6974fa20a4e2a02669b8
+folderAsset: yes
+timeCreated: 1553705646
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset
new file mode 100644
index 0000000..bc07bde
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 652134711068581419c729823ab6e5d3, type: 3}
+ m_Name: BHapticsBacktVestMapping
+ m_EditorClassIdentifier:
+ affectedBodyArea: {fileID: 11400000, guid: ed634900b26ad4a448307e4f7619a75e, type: 2}
+ mapping:
+ - indexMapping: 00000000
+ - indexMapping: 01000000
+ - indexMapping: 02000000
+ - indexMapping: 03000000
+ - indexMapping: 04000000
+ - indexMapping: 05000000
+ - indexMapping: 06000000
+ - indexMapping: 07000000
+ - indexMapping: 08000000
+ - indexMapping: 09000000
+ - indexMapping: 0a000000
+ - indexMapping: 0b000000
+ - indexMapping: 0c000000
+ - indexMapping: 0d000000
+ - indexMapping: 0e000000
+ - indexMapping: 0f000000
+ - indexMapping: 10000000
+ - indexMapping: 11000000
+ - indexMapping: 12000000
+ - indexMapping: 13000000
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset.meta b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset.meta
new file mode 100644
index 0000000..ab4365f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsBacktVestMapping.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 6dce4a23651189b4d9776aa247440f84
+timeCreated: 1553705739
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset
new file mode 100644
index 0000000..53b5ac6
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset
@@ -0,0 +1,21 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 652134711068581419c729823ab6e5d3, type: 3}
+ m_Name: BHapticsFaceMapping
+ m_EditorClassIdentifier:
+ affectedBodyArea: {fileID: 11400000, guid: b15c96454bed8d94b9f3bdf484be36f6, type: 2}
+ mapping:
+ - indexMapping: 00000000
+ - indexMapping: 01000000
+ - indexMapping: 02000000
+ - indexMapping: 03000000
+ - indexMapping: 04000000
+ - indexMapping: 05000000
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset.meta b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset.meta
new file mode 100644
index 0000000..c9e59af
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFaceMapping.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e30940dd60f9b594ca7c7fcb954ea9f4
+timeCreated: 1553710746
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset
new file mode 100644
index 0000000..8b5a51c
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 652134711068581419c729823ab6e5d3, type: 3}
+ m_Name: BHapticsFrontVestMapping
+ m_EditorClassIdentifier:
+ affectedBodyArea: {fileID: 11400000, guid: fe3c126820cb632409b13e08dee3fa11, type: 2}
+ mapping:
+ - indexMapping: 03000000
+ - indexMapping: 02000000
+ - indexMapping: 01000000
+ - indexMapping: 00000000
+ - indexMapping: 07000000
+ - indexMapping: 06000000
+ - indexMapping: 05000000
+ - indexMapping: 04000000
+ - indexMapping: 0b000000
+ - indexMapping: 0a000000
+ - indexMapping: 09000000
+ - indexMapping: 08000000
+ - indexMapping: 0f000000
+ - indexMapping: 0e000000
+ - indexMapping: 0d000000
+ - indexMapping: 0c000000
+ - indexMapping: 13000000
+ - indexMapping: 12000000
+ - indexMapping: 11000000
+ - indexMapping: 10000000
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset.meta b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset.meta
new file mode 100644
index 0000000..88326d9
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsFrontVestMapping.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: d259b2c8baf4ea64d80845583879a4c6
+timeCreated: 1553705739
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset
new file mode 100644
index 0000000..e9ebe98
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 652134711068581419c729823ab6e5d3, type: 3}
+ m_Name: BHapticsLeftWristMapping
+ m_EditorClassIdentifier:
+ affectedBodyArea: {fileID: 11400000, guid: cb48685e7bd87e047a590c721468df91, type: 2}
+ mapping:
+ - indexMapping: 0f00000010000000110000001200000013000000
+ - indexMapping: 0a0000000b0000000c0000000d0000000e000000
+ - indexMapping: 0500000006000000070000000800000009000000
+ - indexMapping: 0000000001000000020000000300000004000000
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset.meta b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset.meta
new file mode 100644
index 0000000..adf2dcd
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsLeftWristMapping.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 7c6ecbdc42e31ab4db2f3a1ea04b3da9
+timeCreated: 1553284888
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset
new file mode 100644
index 0000000..d3d53bf
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 652134711068581419c729823ab6e5d3, type: 3}
+ m_Name: BHapticsRightWristMapping
+ m_EditorClassIdentifier:
+ affectedBodyArea: {fileID: 11400000, guid: ff0cb3cd8eb0dca47b2cb34973fb27c5, type: 2}
+ mapping:
+ - indexMapping: 0f00000010000000110000001200000013000000
+ - indexMapping: 0a0000000b0000000c0000000d0000000e000000
+ - indexMapping: 0500000006000000070000000800000009000000
+ - indexMapping: 0000000001000000020000000300000004000000
diff --git a/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset.meta b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset.meta
new file mode 100644
index 0000000..13c659c
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/DeviceMappings/BHapticsRightWristMapping.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 652417e418b21f743b9c063d19d2d4f3
+timeCreated: 1553797173
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Editor.meta b/Assets/VIRTUOSO/Resources/Editor.meta
new file mode 100644
index 0000000..a74ebf0
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Editor.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 1a2e9ed168274d54cb35b2e685e4e662
+folderAsset: yes
+timeCreated: 1556139571
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset b/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset
new file mode 100644
index 0000000..e2a8a3b
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e28766c9060caff42bd7a43852aadbec, type: 3}
+ m_Name: HapticSettings
+ m_EditorClassIdentifier:
+ defaultPatternSaveLocation: Assets/VIRTUOSO/Resources/Patterns/
+ defaultCurveSaveLocation: Assets/VIRTUOSO/Resources/Curves/
+ defaultIntensity: 0.5
+ defaultTimeGranularity: 0.5
+ defaultCurveRenderingGranularity: 10
diff --git a/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset.meta b/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset.meta
new file mode 100644
index 0000000..aa21695
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Editor/HapticSettings.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 885c7fd4a9943ce4c925680767e43f6c
+timeCreated: 1557512784
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns.meta b/Assets/VIRTUOSO/Resources/Patterns.meta
new file mode 100644
index 0000000..c0007ad
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 6d91439f1b4757e47a83e6793f1f66ef
+folderAsset: yes
+timeCreated: 1556552000
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset b/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset
new file mode 100644
index 0000000..e82add5
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset
@@ -0,0 +1,24 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: AnotherTest
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: bc83ecd806851944585e8edc11776609, type: 2}
+ - {fileID: 11400000, guid: ec017b1cf63a0544f87a346cef411dec, type: 2}
+ - {fileID: 11400000, guid: ff25b953df0837542b552c588b98edcc, type: 2}
+ collisionResolution: 4
+ curvePriorityIndex: 0
+ playbackTiming: 0
+ customPlaybackTiming: 0
+ heightOvershootResolution: 2
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset.meta
new file mode 100644
index 0000000..d838f38
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/AnotherTest.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b5f7118d68aa83a4da153c5f3d3fd1b4
+timeCreated: 1556647726
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset b/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset
new file mode 100644
index 0000000..a955bf7
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: AroundPattern
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: be8f507082442cb4a92e9c73d8f48e4d, type: 2}
+ collisionResolution: 2
+ curvePriorityIndex: 0
+ playbackTiming: 0
+ customPlaybackTiming: 0.333
+ heightOvershootResolution: 1
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset.meta
new file mode 100644
index 0000000..08f4beb
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/AroundPattern.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e945ad208e7c58f4b9889d37b657d2ca
+timeCreated: 1553708004
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset b/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset
new file mode 100644
index 0000000..ea6dd40
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset
@@ -0,0 +1,23 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: CrossPattern
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: 356d42e602239df44abce2a087449f86, type: 2}
+ - {fileID: 11400000, guid: 579b4f9b12bdbf4418d5760d4437ec4c, type: 2}
+ collisionResolution: 2
+ curvePriorityIndex: 0
+ playbackTiming: 1
+ customPlaybackTiming: 0.333
+ heightOvershootResolution: 2
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset.meta
new file mode 100644
index 0000000..7bcd764
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/CrossPattern.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 9da88975d2790784ab3908ce8d92ae06
+timeCreated: 1553708260
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset b/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset
new file mode 100644
index 0000000..91a87de
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: RampDown180Pattern
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: 2b9862a4aa9509e4f851fed992a40257, type: 2}
+ collisionResolution: 2
+ curvePriorityIndex: 0
+ playbackTiming: 0
+ customPlaybackTiming: 0.3
+ heightOvershootResolution: 1
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset.meta
new file mode 100644
index 0000000..a412b6f
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDown180Pattern.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: c7aa2ff9b31b5c14ebe2a0032acbee93
+timeCreated: 1553103846
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset b/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset
new file mode 100644
index 0000000..89b44d4
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: RampDownPattern
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: 3269d16e1676fd644924be89cd2ad252, type: 2}
+ collisionResolution: 2
+ curvePriorityIndex: 0
+ playbackTiming: 0
+ customPlaybackTiming: 0.3
+ heightOvershootResolution: 2
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset.meta
new file mode 100644
index 0000000..0d95dc7
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDownPattern.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 5f9548af75015c64295ef0fa38ef3183
+timeCreated: 1553103846
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset b/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset
new file mode 100644
index 0000000..bc3e195
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4c110b34a208c8c43abc687227bfacc0, type: 3}
+ m_Name: RampDownUpPattern
+ m_EditorClassIdentifier:
+ curveList:
+ - {fileID: 11400000, guid: e3fed996ad617f54090e053efc4c7a4b, type: 2}
+ collisionResolution: 2
+ curvePriorityIndex: 0
+ playbackTiming: 1
+ customPlaybackTiming: 0.333
+ heightOvershootResolution: 1
+ angleOvershootResolution: 2
+ offsetUse: 1
diff --git a/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset.meta b/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset.meta
new file mode 100644
index 0000000..8f34e5b
--- /dev/null
+++ b/Assets/VIRTUOSO/Resources/Patterns/RampDownUpPattern.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 69cb33b80d6d91d4ea69336ac63910c6
+timeCreated: 1553624370
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scriptable Objects.meta b/Assets/VIRTUOSO/Scriptable Objects.meta
new file mode 100644
index 0000000..8823ae2
--- /dev/null
+++ b/Assets/VIRTUOSO/Scriptable Objects.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: a31c0d87e1b30e64bab723711cff5a41
+folderAsset: yes
+timeCreated: 1557512301
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data.meta b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data.meta
new file mode 100644
index 0000000..5296a6f
--- /dev/null
+++ b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: f24ffd70e294ded4dac6e7dd5ccbd921
+folderAsset: yes
+timeCreated: 1557512309
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset
new file mode 100644
index 0000000..50101bd
--- /dev/null
+++ b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset
@@ -0,0 +1,23 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c441f2904825f5c4f95a8d74509d8442, type: 3}
+ m_Name: HapticPatternWindowLineRenderer
+ m_EditorClassIdentifier:
+ lineMaterial: {fileID: 2100000, guid: 8e0e7d5234ddbdc48829ca867689274d, type: 2}
+ lineStartColor: {r: 0, g: 0, b: 1, a: 1}
+ lineEndColor: {r: 1, g: 0, b: 0, a: 1}
+ startLineWidth: 1
+ endLineWidth: 1
+ widthMultiplier: 0.01
+ numCornerVertices: 3
+ numCapVertices: 2
+ receiveShadows: 0
+ allowOcclusionWhenDynamic: 0
diff --git a/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset.meta b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset.meta
new file mode 100644
index 0000000..3fef244
--- /dev/null
+++ b/Assets/VIRTUOSO/Scriptable Objects/Line Renderer Data/HapticPatternWindowLineRenderer.asset.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4b6ada9ca411ada48b621c9611310349
+timeCreated: 1557512335
+licenseType: Pro
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts.meta b/Assets/VIRTUOSO/Scripts.meta
new file mode 100644
index 0000000..5b6ff9b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b7328f77ca4a2934bb38c7c201e6cf5a
+folderAsset: yes
+timeCreated: 1544108878
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Attributes.meta b/Assets/VIRTUOSO/Scripts/Attributes.meta
new file mode 100644
index 0000000..b2a8949
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Attributes.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: dccc3a1516eeb2a4bb9bc1145b26b43b
+folderAsset: yes
+timeCreated: 1544108878
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs b/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs
new file mode 100644
index 0000000..0f12044
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// A helper utility for the InteractionAreaReaction and GenericReaction scripts. Since some GenericReactions have an
+ /// empty StopReaction, use this script to hide the corresponding variable to set that method in any of the
+ /// general reaction scripts.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ [AttributeUsage(AttributeTargets.Method)]
+ public class HideMethodFromInspectorAttribute : Attribute
+ {
+ // No logic is needed as the presence of this attribute indicates it should be hidden
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs.meta b/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs.meta
new file mode 100644
index 0000000..ec2078a
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Attributes/HideMethodFromInspectorAttribute.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 0903e0741a6bf4640b5fb5bcdd2572ed
+timeCreated: 1536697680
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor.meta b/Assets/VIRTUOSO/Scripts/Editor.meta
new file mode 100644
index 0000000..03448fe
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4dc167518a5ce2548b9be669d0f714bd
+folderAsset: yes
+timeCreated: 1544108878
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors.meta
new file mode 100644
index 0000000..bce846e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 66c8013bee42c7142b64729a3001cbba
+folderAsset: yes
+timeCreated: 1553805862
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs
new file mode 100644
index 0000000..8846176
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs
@@ -0,0 +1,176 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace CharlesRiverAnalytics.Virtuoso.Gestures
+{
+ ///
+ /// Enables editing of AdvancedGestures which otherwise would be impossible since it uses subclasses to define behavior of the states.
+ ///
+ /// Author: Dan Duggan (dduggan@cra.com) October 2018, Updated January 2019
+ ///
+ [CustomEditor(typeof(AdvancedGesture))]
+ public class AdvancedGestureEditor : Editor
+ {
+ #region Control Variables
+ protected AdvancedGestureState stateToDelete;
+ protected AdvancedGestureCondition conditionToDelete;
+ // reasonable width for enum fields in the editor so they don't stretch/contract too much
+ protected static float ENUM_WIDTH = 128;
+ #endregion
+
+ #region Inspector Drawing Code
+ public override void OnInspectorGUI()
+ {
+ GUILayout.Label("Advanced Gesture States", EditorStyles.boldLabel);
+ // do not draw the control variables
+ AdvancedGesture advTarget = (AdvancedGesture)target;
+ advTarget.gestureCooldown = EditorGUILayout.FloatField("Cooldown (seconds)", advTarget.gestureCooldown);
+
+ foreach (AdvancedGestureState advState in advTarget.advancedGestureStateList)
+ {
+ DrawAdvancedGestureState(advState);
+ }
+
+ if (GUILayout.Button("Add Gesture State"))
+ {
+ advTarget.advancedGestureStateList.Add(new AdvancedGestureState());
+ }
+
+ if (stateToDelete != null)
+ {
+ advTarget.advancedGestureStateList.Remove(stateToDelete);
+ stateToDelete = null;
+ }
+ // set dirty to ensure the object is saved
+ EditorUtility.SetDirty(target);
+ }
+
+ ///
+ /// Draws the inspector for a single AdvancedGestureState
+ ///
+ protected void DrawAdvancedGestureState(AdvancedGestureState advState)
+ {
+ GUILayout.BeginHorizontal();
+ advState.gestureName = GUILayout.TextField(advState.gestureName);
+ if (GUILayout.Button("Remove Gesture State"))
+ {
+ stateToDelete = advState;
+ }
+ GUILayout.EndHorizontal();
+ advState.coreGesture = (Gesture)EditorGUILayout.ObjectField("Core Gesture", advState.coreGesture, typeof(Gesture), false);
+ advState.holdTime = EditorGUILayout.Slider("Gesture Hold Time", advState.holdTime, 0.0f, 5.0f);
+
+ foreach (AdvancedGestureCondition condition in advState.AdvancedGestureConditionList)
+ {
+ DrawAdvancedGestureCondition(condition);
+ }
+
+ GUILayout.BeginHorizontal();
+ advState.editorNewConditionType = (AdvancedGestureState.AdvancedConditionType)EditorGUILayout.EnumPopup(advState.editorNewConditionType, GUILayout.Width(ENUM_WIDTH));
+ if (GUILayout.Button("Add"))
+ {
+ switch (advState.editorNewConditionType)
+ {
+ case AdvancedGestureState.AdvancedConditionType.Hold:
+ {
+ advState.holdConditionList.Add(new HoldGestureCondition());
+ break;
+ }
+ case AdvancedGestureState.AdvancedConditionType.Movement:
+ {
+ advState.movementConditionList.Add(new MovementGestureCondition());
+ break;
+ }
+ case AdvancedGestureState.AdvancedConditionType.PalmAngle:
+ {
+ advState.palmConditions.Add(new PalmNormalCondition());
+ break;
+ }
+ case AdvancedGestureState.AdvancedConditionType.SimultaneousAction:
+ {
+ advState.simultaneousGestureConditionList.Add(new SimultaneousGesture());
+ break;
+ }
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ if (conditionToDelete != null)
+ {
+ if (conditionToDelete is HoldGestureCondition)
+ {
+ advState.holdConditionList.Remove((HoldGestureCondition)conditionToDelete);
+ }
+ else if (conditionToDelete is MovementGestureCondition)
+ {
+ advState.movementConditionList.Remove((MovementGestureCondition)conditionToDelete);
+ }
+ else if (conditionToDelete is PalmNormalCondition)
+ {
+ advState.palmConditions.Remove((PalmNormalCondition)conditionToDelete);
+ }
+ else if (conditionToDelete is SimultaneousGesture)
+ {
+ advState.simultaneousGestureConditionList.Remove((SimultaneousGesture)conditionToDelete);
+ }
+ conditionToDelete = null;
+ }
+ }
+ ///
+ /// Draws the inspector for an advanced gesture condition
+ ///
+ protected void DrawAdvancedGestureCondition(AdvancedGestureCondition condition)
+ {
+ GUILayout.BeginHorizontal();
+ string header = condition.GetType().Name;
+ GUILayout.Label(header, EditorStyles.boldLabel);
+ if (GUILayout.Button("Remove"))
+ {
+ conditionToDelete = condition;
+ }
+ GUILayout.EndHorizontal();
+
+ if (condition is MovementGestureCondition)
+ {
+ MovementGestureCondition mvtCondition = (MovementGestureCondition)condition;
+ GUILayout.BeginHorizontal();
+ mvtCondition.distanceFromPreviousGesture = EditorGUILayout.Slider("Distance from last gesture", mvtCondition.distanceFromPreviousGesture, 0.0f, 1.5f);
+ GUILayout.EndHorizontal();
+ GUILayout.BeginHorizontal();
+ mvtCondition.distanceOperator = (MovementGestureCondition.MovementOperator)EditorGUILayout.EnumPopup("Comparison Operator", mvtCondition.distanceOperator);
+ if (mvtCondition.distanceOperator == MovementGestureCondition.MovementOperator.EqualTo)
+ {
+ mvtCondition.distanceTolerance = EditorGUILayout.Slider("Tolerance", mvtCondition.distanceTolerance, 0.0f, 0.2f);
+ }
+ GUILayout.EndHorizontal();
+ }
+ else if (condition is HoldGestureCondition)
+ {
+ HoldGestureCondition holdCondition = (HoldGestureCondition)condition;
+ holdCondition.gestureHoldTime = EditorGUILayout.FloatField("Hold Time", holdCondition.gestureHoldTime);
+ }
+ else if (condition is PalmNormalCondition)
+ {
+ PalmNormalCondition palmCondition = (PalmNormalCondition)condition;
+ GUILayout.BeginHorizontal();
+ palmCondition.otherVectorToUse = (PalmNormalCondition.OtherVector)EditorGUILayout.EnumPopup("Other Vector", palmCondition.otherVectorToUse);
+ palmCondition.otherVectorDirection = (PalmNormalCondition.VectorType)EditorGUILayout.EnumPopup("Other Vector Direction", palmCondition.otherVectorDirection);
+ GUILayout.EndHorizontal();
+ GUILayout.BeginHorizontal();
+ palmCondition.eulerRotationFromOtherVector = EditorGUILayout.Vector3Field("Rotation of Other", palmCondition.eulerRotationFromOtherVector);
+ GUILayout.EndHorizontal();
+ GUILayout.BeginHorizontal();
+ palmCondition.tolerance = EditorGUILayout.Slider("Tolerance", palmCondition.tolerance, 0.0f, 1.0f);
+ GUILayout.EndHorizontal();
+ }
+ else if (condition is SimultaneousGesture)
+ {
+ SimultaneousGesture simulCondition = (SimultaneousGesture)condition;
+ simulCondition.simultaneousGesture = (Gesture)EditorGUILayout.ObjectField("Other Gesture", simulCondition.simultaneousGesture, typeof(Gesture), false);
+ }
+ }
+ }
+ #endregion
+}
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs.meta
new file mode 100644
index 0000000..02ba722
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/AdvancedGestureEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e08e75c827f97594eb5c101077e6836d
+timeCreated: 1546533168
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs
new file mode 100644
index 0000000..b6384b0
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs
@@ -0,0 +1,97 @@
+using UnityEditor;
+using System.Reflection;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Custom editor for the GenericReaction classes. The main point of the custom editor is to hide
+ /// the start/stop reaction variable if the given ReactionEvent has one of it's methods marked
+ /// as HideMethodFromInspector.
+ ///
+ /// Since GenericReaction is a Generic type, each child implementation needs their own custom editor,
+ /// but can inherit from this one and pass in the genericStringName to reuse these functions.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ ///
+ public class GenericReactionEditor : Editor
+ {
+ protected SerializedProperty reactionEvent;
+ protected SerializedProperty genericEventSystem;
+ protected SerializedProperty startReaction;
+ protected SerializedProperty stopReaction;
+ protected string genericStringName;
+
+ #region UnityFunctions
+ protected virtual void OnEnable()
+ {
+ reactionEvent = serializedObject.FindProperty("reactionEvent");
+ genericEventSystem = serializedObject.FindProperty(genericStringName);
+ startReaction = serializedObject.FindProperty("startReaction");
+ stopReaction = serializedObject.FindProperty("stopReaction");
+ }
+
+ public override void OnInspectorGUI()
+ {
+ // Reads the latest values on the current (serialized) object (i.e. the one that is selected)
+ serializedObject.Update();
+
+ // Display the default Unity prompt for objects in the scene
+ EditorGUILayout.PropertyField(reactionEvent);
+ EditorGUILayout.PropertyField(genericEventSystem);
+
+ // For displaying the start/stop reaction dropdown menu, look at the given reaction and see if
+ // it has the HideMethodFromInspectorAttribute on either of its reaction method
+ if (reactionEvent != null)
+ {
+ object reactionObject = GetObjectFromProperty(reactionEvent);
+
+ if (reactionObject != null)
+ {
+ MethodBase startMethod = reactionObject.GetType().GetMethod("StartReaction");
+ var startAttribute = startMethod.GetCustomAttributes(typeof(HideMethodFromInspectorAttribute), true);
+
+ // If the attribute length is 0, then it was not added to the method and the variable should be displayed
+ if (startAttribute.Length == 0)
+ {
+ EditorGUILayout.PropertyField(startReaction);
+ }
+
+ // Same for StopReaction
+ MethodBase stopMethod = reactionObject.GetType().GetMethod("StopReaction");
+ var stopAttribute = stopMethod.GetCustomAttributes(typeof(HideMethodFromInspectorAttribute), true);
+
+ if (stopAttribute.Length == 0)
+ {
+ EditorGUILayout.PropertyField(stopReaction);
+ }
+ }
+ }
+
+ // Write properties back to the serialized object
+ serializedObject.ApplyModifiedProperties();
+ }
+ #endregion
+
+ protected HideMethodFromInspectorAttribute GetHideMethodAttribute(Type givenType)
+ {
+ // Get instance of the attribute.
+ HideMethodFromInspectorAttribute hideMethodAttribute =
+ (HideMethodFromInspectorAttribute)Attribute.GetCustomAttribute(givenType, typeof(HideMethodFromInspectorAttribute));
+
+ if (hideMethodAttribute != null)
+ {
+ return hideMethodAttribute;
+ }
+
+ return null;
+ }
+
+ protected object GetObjectFromProperty(SerializedProperty property)
+ {
+ Type objectBaseType = property.serializedObject.targetObject.GetType();
+ FieldInfo fieldInfo = objectBaseType.GetField(property.propertyPath);
+ return fieldInfo.GetValue(property.serializedObject.targetObject);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs.meta
new file mode 100644
index 0000000..5537a1f
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/GenericReactionEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: ad2406c79c66d744b94f1cf8e7b929e6
+timeCreated: 1537286201
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs
new file mode 100644
index 0000000..8628e76
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs
@@ -0,0 +1,25 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Custom editor for the GestureReaction. The main point of the custom editor is to hide
+ /// the start/stop reaction variable if the given ReactionEvent has one of it's methods marked
+ /// as HideMethodFromInspector.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ ///
+ public class GestureReactionEditor : GenericReactionEditor
+ {
+ #region UnityFunctions
+ protected override void OnEnable()
+ {
+ genericStringName = "gestureEvent";
+
+ base.OnEnable();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs.meta
new file mode 100644
index 0000000..13ce1eb
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/GestureReactionEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 79ae585f482812b4292d42c99dfe9624
+timeCreated: 1537287414
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs
new file mode 100644
index 0000000..7ad147b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs
@@ -0,0 +1,209 @@
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Custom editor for the Haptic Manager class. Displays a list of all the available HapticDevices
+ /// if they are using the HapticSystem Attribute class. It allows the devices to be enabled/disabled
+ /// by the developer to indicate what haptic device they are targeting.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [CustomEditor(typeof(HapticManager))]
+ public class HapticManagerEditor : Editor
+ {
+ #region PrivateVariables
+ private HapticManager targetManager;
+ private bool useVisualizer;
+ private Dictionary> hapticSystemAndDevices;
+ private Dictionary hapticSystemEditorInfo;
+ #endregion
+
+ #region Unity Functions
+ protected void Awake()
+ {
+ targetManager = target as HapticManager;
+
+ hapticSystemAndDevices = new Dictionary>();
+ hapticSystemEditorInfo = new Dictionary();
+
+ // Get all the haptic device classes in the project
+ foreach (Type type in Assembly.GetAssembly(typeof(HapticDevice)).GetTypes())
+ {
+ object[] attributeList = type.GetCustomAttributes(typeof(HapticSystemAttribute), true);
+
+ if (attributeList.Length > 0)
+ {
+ foreach (object currentAttribute in attributeList)
+ {
+ HapticSystemAttribute hapticAttribute = currentAttribute as HapticSystemAttribute;
+
+ if (!hapticSystemAndDevices.ContainsKey(hapticAttribute.SystemName))
+ {
+ hapticSystemAndDevices.Add(hapticAttribute.SystemName, new List()
+ {
+ new HapticDeviceInfo(hapticAttribute, type)
+ });
+
+ hapticSystemEditorInfo.Add(hapticAttribute.SystemName, new HapticSystemEditorInfo());
+ }
+ else
+ {
+ hapticSystemAndDevices[hapticAttribute.SystemName].Add(new HapticDeviceInfo(hapticAttribute, type));
+ }
+ }
+ }
+ }
+
+ // Use EditorPrefs to find the devices that are being used by the developer
+ foreach (KeyValuePair> currentDevice in hapticSystemAndDevices)
+ {
+ for (int n = 0; n < currentDevice.Value.Count; n++)
+ {
+ currentDevice.Value[n].isSelected = EditorPrefs.GetBool(Constants.EditorPrefLocation + currentDevice.Key + "." + currentDevice.Value[n].systemAttribute.DeviceName);
+ }
+ }
+
+ useVisualizer = EditorPrefs.GetBool(Constants.EditorPrefLocation + "UseVisualizer");
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ // Check to see if the dictionary is set up, if not, then work cannot be done
+ if(hapticSystemAndDevices == null)
+ {
+ Awake();
+ }
+
+ // Reads the latest values on the current (serialized) object (i.e., the one that is selected)
+ serializedObject.Update();
+
+ // Ask if they want the visualizer attached
+ useVisualizer = EditorGUILayout.Toggle("Visualize Haptics", useVisualizer);
+
+ if (useVisualizer)
+ {
+ HapticVisualizer attachedVisualizer = targetManager.gameObject.GetComponent();
+
+ if (attachedVisualizer == null)
+ {
+ targetManager.gameObject.AddComponent();
+ }
+ }
+ else
+ {
+ HapticVisualizer attachedVisualizer = targetManager.gameObject.GetComponent();
+
+ if (attachedVisualizer != null)
+ {
+ DestroyImmediate(attachedVisualizer);
+ }
+ }
+
+ foreach (var hapticDevice in hapticSystemAndDevices)
+ {
+ hapticSystemEditorInfo[hapticDevice.Key].isFoldedOut = EditorGUILayout.Foldout(hapticSystemEditorInfo[hapticDevice.Key].isFoldedOut, hapticDevice.Key);
+
+ if (hapticSystemEditorInfo[hapticDevice.Key].isFoldedOut)
+ {
+ // Display each haptic device
+ foreach (HapticDeviceInfo currentDevice in hapticSystemAndDevices[hapticDevice.Key])
+ {
+ currentDevice.isSelected = EditorGUILayout.Toggle(currentDevice.systemAttribute.DeviceName, currentDevice.isSelected);
+ }
+ }
+
+ // Save values to the editor prefs
+ for (int n = 0; n < hapticDevice.Value.Count; n++)
+ {
+ // Add/remove any scripts that have changed
+ if (EditorPrefs.GetBool(Constants.EditorPrefLocation + hapticDevice.Key + "." + hapticDevice.Value[n].systemAttribute.DeviceName) != hapticDevice.Value[n].isSelected)
+ {
+ // Add component
+ if (hapticDevice.Value[n].isSelected)
+ {
+ GameObject deviceSystemObject = GameObject.Find(hapticDevice.Key);
+
+ if (deviceSystemObject == null)
+ {
+ deviceSystemObject = new GameObject(hapticDevice.Key);
+ deviceSystemObject.transform.parent = (target as HapticManager).transform;
+ }
+
+ GameObject deviceObject = new GameObject(hapticDevice.Value[n].systemAttribute.DeviceName);
+ deviceObject.transform.parent = deviceSystemObject.transform;
+
+ HapticDevice deviceInfo = deviceObject.AddComponent(hapticDevice.Value[n].deviceType) as HapticDevice;
+ deviceInfo.ApplyDefaultData(hapticDevice.Value[n].systemAttribute);
+ }
+ // Remove component
+ else
+ {
+ GameObject objToRemove = GameObject.Find(hapticDevice.Key + "/" + hapticDevice.Value[n].systemAttribute.DeviceName);
+
+ if (objToRemove != null)
+ {
+ GameObject parentObj = objToRemove.transform.parent.gameObject;
+
+ DestroyImmediate(objToRemove);
+
+ if (parentObj.transform.childCount == 0)
+ {
+ DestroyImmediate(parentObj);
+ }
+ }
+ }
+ }
+
+ // Write to EditorPrefs so the used devices are saved
+ EditorPrefs.SetBool(Constants.EditorPrefLocation + hapticDevice.Key + "." + hapticDevice.Value[n].systemAttribute.DeviceName, hapticDevice.Value[n].isSelected);
+ }
+ }
+
+ EditorPrefs.SetBool(Constants.EditorPrefLocation + "UseVisualizer", useVisualizer);
+
+ // Write properties back to the serialized object
+ serializedObject.ApplyModifiedProperties();
+ }
+ #endregion
+ }
+
+ ///
+ /// Holdds data for each haptic device in a hpatic system for the haptic manager editor.
+ ///
+ public class HapticDeviceInfo
+ {
+ public HapticSystemAttribute systemAttribute;
+ public Type deviceType;
+ public bool isSelected;
+
+ public HapticDeviceInfo(HapticSystemAttribute sysAttribute, Type devType)
+ {
+ systemAttribute = sysAttribute;
+ deviceType = devType;
+
+ isSelected = false;
+ }
+ }
+
+ ///
+ /// Holds data related to each haptic system for the haptic manager editor.
+ ///
+ public class HapticSystemEditorInfo
+ {
+ public bool isFoldedOut;
+
+ public HapticSystemEditorInfo()
+ {
+ isFoldedOut = false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs.meta
new file mode 100644
index 0000000..d271adc
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/HapticManagerEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b73681e8a1c026848a304f51fa2a7da9
+timeCreated: 1556820882
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs
new file mode 100644
index 0000000..378443d
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs
@@ -0,0 +1,243 @@
+using System.Collections.Generic;
+using UnityEditor;
+using CharlesRiverAnalytics.Virtuoso.Reaction;
+using UnityEngine;
+using System.Reflection;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Custom editor for the Reactor class. Allows the user to provide a component with event and provides feedback
+ /// to the user if there are any issues with the provided class. It then displays a list of all the events the
+ /// component has and builds a custom array to add any reaction that is currently in the scene.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), December 2018
+ ///
+ [CustomEditor(typeof(Reactor))]
+ public class ReactorEditor : Editor
+ {
+ #region ProtectedVariables
+ protected SerializedProperty eventSender;
+ protected SerializedProperty lastUsedComponent;
+ protected Reactor targetReactor;
+
+ protected Dictionary reactionsPerEventDictionary;
+
+ protected const string UNDO_MESSAGE = "Undo Reactor Info";
+ protected const string NO_EVENTS_WARNING_MESSAGE = "No events were found on the given eventSender. Please provide a different object.";
+ protected const string NO_REACTION_WARNING_MESSAGE = "No Reactions are currently in the scene. Please add at least one Reaction to the scene.";
+ protected const string PROVIDE_COMPONENT_MESSAGE = "Please provide a component with events.";
+ #endregion
+
+ #region EditorHelperMethods
+ ///
+ /// Takes the list of EditorInfo (Reaction, Method Selection, etc.) from the target and rebuilds
+ /// the dictionary in the editor script.
+ ///
+ /// String array of events from the given component.
+ private void CopyFromTarget(string[] eventNameArray)
+ {
+ // Grab the dictionary items
+ List editorInfoList = targetReactor.GetDictionaryItems();
+
+ // Rebuild the dictionary
+ for (int n = 0; n < editorInfoList.Count; n++)
+ {
+ ReactorEditorInfo currentInfo = new ReactorEditorInfo
+ {
+ foldoutOpenStatus = editorInfoList[n].foldoutOpenStatus,
+ reactionList = editorInfoList[n].reactionList,
+ reactionTriggerMethodList = editorInfoList[n].reactionTriggerMethodList,
+ reactionTriggerIndexSelectionList = editorInfoList[n].reactionTriggerIndexSelectionList
+ };
+
+ if (reactionsPerEventDictionary.ContainsKey(eventNameArray[n]))
+ {
+ reactionsPerEventDictionary[eventNameArray[n]] = currentInfo;
+ }
+ else
+ {
+ reactionsPerEventDictionary.Add(eventNameArray[n], currentInfo);
+ }
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+ protected virtual void OnEnable()
+ {
+ eventSender = serializedObject.FindProperty("eventSender");
+ lastUsedComponent = serializedObject.FindProperty("lastUsedComponent");
+
+ targetReactor = target as Reactor;
+
+ reactionsPerEventDictionary = new Dictionary();
+ }
+
+ public override void OnInspectorGUI()
+ {
+ // Reads the latest values on the current (serialized) object (i.e. the one that is selected)
+ serializedObject.Update();
+
+ // Display the default Unity prompt for objects in the scene
+ EditorGUILayout.PropertyField(eventSender);
+
+ // Array holding the string names of the events on the given object
+ string[] eventNameArray;
+
+ // Get all events for the given object
+ if (eventSender.objectReferenceValue != null)
+ {
+ eventNameArray = Utilities.EventUtility.GetEventNameArray(eventSender.objectReferenceValue);
+
+ Component eventSenderComponent = eventSender.objectReferenceValue as Component;
+
+ // Get the list of all reactions in the scene to display in a list
+ GenericReaction[] reactionsInScene = FindObjectsOfType();
+
+ // Check to make sure there is at least 1 reaction in scene
+ if (reactionsInScene.Length == 0)
+ {
+ EditorGUILayout.HelpBox(NO_REACTION_WARNING_MESSAGE, MessageType.Error);
+
+ serializedObject.ApplyModifiedProperties();
+
+ // Since there are no reactions, don't processing the rest
+ return;
+ }
+
+ // See if the dictionary needs to be updated with new events
+ if (eventSenderComponent != null && eventSenderComponent != lastUsedComponent.objectReferenceValue)
+ {
+ lastUsedComponent.objectReferenceValue = eventSenderComponent;
+
+ reactionsPerEventDictionary.Clear();
+ targetReactor.Clear();
+
+ // Create a list for each event from provided event sender
+ for (int n = 0; n < eventNameArray.Length; n++)
+ {
+ ReactorEditorInfo currentInfo = new ReactorEditorInfo
+ {
+ foldoutOpenStatus = false,
+ reactionList = new List(),
+ reactionTriggerMethodList = new List(),
+ reactionTriggerIndexSelectionList = new List()
+ };
+
+ reactionsPerEventDictionary.Add(eventNameArray[n], currentInfo);
+ }
+ }
+ // Otherwise, copy the one back from the target
+ else
+ {
+ CopyFromTarget(eventNameArray);
+ }
+
+ // Display a warning if there are no events on the component
+ if (eventNameArray.Length == 0)
+ {
+ EditorGUILayout.HelpBox(NO_EVENTS_WARNING_MESSAGE, MessageType.Error);
+ }
+ // Otherwise, display the event list and allow the user to hook up reactions to the events
+ else
+ {
+ // Display every event that the event sender has
+ for (int n = 0; n < eventNameArray.Length; n++)
+ {
+ // Delta to minimize/maximize the specific event
+ reactionsPerEventDictionary[eventNameArray[n]].foldoutOpenStatus = EditorGUILayout.Foldout(reactionsPerEventDictionary[eventNameArray[n]].foldoutOpenStatus, eventNameArray[n]);
+
+ // Show the psuedo array if the user has hit the delta
+ if (reactionsPerEventDictionary[eventNameArray[n]].foldoutOpenStatus)
+ {
+ // Display a prompt for a reaction based on the current event in the given component
+ for (int h = 0; h < reactionsPerEventDictionary[eventNameArray[n]].reactionList.Count; h++)
+ {
+ EditorGUILayout.BeginHorizontal();
+
+ // Prompt for the Reaction
+ reactionsPerEventDictionary[eventNameArray[n]].reactionList[h] = (GenericReaction)EditorGUILayout.ObjectField(reactionsPerEventDictionary[eventNameArray[n]].reactionList[h], typeof(GenericReaction), true);
+
+ // Since some reactions use the HideMethod attribute, check here to see if they should be displayed
+ List reactionTriggers = new List();
+
+ if (reactionsPerEventDictionary[eventNameArray[n]].reactionList[h] != null)
+ {
+ foreach (string methodName in Utilities.Constants.reactionTriggerMethods)
+ {
+ MethodBase currentMethod = reactionsPerEventDictionary[eventNameArray[n]].reactionList[h].GetType().GetMethod(methodName);
+
+ var currentAttribute = currentMethod.GetCustomAttributes(typeof(HideMethodFromInspectorAttribute), true);
+
+ // If the attribute length is 0, then it was not added to the method and the variable should be displayed
+ if (currentAttribute.Length == 0)
+ {
+ reactionTriggers.Add(methodName);
+ }
+ }
+ }
+ else
+ {
+ reactionTriggers.Add("");
+ }
+
+ // Reaction method prompt (index selection)
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerIndexSelectionList[h] = EditorGUILayout.Popup(reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerIndexSelectionList[h], reactionTriggers.ToArray());
+
+ // Store method name with the editor info
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerMethodList[h] = reactionTriggers[reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerIndexSelectionList[h]];
+
+ // Add a button to remove this from the list
+ if (GUILayout.Button("-"))
+ {
+ reactionsPerEventDictionary[eventNameArray[n]].RemoveElementsAt(h);
+ }
+
+ EditorGUILayout.EndHorizontal();
+ }
+
+ // Add a button to allow adding more reactions to the list
+ if (GUILayout.Button("+"))
+ {
+ // Add null values to the lists so that index exists in the list and can be autopopulated by the editor (until changed by user)
+ reactionsPerEventDictionary[eventNameArray[n]].reactionList.Add(null);
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerMethodList.Add(null);
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerIndexSelectionList.Add(0);
+ }
+ }
+ }
+ }
+
+ // Copy the dictionary made in the Editor to the GameObject
+ targetReactor.Clear();
+
+ for (int n = 0; n < eventNameArray.Length; n++)
+ {
+ targetReactor.AddDictionaryKey(eventNameArray[n],
+ reactionsPerEventDictionary[eventNameArray[n]].foldoutOpenStatus,
+ reactionsPerEventDictionary[eventNameArray[n]].reactionList,
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerMethodList,
+ reactionsPerEventDictionary[eventNameArray[n]].reactionTriggerIndexSelectionList);
+ }
+ }
+ // If no component is given, then all the info should be cleared
+ else
+ {
+ EditorGUILayout.HelpBox(PROVIDE_COMPONENT_MESSAGE, MessageType.None);
+
+ // Reset the dictionary and associated information
+ reactionsPerEventDictionary.Clear();
+ targetReactor.Clear();
+
+ lastUsedComponent.objectReferenceValue = null;
+ }
+
+ // Write properties back to the serialized object
+ serializedObject.ApplyModifiedProperties();
+
+ Undo.RecordObject(targetReactor, UNDO_MESSAGE);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs.meta
new file mode 100644
index 0000000..71ff953
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/ReactorEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f86dac004d033a44086fc13d88ec84ba
+timeCreated: 1544132562
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs
new file mode 100644
index 0000000..3aa6673
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs
@@ -0,0 +1,69 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Utilities
+{
+ ///
+ /// Allows the user to select a tracker from the tracker list available to an SDK. First, they must select
+ /// the SDK they want to pull the tracker from and then select the tracker from the tracker list. If the
+ /// SDK doesn't have the tracker in its own list, then it will not appear here.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), October 2018
+ ///
+ [CustomEditor(typeof(TrackedObjectFollower))]
+ public class TrackedObjectFollowerEditor : Editor
+ {
+ #region SerializedProperties
+ SerializedProperty sdkIndex;
+ SerializedProperty trackerIndex;
+ #endregion
+
+ #region PrivateVariables
+ private VRTK_SDKSetup[] sdkArray;
+ private List sdkNameList;
+ #endregion
+
+ #region UnityEditorFunctions
+ public void Awake()
+ {
+ sdkArray = VRTK_SharedMethods.FindEvenInactiveComponents();
+ sdkNameList = new List();
+
+ foreach (VRTK_SDKSetup currentSDK in sdkArray)
+ {
+ sdkNameList.Add(currentSDK.name);
+ }
+
+ sdkIndex = serializedObject.FindProperty("sdkSelectionIndex");
+ trackerIndex = serializedObject.FindProperty("trackerSelectionIndex");
+ }
+
+ public override void OnInspectorGUI()
+ {
+ // Read any updates on the serialized object
+ serializedObject.Update();
+
+ // Prompt the user for the SDK selection
+ sdkIndex.intValue = EditorGUILayout.Popup(sdkIndex.intValue, sdkNameList.ToArray());
+
+ VRTK_SDKSetup selectedSDK = sdkArray[sdkIndex.intValue];
+ List trackerNames = new List();
+
+ // Turn the tracker list into an array of string names
+ foreach(GameObject currentTracker in selectedSDK.actualTrackers)
+ {
+ trackerNames.Add(currentTracker.name);
+ }
+
+ // Prompt user for the tracker selection
+ trackerIndex.intValue = EditorGUILayout.Popup(trackerIndex.intValue, trackerNames.ToArray());
+
+ // Save changes made to the serialized object
+ serializedObject.ApplyModifiedProperties();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs.meta
new file mode 100644
index 0000000..615a020
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectFollowerEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 51a8e9be7a9574b47a8db3849dd547ee
+timeCreated: 1538750345
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs
new file mode 100644
index 0000000..e676507
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs
@@ -0,0 +1,168 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using System;
+#if VRTK_DEFINE_SDK_STEAMVR
+using Valve.VR;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Utilities
+{
+ ///
+ /// Helper struct to hold the list of Hardware IDs as strings. Promotes easy JSON Serialization
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ /// Updated: Nicolas Herrera (nherrera@cra.com), January 2019
+ ///
+ public struct TrackerList
+ {
+ public List trackerList;
+
+ public TrackerList(List givenList)
+ {
+ trackerList = givenList;
+ }
+ }
+
+ ///
+ /// Custom editor for displaying the hardware IDs for Vive trackers and allowing the user to select the
+ /// needed ID. The user can refresh the list by hitting the refresh list button and it will pull all the
+ /// Vive Trackers that are currently paired with SteamVR. The list is then saved as an EditorPref so that
+ /// it can easily pull and dispaly the list.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ ///
+ [CustomEditor(typeof(TrackedObjectID))]
+ public class TrackedObjectIDEditor : Editor
+ {
+#if VRTK_DEFINE_SDK_STEAMVR
+ #region PublicVariables
+ public const string TrackerListPrefLocation = "VIRTUOSO.TrackerList";
+ #endregion
+
+ #region UnityEditorFunctions
+ public override void OnInspectorGUI()
+ {
+ // Read
+ serializedObject.Update();
+
+ // Get properties of TrackeObjectID
+ SerializedProperty indexProperty = serializedObject.FindProperty("trackerPopupIndex");
+ SerializedProperty hardwareID = serializedObject.FindProperty("trackerHardwareID");
+
+ // Give the user the option to manually empty the list
+ if (GUILayout.Button("Clear Tracker List"))
+ {
+ ClearTrackerIDPref();
+ }
+
+ // Give the user the option to manually refresh the list
+ if (GUILayout.Button("Refresh Tracker List"))
+ {
+ UpdateTrackerIDList();
+ }
+
+ // Give the user the ability to assign the index with a button push in the editor
+ if(GUILayout.Button("Assign Index"))
+ {
+ AssignIndex();
+ }
+
+ // Make sure that the key has been set at least once and if not, refresh the tracker list
+ string[] hardwareIDArray;
+
+ // Check to see if their is a list in the Editor Preferences and use if it exists
+ if(EditorPrefs.HasKey(TrackerListPrefLocation))
+ {
+ hardwareIDArray = GetHardwareIDArray();
+ }
+ else
+ {
+ hardwareIDArray = new string[0];
+ }
+
+ indexProperty.intValue = EditorGUILayout.Popup(indexProperty.intValue, hardwareIDArray);
+
+ // Check to make sure there is something in the option list, if not, use an empty string
+ if (hardwareIDArray.Length == 0)
+ {
+ hardwareID.stringValue = "";
+ }
+ else
+ {
+ hardwareID.stringValue = hardwareIDArray[indexProperty.intValue];
+ }
+
+ // Save
+ serializedObject.ApplyModifiedProperties();
+ }
+ #endregion
+
+ #region TrackerHelperFunctions
+ private string[] GetHardwareIDArray()
+ {
+ string trackerJsonPref = EditorPrefs.GetString(TrackerListPrefLocation);
+
+ TrackerList trackerListJson;
+
+ try
+ {
+ trackerListJson = JsonUtility.FromJson(trackerJsonPref);
+ }
+ catch(NullReferenceException)
+ {
+ Debug.LogWarning("No tracker list found in EditorPrefs.");
+ return new string[0];
+ }
+
+ return trackerListJson.trackerList.ToArray();
+ }
+
+ ///
+ /// Allows for the Editor to assign the index of a SteamVR Tracked Object at Editor time.
+ ///
+ public void AssignIndex()
+ {
+ EVRInitError initError = EVRInitError.None;
+ OpenVR.Init(ref initError, EVRApplicationType.VRApplication_Overlay);
+
+ (serializedObject.targetObject as TrackedObjectID).AssignIndex();
+
+ // Properly close reference to SteamVR so it can be access safely again later
+ OpenVR.Shutdown();
+ }
+
+ [MenuItem("VIRTUOSO/Update Tracker ID List")]
+ public static void UpdateTrackerIDList()
+ {
+ EVRInitError initError = EVRInitError.None;
+ OpenVR.Init(ref initError, EVRApplicationType.VRApplication_Overlay);
+ List hardwareIDList = new List();
+
+ for (uint n = 0; n < Constants.MAX_OPENVR_OBJECTS; n++)
+ {
+ ETrackedDeviceClass deviceClass = OpenVR.System.GetTrackedDeviceClass(n);
+
+ if(deviceClass == ETrackedDeviceClass.GenericTracker)
+ {
+
+ hardwareIDList.Add(TrackedObjectID.GetHardwareIDFromIndex((int)n));
+ }
+ }
+
+ // EditorPrefs cannot store lists but can store anything as a string, so convert the list to JSON and save that instead
+ string trackerListJson = JsonUtility.ToJson(new TrackerList(hardwareIDList));
+ EditorPrefs.SetString(TrackerListPrefLocation, trackerListJson);
+
+ // Properly close reference to SteamVR so it can be access safely again later
+ OpenVR.Shutdown();
+ }
+
+ public static void ClearTrackerIDPref()
+ {
+ EditorPrefs.SetString(TrackerListPrefLocation, "");
+ }
+ #endregion
+#endif
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs.meta
new file mode 100644
index 0000000..cd948a0
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Editors/TrackedObjectIDEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 44dbae16bc3787b42919625fc1fd3b75
+timeCreated: 1536346367
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers.meta b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers.meta
new file mode 100644
index 0000000..b6d73e0
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 72ff3c2576c4357489b673877625a9ec
+folderAsset: yes
+timeCreated: 1553805839
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs
new file mode 100644
index 0000000..d55d750
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs
@@ -0,0 +1,81 @@
+using UnityEngine;
+using UnityEditor;
+using CharlesRiverAnalytics.Virtuoso.InteractionAreas;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Custom property drawer to help the user to select the proper VIRTUOSO event and based on the provided class,
+ /// the proper event methods available to that class for propogating the timeline events.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ ///
+ [CustomPropertyDrawer(typeof(TimelineEventSelection))]
+ public class TimelineEventSelectionDrawer : PropertyDrawer
+ {
+ #region PrivateVariables
+ // Number of boxes that will be made to fit on one line in the editor
+ private const float propertiesPerLine = 2.0f;
+ #endregion
+
+ #region UnityFunctions
+ ///
+ /// Draws the custom property drawer for displaying a timeline event selection, which includes the VirtuosoEvent and the event to listen to
+ ///
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ EditorGUI.BeginProperty(position, label, property);
+
+ EditorGUI.indentLevel = 0;
+
+ // Fit 2 properties on one line
+ position.width /= propertiesPerLine;
+
+ // Grab the providedEvent in the Selection object to find out what kind of enum to display
+ SerializedProperty providedEvent = property.FindPropertyRelative("providedEvent");
+ EditorGUI.ObjectField(position, providedEvent, typeof(VirtuosoEvent), GUIContent.none);
+
+ // Move the next field over horizontally
+ position.x += position.width;
+
+ SerializedProperty selectedEventName = property.FindPropertyRelative("eventToListen");
+ SerializedProperty selectedPopupValue = property.FindPropertyRelative("selectedPopupValue");
+
+ // Grab the actual passed in class to display the proper enum
+ VirtuosoEvent virtuosoEvent = (VirtuosoEvent)providedEvent.objectReferenceValue;
+
+ if(virtuosoEvent is TimelineEvent)
+ {
+ DisplayEventList(position, virtuosoEvent as TimelineEvent, selectedPopupValue, selectedEventName);
+ }
+ else if(virtuosoEvent is InteractionArea)
+ {
+ DisplayEventList(position, virtuosoEvent as InteractionArea, selectedPopupValue, selectedEventName);
+ }
+ else if(virtuosoEvent is GestureInteraction)
+ {
+ DisplayEventList(position, virtuosoEvent as GestureInteraction, selectedPopupValue, selectedEventName);
+ }
+ else
+ {
+ EditorGUI.LabelField(position, "Provide VIRTUOSO Event");
+ }
+
+ EditorGUI.EndProperty();
+ }
+ #endregion
+
+ #region HelperFunctions
+ // Displays a popup box of event names for a given object
+ protected void DisplayEventList(Rect position, T givenEvent, SerializedProperty popupIntSelection, SerializedProperty eventString)
+ {
+ var eventNames = Utilities.EventUtility.GetEventNameArray(givenEvent);
+
+ popupIntSelection.intValue = EditorGUI.Popup(position, popupIntSelection.intValue, eventNames);
+
+ eventString.stringValue = eventNames[popupIntSelection.intValue];
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs.meta
new file mode 100644
index 0000000..d668dc3
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/PropertyDrawers/TimelineEventSelectionDrawer.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: a17faa89409619a478d09f87c627fb0f
+timeCreated: 1537377478
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Windows.meta b/Assets/VIRTUOSO/Scripts/Editor/Windows.meta
new file mode 100644
index 0000000..bae903b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Windows.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 452f17f6c3e11784cb4bd3354f0a3f50
+folderAsset: yes
+timeCreated: 1551900643
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs b/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs
new file mode 100644
index 0000000..76ed3d7
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs
@@ -0,0 +1,129 @@
+using CharlesRiverAnalytics.Virtuoso.Haptic;
+using UnityEditor;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Utilities
+{
+ ///
+ /// Utility to setup the needed body coordinates on a character that uses an Animator.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class ConfigureHapticCharacter : EditorWindow
+ {
+ #region PrivateVariables
+ // Since this utility follows the body parts on the Ragdoll wizard (plus hands)
+ // If the value is set to true, will set up the needed scripts for the HapticSDK on that
+ private bool[] configureThisBodyPart;
+
+ private static HumanBodyBones[] bodyParts =
+ {
+ HumanBodyBones.Hips,
+ HumanBodyBones.LeftUpperLeg,
+ HumanBodyBones.LeftLowerLeg,
+ HumanBodyBones.LeftFoot,
+ HumanBodyBones.RightUpperLeg,
+ HumanBodyBones.RightLowerLeg,
+ HumanBodyBones.RightFoot,
+ HumanBodyBones.LeftUpperArm,
+ HumanBodyBones.LeftLowerArm,
+ HumanBodyBones.LeftHand,
+ HumanBodyBones.RightUpperArm,
+ HumanBodyBones.RightLowerArm,
+ HumanBodyBones.RightHand,
+ HumanBodyBones.Spine,
+ HumanBodyBones.Head
+ };
+ #endregion
+
+ #region ConfigurationMethods
+ [MenuItem("VIRTUOSO/Haptics/Setup Haptic Character")]
+ private static void SetupHaptics()
+ {
+ EditorWindow.GetWindow(typeof(ConfigureHapticCharacter));
+ }
+
+ private static void SetupBodyPart(GameObject bodyPartObject, HumanBodyBones bodyPart)
+ {
+ Collider objCollider = bodyPartObject.GetComponent();
+
+ if (objCollider == null)
+ {
+ objCollider = bodyPartObject.AddComponent();
+
+ Debug.LogWarning("No collider was found on " + bodyPartObject.name + " and a CapsuleCollider " +
+ "was added. Please ensure it is set up properly.", bodyPartObject);
+ }
+ else if(!(objCollider is CapsuleCollider))
+ {
+ GameObject.DestroyImmediate(objCollider);
+
+ objCollider = bodyPartObject.AddComponent();
+
+ Debug.LogWarning("Non-CapsuleCollider was found on " + bodyPartObject.name + " and a CapsuleCollider " +
+ "was added. Please ensure it is set up properly.", bodyPartObject);
+ }
+
+ // Triggers do not recieve collision info like point of collision, so make sure that is off
+ objCollider.isTrigger = false;
+ objCollider.gameObject.layer = LayerMask.NameToLayer("Body");
+ BodyCoordinate bodyCoordinate = objCollider.gameObject.AddComponent();
+ bodyCoordinate.attachedBody = bodyPart;
+
+ Debug.Log("Set up BodyCoordinate on " + bodyPartObject.name, bodyPartObject);
+ }
+
+ private void SetupCharacter(GameObject rootObject)
+ {
+ rootObject.AddComponent();
+
+ Animator animator = rootObject.GetComponent();
+
+ for (int n = 0; n < configureThisBodyPart.Length; n++)
+ {
+ if (configureThisBodyPart[n])
+ {
+ SetupBodyPart(animator.GetBoneTransform(bodyParts[n]).gameObject, bodyParts[n]);
+ }
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+ private void Awake()
+ {
+ configureThisBodyPart = new bool[bodyParts.Length];
+ }
+
+ void OnGUI()
+ {
+ GameObject obj = Selection.activeGameObject;
+
+ EditorGUILayout.BeginVertical();
+
+ EditorGUILayout.HelpBox("This Wizard will help you set up the needed body coordinate systems on a rigged character. " +
+ "Select a rigged character with an Animator component in order to use this Wizard.", MessageType.None);
+
+ if (obj != null && obj.GetComponent())
+ {
+ // Prompt for each body part
+ for (int n = 0; n < bodyParts.Length; n++)
+ {
+ configureThisBodyPart[n] = EditorGUILayout.Toggle(bodyParts[n].ToString(), configureThisBodyPart[n]);
+ }
+
+ if (GUILayout.Button("Configure Character"))
+ {
+ SetupCharacter(obj);
+ }
+ }
+ else
+ {
+ EditorGUILayout.HelpBox("Please select a GameObject with an Animator to use this wizard.", MessageType.Error);
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs.meta
new file mode 100644
index 0000000..b4042b7
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Windows/ConfigureHapticCharacter.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 74fc4bd2c6011774bb8ddf70cf5a7400
+timeCreated: 1551900658
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs b/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs
new file mode 100644
index 0000000..e931a51
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs
@@ -0,0 +1,86 @@
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using UnityEditor;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Editor window for adjusting the settings used by the Haptic SDK. This works by setting the
+ /// values on the ScriptableHapticSetting class to save them. Also provides a utility to reset
+ /// the values to their default.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class HapticSettingsWindow : EditorWindow
+ {
+ #region PrivateVariables
+ private ScriptableHapticSettings persistentSettingsData;
+ private ScriptableHapticSettings temporarySettingsData;
+ #endregion
+
+ #region SettingMethods
+ [MenuItem("VIRTUOSO/Haptics/HapticSDK Settings")]
+ private static void SetupHaptics()
+ {
+ EditorWindow.GetWindow(typeof(HapticSettingsWindow));
+ }
+
+ private void GetMostRecentSettings()
+ {
+ persistentSettingsData = ScriptableHapticSettings.GetSettings();
+
+ temporarySettingsData = persistentSettingsData;
+ }
+ #endregion
+
+ #region Unity Functions
+ private void Awake()
+ {
+ GetMostRecentSettings();
+ }
+
+ private void OnGUI()
+ {
+ EditorGUILayout.BeginVertical();
+
+ // Prompt for default save location for patterns
+ temporarySettingsData.defaultPatternSaveLocation = EditorGUILayout.DelayedTextField("Pattern Save Location", temporarySettingsData.defaultPatternSaveLocation);
+
+ // Prompt for default save location for curves
+ temporarySettingsData.defaultCurveSaveLocation = EditorGUILayout.DelayedTextField("Curve Save Location", temporarySettingsData.defaultCurveSaveLocation);
+
+ // Prompt for time granularity
+ temporarySettingsData.defaultTimeGranularity = EditorGUILayout.FloatField("Time Granularity", temporarySettingsData.defaultTimeGranularity);
+
+ // Prompt for default intensity
+ temporarySettingsData.defaultIntensity = EditorGUILayout.FloatField("Default Intensity", temporarySettingsData.defaultIntensity);
+
+ // Prompt for curve granularity
+ temporarySettingsData.defaultCurveRenderingGranularity = EditorGUILayout.IntField("Curve Granularity", temporarySettingsData.defaultCurveRenderingGranularity);
+
+ EditorGUILayout.BeginHorizontal();
+
+ // Reset to default
+ if (GUILayout.Button("Reset to Default"))
+ {
+ // Delete the scriptable object, it will be recreated next time it is accessed with the default settings
+ ScriptableObjectUtility.DeleteScriptableObject(persistentSettingsData);
+
+ GetMostRecentSettings();
+ }
+
+ // Save Settings
+ if (GUILayout.Button("Save Settings"))
+ {
+ temporarySettingsData.OnValidate();
+
+ persistentSettingsData = temporarySettingsData;
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.EndVertical();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs.meta b/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs.meta
new file mode 100644
index 0000000..f795b6b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Editor/Windows/HapticSettingsWindow.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f2e75fc075bf2ce4f989e717b45f6b62
+timeCreated: 1556137180
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events.meta b/Assets/VIRTUOSO/Scripts/Events.meta
new file mode 100644
index 0000000..69cefaa
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 49fa689777912894c86e45b586dbd1c9
+folderAsset: yes
+timeCreated: 1544108878
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender.meta b/Assets/VIRTUOSO/Scripts/Events/ArgSender.meta
new file mode 100644
index 0000000..776c902
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: f04ef79e47bd8694f906b93d9aa9ca08
+folderAsset: yes
+timeCreated: 1551199493
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs b/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs
new file mode 100644
index 0000000..574094c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs
@@ -0,0 +1,62 @@
+using CharlesRiverAnalytics.Virtuoso.InteractionAreas;
+using System;
+using VRTK;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Ensures that the controller that causes the initial interaction on an InteractableObject is passed to
+ /// a reaction if needed.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [RequireComponent(typeof(VRTK_InteractableObject))]
+ public class ControllerEventArgSender : EventArgSender
+ {
+ #region PrivateVariables
+ private VRTK_InteractableObject interactableObject;
+ private GameObject controllerGameObject;
+ #endregion
+
+ #region EventArgSenderImplementation
+ public override EventArgs GetEventArgs()
+ {
+ ControllerReactionEventArgs snapEventArgs = new ControllerReactionEventArgs()
+ {
+ interactingController = controllerGameObject
+ };
+
+ return snapEventArgs;
+ }
+ #endregion
+
+ #region EventHandlers
+ private void InteractingObject_InteractableObjectUngrabbed(object sender, InteractableObjectEventArgs e)
+ {
+ controllerGameObject = null;
+ }
+
+ private void InteractingObject_InteractableObjectGrabbed(object sender, InteractableObjectEventArgs e)
+ {
+ controllerGameObject = e.interactingObject.transform.parent.gameObject;
+ }
+ #endregion
+
+ #region UnityFunctions
+ private void Awake()
+ {
+ interactableObject = GetComponent();
+
+ interactableObject.InteractableObjectGrabbed += InteractingObject_InteractableObjectGrabbed;
+ interactableObject.InteractableObjectUngrabbed += InteractingObject_InteractableObjectUngrabbed;
+ }
+
+ private void OnApplicationQuit()
+ {
+ interactableObject.InteractableObjectGrabbed -= InteractingObject_InteractableObjectGrabbed;
+ interactableObject.InteractableObjectUngrabbed -= InteractingObject_InteractableObjectUngrabbed;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs.meta b/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs.meta
new file mode 100644
index 0000000..1fa1a97
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/ControllerEventArgSender.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 5ee916bf3143e1b4aa7f294201d95003
+timeCreated: 1551199532
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs b/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs
new file mode 100644
index 0000000..5f670ed
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs
@@ -0,0 +1,18 @@
+using System;
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// A component used in conjuction with VRTK_InteractableObject. When placed with an InteractableObject,
+ /// it will provide a (specified) EventArgs to be used by reactions.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [RequireComponent(typeof(VRTK_InteractableObject))]
+ public abstract class EventArgSender : MonoBehaviour
+ {
+ public abstract EventArgs GetEventArgs();
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs.meta b/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs.meta
new file mode 100644
index 0000000..21e739e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/EventArgSender.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 9540d1f41631cfd42bacb57df15039d3
+timeCreated: 1550607624
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs b/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs
new file mode 100644
index 0000000..04577b5
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs
@@ -0,0 +1,37 @@
+using CharlesRiverAnalytics.Virtuoso.InteractionAreas;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Sends a SnapReactionEventArgs when requested by an InteractableObject.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class SnapEventArgSender : EventArgSender
+ {
+ #region PublicVariables
+ [Tooltip("A specific location on the object where the snap should occur.")]
+ public Transform snapTransform;
+ [Tooltip("When true, the snapped GameObject's collider will not be disabled when snapped.")]
+ public bool canGrabObjectAfterSnap;
+ #endregion
+
+ #region EventArgSenderImplementation
+ public override EventArgs GetEventArgs()
+ {
+ SnapReactionEventArgs snapEventArgs = new SnapReactionEventArgs()
+ {
+ interactionObject = gameObject,
+ snapLocation = snapTransform,
+ keepObjectGrabbable = canGrabObjectAfterSnap
+ };
+
+ return snapEventArgs;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs.meta b/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs.meta
new file mode 100644
index 0000000..0c21f02
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/ArgSender/SnapEventArgSender.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 57c005fe2baffa14a9d2d521caae0116
+timeCreated: 1550608655
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs.meta b/Assets/VIRTUOSO/Scripts/Events/EventArgs.meta
new file mode 100644
index 0000000..7cbe4e2
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 24beb6ec71306594599eba8921f27c7b
+folderAsset: yes
+timeCreated: 1550609279
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs b/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs
new file mode 100644
index 0000000..453ef9d
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// EventArgs for holding controller information as this can be lost between
+ /// Interactable Objects and Interaction Areas.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class ControllerReactionEventArgs : InteractionAreaEventArgs
+ {
+ public GameObject interactingController;
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs.meta b/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs.meta
new file mode 100644
index 0000000..a1dd25b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/ControllerReactionEventArgs.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 5565f29df323e794e93d6ed4284a28df
+timeCreated: 1551199749
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs b/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs
new file mode 100644
index 0000000..2e22589
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// Event Payload
+ /// The game object that causes the event to go off in the Interaction Area
+ ///
+ public class InteractionAreaEventArgs : EventArgs
+ {
+ public GameObject interactionObject;
+ // When marked true, a reaction will query the interactionObject for it's own special EventArgs
+ // since many reactions can be hooked into a single event
+ public bool hasMoreReactionInfo = false;
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs.meta b/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs.meta
new file mode 100644
index 0000000..d0f9e5b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/InteractionAreaEventArgs.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: be021a25b73366d40bfaffee7bfa0e52
+timeCreated: 1550609357
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs b/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs
new file mode 100644
index 0000000..c4286c4
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs
@@ -0,0 +1,17 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// Helper class for the Snap Reaction. If extra information is needed for snapping, this class
+ /// can be expanded to hold the information and get passed to the Interaction Area when the
+ /// InteractableObject interacts with the IA.
+ ///
+ public class SnapReactionEventArgs : InteractionAreaEventArgs
+ {
+ public Transform snapLocation;
+ public bool keepObjectGrabbable;
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs.meta b/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs.meta
new file mode 100644
index 0000000..6dc8a94
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/EventArgs/SnapReactionEventArgs.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 2034e045c20bf4943b7724ce48e0aa39
+timeCreated: 1550609290
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs b/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs
new file mode 100644
index 0000000..7ea8d51
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs
@@ -0,0 +1,179 @@
+using CharlesRiverAnalytics.Virtuoso.InteractionAreas;
+using CharlesRiverAnalytics.Virtuoso.Reaction;
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ public delegate void TimelineEventHandler(object sender, EventArgs e);
+
+ ///
+ /// Timeline events are used for propogating events happening for the entire scenario. This would include
+ /// the background events of the scenario. Events can be held off from firing by filling in the
+ /// dependencies for either other Timeline events, by Interaction Areas, gesture events, or anything
+ /// that inherits the VirtuosoEvent.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class TimelineEvent : VirtuosoEvent
+ {
+ #region PublicVariables
+ [Tooltip("The time (in ms) the timeline event will wait before firing the reactions.")]
+ public int startDelay = 0;
+ [Tooltip("The list of other timeline events, interaction areas, and gesture events that can constrain this event.")]
+ public List dependencyList;
+ [Tooltip("The list of reactions that will fire when all dependencies have been met.")]
+ public List reactionList;
+ #endregion
+
+ #region ProtectedVariables
+ protected HashSet awaitingEvents;
+ protected List dynamicDelegateList;
+ #endregion
+
+ #region EventVariables
+ // Emitted when the timeline event finishes
+ public event TimelineEventHandler TimelineEventFinish;
+
+ protected virtual void OnTimelineEventFinish(EventArgs timelineArgs)
+ {
+ if (TimelineEventFinish != null)
+ {
+ TimelineEventFinish(this, timelineArgs);
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+ protected void Awake()
+ {
+ awaitingEvents = new HashSet();
+ dynamicDelegateList = new List();
+ }
+
+ protected void OnEnable()
+ {
+ for (int n = 0; n < dependencyList.Count; n++)
+ {
+ if (dependencyList[n].providedEvent is TimelineEvent)
+ {
+ TimelineEvent currentEvent = dependencyList[n].providedEvent as TimelineEvent;
+
+ awaitingEvents.Add(currentEvent);
+
+ dynamicDelegateList.Add(EventUtility.SubscribeToEvent(this,
+ currentEvent,
+ dependencyList[n].eventToListen,
+ "OnDependentTimeline",
+ null,
+ GetType(),
+ BindingFlags.Instance | BindingFlags.NonPublic));
+ }
+ else if(dependencyList[n].providedEvent is InteractionArea)
+ {
+ InteractionArea currentEvent = dependencyList[n].providedEvent as InteractionArea;
+
+ awaitingEvents.Add(currentEvent);
+
+ dynamicDelegateList.Add(EventUtility.SubscribeToEvent(this,
+ currentEvent,
+ dependencyList[n].eventToListen,
+ "OnDependentInteractionArea",
+ null,
+ GetType(),
+ BindingFlags.Instance | BindingFlags.NonPublic));
+ }
+ else if(dependencyList[n].providedEvent is GestureInteraction)
+ {
+ GestureInteraction currentEvent = dependencyList[n].providedEvent as GestureInteraction;
+
+ awaitingEvents.Add(currentEvent);
+
+ dynamicDelegateList.Add(EventUtility.SubscribeToEvent(this,
+ currentEvent,
+ dependencyList[n].eventToListen,
+ "OnDependentTimeline",
+ null,
+ GetType(),
+ BindingFlags.Instance | BindingFlags.NonPublic));
+ }
+ }
+
+ // If there are no dependencies, you start at the scene's start
+ CheckDependencyCount();
+ }
+
+ protected void OnDisable()
+ {
+ for(int n = 0; n < dynamicDelegateList.Count; n++)
+ {
+ dynamicDelegateList[n].UnsubscribeEvent();
+ }
+ }
+ #endregion
+
+ #region EventHandling
+ protected void OnDependentTimeline(object sender, EventArgs e)
+ {
+ awaitingEvents.Remove(sender as TimelineEvent);
+
+ CheckDependencyCount();
+ }
+
+ protected void OnDependentInteractionArea(object sender, InteractionAreaEventArgs e)
+ {
+ awaitingEvents.Remove(sender as InteractionArea);
+
+ CheckDependencyCount();
+ }
+
+ // TODO Add back with gestures [VIRTUOSO-169]
+ /*protected void OnDependentGesture(object sender, GestureEventArgs e)
+ {
+ awaitingEvents.Remove(sender as InteractGesture);
+
+ CheckDependencyCount();
+ }*/
+ #endregion
+
+ #region HelperFunctions
+ ///
+ /// Helper function to check the size of the awaitingEvent set. Since objects are removed from the set
+ /// after they are fired, when the set is empty, the timeline event has no more dependencies and
+ /// can now fire off the finish event.
+ ///
+ protected void CheckDependencyCount()
+ {
+ if(awaitingEvents.Count == 0)
+ {
+ StartCoroutine(FireEvent());
+ }
+ }
+ #endregion
+
+ #region Coroutines
+ protected IEnumerator FireEvent()
+ {
+ yield return new WaitForSeconds(startDelay / Constants.MS_TO_SECONDS);
+
+ for (int n = 0; n < reactionList.Count; n++)
+ {
+ if(reactionList[n] != null)
+ {
+ // TODO Fix connection with reactions [VIRTUOSO-180]
+ //reactionList[n].StartReaction();
+ }
+ }
+
+ OnTimelineEventFinish(new EventArgs());
+
+ // Disable self as it is no longer needed
+ enabled = false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs.meta b/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs.meta
new file mode 100644
index 0000000..96d2229
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/TimelineEvent.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 0ff36da1c5a8bb5478071642f103c055
+timeCreated: 1534875337
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs b/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs
new file mode 100644
index 0000000..3446607
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ [Serializable]
+ public class TimelineEventSelection
+ {
+ // The actual object that will give off the event
+ public VirtuosoEvent providedEvent;
+ // Hold the string value of an enum and convert it when the type is known at runtime
+ public string eventToListen;
+
+ // Used for data persistence in the property drawer, stores the popup index so it can survive the serialization process
+ public int selectedPopupValue;
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs.meta b/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs.meta
new file mode 100644
index 0000000..5d1f9c5
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/TimelineEventSelection.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 7ab8bd0dcacb4144b92ce95b45ec87bd
+timeCreated: 1537903034
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs b/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs
new file mode 100644
index 0000000..26d6aa3
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Base class for any Virtuoso Event System to inherit from. It does not provide
+ /// any functionality or data, but allows for collections to hold different
+ /// event systems (such as the case in TimeLineEvent dependencies).
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), September 2018
+ ///
+ public class VirtuosoEvent : MonoBehaviour
+ {
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs.meta b/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs.meta
new file mode 100644
index 0000000..769c18a
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Events/VirtuosoEvent.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b71f5346745d5f846b1bb9b349048db6
+timeCreated: 1537294487
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Gestures.meta b/Assets/VIRTUOSO/Scripts/Gestures.meta
new file mode 100644
index 0000000..93a0650
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ec3ddf9ce8b47b945a963b4351dbecd8
+folderAsset: yes
+timeCreated: 1544458162
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs b/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs
new file mode 100644
index 0000000..c5b959e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs
@@ -0,0 +1,547 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using CharlesRiverAnalytics.Virtuoso;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Gestures
+{
+ ///
+ /// An advanced gesture combines raw gestures with contextual information in a state machine to allow for multistep gestures
+ /// that also include more complex elements like basic movement, palm angle, etc.
+ ///
+ /// Author: Dan Duggan (dduggan@cra.com) October 2018
+ ///
+ [CreateAssetMenu(menuName = "VIRTUOSO/Advanced Gesture")]
+ public class AdvancedGesture : Gesture
+ {
+ #region Public Variables
+ public List advancedGestureStateList = new List();
+ [System.NonSerialized]
+ protected int currentGestureStateIndex;
+ [System.NonSerialized]
+ public Vector3 prevLeftPalmPosition;
+ [System.NonSerialized]
+ public Vector3 prevRightPalmPosition;
+ [NonSerialized]
+ protected VRTK_InteractGrab cachedLeftHandGrabber = null;
+ [NonSerialized]
+ protected VRTK_InteractGrab cachedRightHandGrabber = null;
+ [System.NonSerialized]
+ public float gestureStartTime = 0;
+ public bool allowedWhileHoldingObjects = false;
+ // Adds a delay after a gesture is triggered to prevent it from turning on/off too quickly
+ public float gestureCooldown;
+ #endregion
+ #region Control Variables
+ [System.NonSerialized]
+ protected float gestureCooldownStartTime = 0;
+ protected float startupDelayTime = 1.0f;
+ #endregion
+
+ #region Gesture Detection Code
+
+ public override bool IsGestureOccuring(SDK_BaseGestureLibrary.Hand specificHand)
+ {
+ // if not detected, it cannot be gesturing
+ if(! VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary().IsHandDetected(specificHand))
+ {
+ return false;
+ }
+
+ // OpenMG has a habit of claiming gestures are occuring at the start of the scene before hands are even detected.
+ // this delay ensures that no gesture fire until the system is fully started
+ if (Time.time < startupDelayTime)
+ {
+ return false;
+ }
+
+ if (!allowedWhileHoldingObjects)
+ {
+ if (IsHoldingObject(SDK_BaseGestureLibrary.Hand.Left) || IsHoldingObject(SDK_BaseGestureLibrary.Hand.Right))
+ {
+ return false;
+ }
+ }
+
+ bool isCooldownActive = Time.time <= (gestureCooldownStartTime + gestureCooldown);
+ bool isCurrentStateOccuring = advancedGestureStateList[currentGestureStateIndex].coreGesture.IsGestureOccuring(specificHand);
+ foreach (AdvancedGestureCondition advCondition in advancedGestureStateList[currentGestureStateIndex].AdvancedGestureConditionList)
+ {
+ isCurrentStateOccuring = isCurrentStateOccuring && advCondition.IsConditionOccuring(specificHand, this);
+ }
+ if (isCurrentStateOccuring && advancedGestureStateList.Count == currentGestureStateIndex + 1)
+ {
+ if (isCooldownActive == false)
+ {
+ gestureCooldownStartTime = Time.time;
+ }
+ return true;
+ }
+ else if (isCurrentStateOccuring)
+ {
+ currentGestureStateIndex++;
+ gestureStartTime = Time.time;
+ prevLeftPalmPosition = GetLeftHandPosition();
+ prevRightPalmPosition = GetRightHandPosition();
+ }
+ else
+ {
+ if (advancedGestureStateList[currentGestureStateIndex].holdTime != 0 && advancedGestureStateList[currentGestureStateIndex].holdTime + gestureStartTime <= Time.time)
+ {
+ ResetGestureChain();
+ }
+
+ }
+ return isCooldownActive;
+ }
+ #endregion
+
+ #region Helper Functions
+ ///
+ /// Returns true if the specified hand is holding an object and false otherwise.
+ ///
+ public bool IsHoldingObject(SDK_BaseGestureLibrary.Hand hand)
+ {
+ Transform handRoot = VRTK_SDK_Bridge.GetHandSDK().GetRootTransform();
+ if (handRoot == null)
+ {
+ // if the hand is not visible, the user isn't holding an object
+ return false;
+ }
+
+ if (hand == SDK_BaseGestureLibrary.Hand.Left && IsInteractGrabValid(cachedLeftHandGrabber))
+ {
+ // if not null, an object is being held
+ return cachedLeftHandGrabber.GetGrabbedObject() != null;
+ }
+
+ if (hand == SDK_BaseGestureLibrary.Hand.Right && IsInteractGrabValid(cachedRightHandGrabber))
+ {
+ // if not null, an object is being held
+ return cachedRightHandGrabber.GetGrabbedObject() != null;
+ }
+
+ // either caches aren't set up, or hands are no longer being tracked
+ VRTK_InteractGrab[] handGrabbers = handRoot.GetComponentsInChildren();
+ foreach(VRTK_InteractGrab grabber in handGrabbers)
+ {
+ if(! IsInteractGrabValid(grabber))
+ {
+ continue;
+ }
+ if(grabber.controllerEvents is GestureControllerEvent)
+ {
+ GestureControllerEvent gestureController = (GestureControllerEvent)grabber.controllerEvents;
+ if(gestureController.controllerHandId == SDK_BaseGestureLibrary.Hand.Left)
+ {
+ cachedLeftHandGrabber = grabber;
+ }
+ else if(gestureController.controllerHandId == SDK_BaseGestureLibrary.Hand.Right)
+ {
+ cachedRightHandGrabber = grabber;
+ }
+
+ if(gestureController.controllerHandId == hand)
+ {
+ return grabber.GetGrabbedObject() != null;
+ }
+ }
+ }
+ // fell through because hand was not found
+ return false;
+ }
+ ///
+ /// Returns the position of the left hand, or Vector3.zero if unavailable
+ ///
+ public Vector3 GetLeftHandPosition()
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ Debug.LogWarning("Unable to find gesture library for current Hand SDK");
+ return Vector3.zero;
+ }
+ else
+ {
+ return currentLibrary.GetHandPosition(SDK_BaseGestureLibrary.Hand.Left);
+ }
+ }
+
+ ///
+ /// Returns the position vector for the right hand or Vector3.zero if it is unavailable
+ ///
+ public Vector3 GetRightHandPosition()
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ Debug.LogWarning("Unable to find gesture library for current Hand SDK");
+ return Vector3.zero;
+ }
+ else
+ {
+ return currentLibrary.GetHandPosition(SDK_BaseGestureLibrary.Hand.Right);
+ }
+ }
+
+ ///
+ /// Returns the euler rotation in degrees for the left hand or Vector3.zero if it is unavailable
+ ///
+ public Vector3 GetLeftHandNormal()
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ Debug.LogWarning("Unable to find gesture library for current Hand SDK");
+ return Vector3.zero;
+ }
+ else
+ {
+ return currentLibrary.GetHandNormal(SDK_BaseGestureLibrary.Hand.Left);
+ }
+ }
+
+ ///
+ /// Returns the euler rotation in degrees for the right hand or Vector3.zero if it is unavailable
+ ///
+ public Vector3 GetRightHandNormal()
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ Debug.LogWarning("Unable to find gesture library for current Hand SDK");
+ return Vector3.zero;
+ }
+ else
+ {
+ return currentLibrary.GetHandNormal(SDK_BaseGestureLibrary.Hand.Right);
+ }
+ }
+ ///
+ /// Sets the state machine for the advanced gesture back to start
+ ///
+ protected void ResetGestureChain()
+ {
+ currentGestureStateIndex = 0;
+ gestureStartTime = 0;
+ prevLeftPalmPosition = GetLeftHandPosition();
+ prevRightPalmPosition = GetRightHandPosition();
+ }
+
+ protected bool IsInteractGrabValid(VRTK_InteractGrab interactGrab)
+ {
+ if(interactGrab == null)
+ {
+ interactGrab = null;
+ return false;
+ }
+
+ if(interactGrab.gameObject.activeInHierarchy == false)
+ {
+ interactGrab = null;
+ return false;
+ }
+
+ if(interactGrab.isActiveAndEnabled == false)
+ {
+ return false;
+ }
+
+ return true;
+ }
+ #endregion
+
+ }
+ #region Embedded Classes
+ ///
+ /// The advanced gesture state represents a step in an advanced gesture. It holds a number of gesture conditions that
+ /// are each check to determine if the state is occuring as well as a single coreGesture that must be active for the
+ /// state to be active.
+ ///
+ [System.Serializable]
+ public class AdvancedGestureState
+ {
+ #region Class Enum
+ public enum AdvancedConditionType
+ {
+ Movement,
+ PalmAngle,
+ SimultaneousAction,
+ Hold
+ }
+ #endregion
+ #region Public Variables and Properties
+ // name is for readability but serves no other function
+ public string gestureName = "GestureName";
+ public Gesture coreGesture;
+ [Tooltip("How long the advanced gesture will hold at this state before dropping back to the initial state.")]
+ public float holdTime;
+ // this property conglomerates the separate conditions. They are in separate lists for easier management
+ public List AdvancedGestureConditionList
+ {
+ get
+ {
+ List conditions = new List();
+ foreach (MovementGestureCondition condition in movementConditionList)
+ {
+ conditions.Add(condition);
+ }
+ foreach (HoldGestureCondition condition in holdConditionList)
+ {
+ conditions.Add(condition);
+ }
+ foreach (PalmNormalCondition condition in palmConditions)
+ {
+ conditions.Add(condition);
+ }
+ foreach (SimultaneousGesture condition in simultaneousGestureConditionList)
+ {
+ conditions.Add(condition);
+ }
+ return conditions;
+ }
+ }
+ public List movementConditionList = new List();
+ public List holdConditionList = new List();
+ public List palmConditions = new List();
+ public List simultaneousGestureConditionList = new List();
+
+ // used to decide the class for new conditions created in the editor
+ public AdvancedConditionType editorNewConditionType;
+ #endregion
+
+
+ }
+
+ ///
+ /// The base class for gesture conditions is non-abstract because Unity serialization breaks with abstract class hierarchies
+ ///
+ [System.Serializable]
+ public class AdvancedGestureCondition
+ {
+ ///
+ /// Returns true if the condition is occuring and false otherwise, except in the base version which will always return false.
+ /// This method is not marked as abstract because Unity cannot serialize classes that have abstract base classes. New Advanced Gesture Conditions
+ /// should implement this method.
+ ///
+ public virtual bool IsConditionOccuring(SDK_BaseGestureLibrary.Hand specificHand, AdvancedGesture advancedGestureInfo)
+ {
+ return false;
+ }
+
+ }
+
+ ///
+ /// The movement gesture condition determines if the hand making the gesture has moved since the previous state.
+ /// It has several options but it is noteable that none of those options allow for specific directions of travel.
+ ///
+ [System.Serializable]
+ public class MovementGestureCondition : AdvancedGestureCondition
+ {
+ #region Embedded Enum
+ // determines how the movement check is made
+ public enum MovementOperator { GreaterThan, LessThan, EqualTo }
+ #endregion
+ #region Public Variables
+ public MovementOperator distanceOperator;
+ public float distanceFromPreviousGesture;
+ public float distanceTolerance = 0.001f;
+ #endregion
+
+ #region AdvancedGestureCondition Override
+ public override bool IsConditionOccuring(SDK_BaseGestureLibrary.Hand specificHand, AdvancedGesture advancedGestureInfo)
+ {
+ Vector3 palmPosition;
+ Vector3 previousPalmPosition;
+ if (specificHand == SDK_BaseGestureLibrary.Hand.Left)
+ {
+ previousPalmPosition = advancedGestureInfo.prevLeftPalmPosition;
+ palmPosition = advancedGestureInfo.GetLeftHandPosition();
+ }
+ else
+ {
+ previousPalmPosition = advancedGestureInfo.prevRightPalmPosition;
+ palmPosition = advancedGestureInfo.GetRightHandPosition();
+ }
+
+ if (palmPosition == Vector3.zero)
+ {
+ // vector3 zero is the 'null' for vectors
+ return false;
+ }
+
+ float palmMovementDistance = Vector3.Distance(palmPosition, previousPalmPosition);
+ // switch statement effectively controls which operator is used when comparing the actual palm movement amount to the desired palm movement amount
+ switch (distanceOperator)
+ {
+ case MovementOperator.LessThan:
+ {
+ if (palmMovementDistance < distanceFromPreviousGesture)
+ {
+ return true;
+ }
+ break;
+ }
+ case MovementOperator.GreaterThan:
+ {
+ if (palmMovementDistance > distanceFromPreviousGesture)
+ {
+ return true;
+ }
+ break;
+ }
+ case MovementOperator.EqualTo:
+ {
+ if ((distanceFromPreviousGesture - distanceTolerance <= palmMovementDistance && palmMovementDistance <= distanceFromPreviousGesture + distanceTolerance))
+ {
+ return true;
+ }
+ break;
+ }
+ }
+ return false;
+ }
+ #endregion
+ }
+
+ ///
+ /// The palm vector condition passes/fails based on where the player's palm is facing relative to other objects
+ ///
+ [System.Serializable]
+ public class PalmNormalCondition : AdvancedGestureCondition
+ {
+ #region Embedded Enums
+ // no left/right vector at the moment, because the meaning of each varies on each hand (e.g. left on left is outward, left on right is inward)
+ public enum VectorType { Up, Forward }
+ public enum OtherVector { World, Hmd }
+ #endregion
+
+ #region Public Variables
+ public OtherVector otherVectorToUse;
+ public VectorType otherVectorDirection;
+ public Vector3 eulerRotationFromOtherVector;
+ public float tolerance = 0.15f;
+ #endregion
+
+ #region Advanced Gesture Condition Override
+ public override bool IsConditionOccuring(SDK_BaseGestureLibrary.Hand specificHand, AdvancedGesture advancedGestureInfo)
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ Debug.LogWarning("No gesture library detected for the current Hand SDK");
+ return false;
+ }
+ Vector3 palmNormal = currentLibrary.GetHandNormal(specificHand);
+ if (palmNormal == Vector3.zero)
+ {
+ // hand tracking lost
+ return false;
+ }
+ // otherVec is a normal vector that will be compared to the palm vector
+ Vector3 otherVec;
+ Quaternion rotationToUse = Quaternion.Euler(eulerRotationFromOtherVector);
+ if (otherVectorToUse == OtherVector.World)
+ {
+ switch (otherVectorDirection)
+ {
+ case VectorType.Forward:
+ {
+ otherVec = rotationToUse * Vector3.forward;
+ break;
+ }
+ case VectorType.Up:
+ {
+ otherVec = rotationToUse * Vector3.up;
+ break;
+ }
+ default:
+ {
+ otherVec = rotationToUse * Vector3.up;
+ break;
+ }
+ }
+ }
+ else if (otherVectorToUse == OtherVector.Hmd)
+ {
+ Transform hmd = VRTK_SDK_Bridge.GetHeadset();
+ switch (otherVectorDirection)
+ {
+ case VectorType.Forward:
+ {
+ otherVec = hmd.TransformDirection(rotationToUse * Vector3.forward);
+ break;
+ }
+ case VectorType.Up:
+ {
+ otherVec = hmd.TransformDirection(rotationToUse * Vector3.up);
+ break;
+ }
+ default:
+ {
+ otherVec = hmd.TransformDirection(rotationToUse * Vector3.up);
+ break;
+ }
+ }
+ }
+ else
+ {
+ // for whatever reason, otherVec is undefined. return false
+ return false;
+ }
+
+ float dotProduct = Vector3.Dot(otherVec, palmNormal);
+ // close to 1 -> similar direction
+ if (dotProduct >= 1 - tolerance)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ #endregion
+ }
+
+ ///
+ /// The hold gesture condition passes if the core gesture is held for a specific amount of time
+ ///
+ [System.Serializable]
+ public class HoldGestureCondition : AdvancedGestureCondition
+ {
+ #region Public Variables
+ public float gestureHoldTime;
+ #endregion
+
+ #region Advanced Gesture Condition Override
+ public override bool IsConditionOccuring(SDK_BaseGestureLibrary.Hand specificHand, AdvancedGesture advancedGestureInfo)
+ {
+ return Time.time >= advancedGestureInfo.gestureStartTime + gestureHoldTime;
+ }
+ #endregion
+ }
+
+ ///
+ /// Checks if a specific gesture is being held by the other hand. Checking if another advanced gesutre is occuring is NOT recommended
+ /// because it could lead to recursion.
+ ///
+ [System.Serializable]
+ public class SimultaneousGesture : AdvancedGestureCondition
+ {
+ #region Public Variables
+ public Gesture simultaneousGesture;
+ #endregion
+
+ #region Advanced Gesture Condition Override
+ public override bool IsConditionOccuring(SDK_BaseGestureLibrary.Hand specificHand, AdvancedGesture advancedGestureInfo)
+ {
+ SDK_BaseGestureLibrary.Hand otherHand = specificHand == SDK_BaseGestureLibrary.Hand.Left ? SDK_BaseGestureLibrary.Hand.Right : SDK_BaseGestureLibrary.Hand.Left;
+ return simultaneousGesture.IsGestureOccuring(otherHand);
+ }
+ #endregion
+ }
+ #endregion
+}
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs.meta b/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs.meta
new file mode 100644
index 0000000..c0d303c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/AdvancedGesture.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: a270cc344602b6f48ad85c8184e27d08
+timeCreated: 1546526679
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs b/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs
new file mode 100644
index 0000000..a126374
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs
@@ -0,0 +1,119 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using VRTK;
+using UnityEngine.UI;
+
+namespace CharlesRiverAnalytics.Virtuoso.Gestures
+{
+ ///
+ /// A class container for defining a gesture. This class follows the booleans that are provided
+ /// by the SDK_BaseGestureLibrary for gesture recognition. A gesture here is defined as a combination
+ /// of bools that must be true (though all others do not necessarily have to be false).
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ /// Last Modified: Dan Duggan (dduggan@cra.com) October 2018: Added code related to handedness of gestures
+ ///
+ [CreateAssetMenu(fileName = "New Gesture", menuName = "VIRTUOSO/Create Gesture")]
+ public class Gesture : ScriptableObject
+ {
+ #region Public Variables
+ [Tooltip("This gesture is occuring if every item in this list is true")]
+ public List gestureConditionList;
+ [Tooltip("If true, the gesture can only be performed with the hand specified in specificHand")]
+ public bool handSpecific = false;
+ [Tooltip("When handSpecific is true, this field specifies which hand the gesture must be performed with")]
+ public SDK_BaseGestureLibrary.Hand specificHand;
+
+ public enum BasicGesture
+ {
+ IsThumbBent,
+ IsIndexFingerBent,
+ IsMiddleFingerBent,
+ IsRingFingerBent,
+ IsPinkyFingerBent,
+ IsHandOpen,
+ IsHandClosed,
+ IsHandPinching
+ }
+ #endregion
+
+ #region Public API
+ public virtual bool IsGestureOccuring(SDK_BaseGestureLibrary.Hand handToCheck)
+ {
+ // if not detected, it cannot be gesturing
+ if (!VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary().IsHandDetected(handToCheck))
+ {
+ return false;
+ }
+
+ bool isGestureOccuring = true;
+
+ if (handSpecific && specificHand != handToCheck)
+ {
+ return false;
+ }
+
+ for (int gestureConditionIndex = 0; gestureConditionIndex < gestureConditionList.Count; gestureConditionIndex++)
+ {
+ GestureCondition condition = gestureConditionList[gestureConditionIndex];
+ bool thisConditionIsMet = true;
+ thisConditionIsMet = GetBoolValue(condition.featureToCheck, handToCheck) == condition.featureValue;
+ isGestureOccuring = isGestureOccuring && thisConditionIsMet;
+ // Quick return, if at any time one is false, then it would not execute
+ if (!isGestureOccuring)
+ {
+ return isGestureOccuring;
+ }
+ }
+
+ return isGestureOccuring;
+ }
+
+ public virtual bool GetBoolValue(BasicGesture givenGesture, SDK_BaseGestureLibrary.Hand handIndex)
+ {
+ SDK_BaseGestureLibrary currentLibrary = VRTK.VRTK_SDK_Bridge.GetHandSDK().GetGestureLibrary();
+ if (currentLibrary == null)
+ {
+ // preventing a null exception, but this really should use some error handling
+ // since currently it doesn't differentiate between a gesture not happening and a hand not existing
+ // does not print a warning because it would flood the log
+ return false;
+ }
+
+ switch (givenGesture)
+ {
+ case BasicGesture.IsThumbBent:
+ return currentLibrary.IsFingerBent(handIndex, SDK_BaseGestureLibrary.Finger.Thumb);
+ case BasicGesture.IsIndexFingerBent:
+ return currentLibrary.IsFingerBent(handIndex, SDK_BaseGestureLibrary.Finger.Index);
+ case BasicGesture.IsMiddleFingerBent:
+ return currentLibrary.IsFingerBent(handIndex, SDK_BaseGestureLibrary.Finger.Middle);
+ case BasicGesture.IsRingFingerBent:
+ return currentLibrary.IsFingerBent(handIndex, SDK_BaseGestureLibrary.Finger.Ring);
+ case BasicGesture.IsPinkyFingerBent:
+ return currentLibrary.IsFingerBent(handIndex, SDK_BaseGestureLibrary.Finger.Pinky);
+ case BasicGesture.IsHandOpen:
+ return currentLibrary.IsHandOpen(handIndex);
+ case BasicGesture.IsHandClosed:
+ return currentLibrary.IsHandClosed(handIndex);
+ case BasicGesture.IsHandPinching:
+ return currentLibrary.IsHandPinched(handIndex);
+ default:
+ return false;
+ }
+ }
+ #endregion
+ }
+
+ ///
+ /// Encapsulates data that determines whether or not the gesture is active
+ ///
+ [System.Serializable]
+ public class GestureCondition
+ {
+ public Gesture.BasicGesture featureToCheck;
+ [Tooltip("This is the value that the gesturebool should be")]
+ public bool featureValue = true;
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs.meta b/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs.meta
new file mode 100644
index 0000000..6208108
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/Gesture.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 3a946ec1f6eba3847a40b65e89f9f034
+timeCreated: 1544458172
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs b/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs
new file mode 100644
index 0000000..20e7530
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs
@@ -0,0 +1,209 @@
+using CharlesRiverAnalytics.Virtuoso.Scriptable;
+using System;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Gestures
+{
+ ///
+ /// Allows the end user to designate gesture to VRTK button presses. For now, there is only
+ /// a way to simulate pressing a button since a gesture is either done or not, so not all
+ /// of VRTK's button mapping (like trigger hairline) have been defined yet.
+ ///
+ /// Based on VRTK/Scripts/Interactions/VRTK_ControllerEvents
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ /// Last Modified: Dan Duggan (dduggan@cra.com) January 2019
+ ///
+ /// This class only provides calls to the Pressed/Released method calls. The classes are left
+ /// virtual so anyone may override them and expand functionality to the other button states.
+ ///
+ public class GestureControllerEvent : VRTK_ControllerEvents
+ {
+ #region PublicVariables
+ public SDK_BaseGestureLibrary.Hand controllerHandId;
+ public Gesture triggerGesture;
+ public Gesture gripGesture;
+ public Gesture touchpadGesture;
+ public Gesture buttonOneGesture;
+ public Gesture buttonTwoGesture;
+ public Gesture startMenuGesture;
+ #endregion
+
+ #region ProtectedVariables
+ protected struct GestureButtonStates
+ {
+ public GestureButtonStates(bool allValues)
+ {
+ isGestureButtonPressed = allValues;
+ wasPressedLastFrame = allValues;
+ wasPressedThisFrame = allValues;
+ wasReleasedThisFrame = allValues;
+ wasReleasedLastFrame = allValues;
+ }
+
+ public bool isGestureButtonPressed;
+ public bool wasPressedLastFrame;
+ public bool wasPressedThisFrame;
+ public bool wasReleasedThisFrame;
+ public bool wasReleasedLastFrame;
+ }
+
+ protected GestureButtonStates triggerGestureButton;
+ protected GestureButtonStates gripGestureButton;
+ protected GestureButtonStates touchPadGestureButton;
+ protected GestureButtonStates buttonOneGestureButton;
+ protected GestureButtonStates buttonTwoGestureButton;
+ protected GestureButtonStates startMenuGestureButton;
+
+ #endregion
+
+ #region UnityFunctions
+ protected override void Awake()
+ {
+ base.Awake();
+
+ triggerGestureButton = new GestureButtonStates(false);
+ gripGestureButton = new GestureButtonStates(false);
+ touchPadGestureButton = new GestureButtonStates(false);
+ buttonOneGestureButton = new GestureButtonStates(false);
+ buttonTwoGestureButton = new GestureButtonStates(false);
+ startMenuGestureButton = new GestureButtonStates(false);
+ }
+ protected override void Update()
+ {
+ CheckTriggerGesture();
+ CheckGripGesture();
+ CheckTouchpadGesture();
+ CheckButtonOneGesture();
+ CheckButtonTwoGesture();
+ CheckStartMenuGesture();
+ }
+ #endregion
+
+ #region GestureControllerChecks
+ ///
+ /// General call for checking if a gesture button has reached it's press/release state
+ ///
+ /// The parameter that holds the state of the gesture button
+ /// The Gesture that contains the gesture info of what needs to be checked
+ /// What actions to take when the gesture-button reaches the press state
+ /// What actions to take when the gesture-button reaches the release state
+ protected virtual void CheckGestureButton(ref GestureButtonStates givenGestureButton, Gesture givenGesture, Action buttonPressAction, Action buttonReleaseAction)
+ {
+ if (givenGesture == null)
+ return;
+
+ CheckGestureButtonPressed(ref givenGestureButton, givenGesture, buttonPressAction);
+ CheckGestureButtonReleased(ref givenGestureButton, givenGesture, buttonReleaseAction);
+
+ //Save frame information
+ givenGestureButton.wasPressedLastFrame = givenGestureButton.wasPressedThisFrame;
+ givenGestureButton.wasReleasedLastFrame = givenGestureButton.wasReleasedThisFrame;
+ }
+
+ protected virtual void CheckGestureButtonPressed(ref GestureButtonStates givenGestureButton, Gesture givenGesture, Action buttonPressAction)
+ {
+ // Pressed start
+ givenGestureButton.wasPressedThisFrame = givenGesture.IsGestureOccuring(controllerHandId);
+
+ if (givenGestureButton.wasPressedThisFrame && !givenGestureButton.wasPressedLastFrame && !givenGestureButton.isGestureButtonPressed)
+ {
+ givenGestureButton.isGestureButtonPressed = true;
+
+ buttonPressAction();
+ }
+ }
+
+ protected virtual void CheckGestureButtonReleased(ref GestureButtonStates givenGestureButton, Gesture givenGesture, Action buttonReleaseAction)
+ {
+ // Pressed end
+ givenGestureButton.wasReleasedThisFrame = !givenGesture.IsGestureOccuring(controllerHandId);
+
+ if (givenGestureButton.wasReleasedThisFrame && !givenGestureButton.wasReleasedLastFrame && givenGestureButton.isGestureButtonPressed)
+ {
+ givenGestureButton.isGestureButtonPressed = false;
+
+ buttonReleaseAction();
+ }
+ }
+
+ protected virtual void CheckTriggerGesture()
+ {
+ CheckGestureButton(ref triggerGestureButton, triggerGesture,
+ () =>
+ {
+ OnTriggerPressed(SetControllerEvent(ref triggerPressed, true, 1.0f));
+ },
+ () =>
+ {
+ OnTriggerReleased(SetControllerEvent(ref triggerPressed, false, 0f));
+ });
+ }
+
+ protected virtual void CheckGripGesture()
+ {
+ CheckGestureButton(ref gripGestureButton, gripGesture,
+ () =>
+ {
+ OnGripPressed(SetControllerEvent(ref gripPressed, true, 1.0f));
+ },
+ () =>
+ {
+ OnGripReleased(SetControllerEvent(ref gripPressed, false, 0f));
+ });
+ }
+
+ protected virtual void CheckTouchpadGesture()
+ {
+ CheckGestureButton(ref touchPadGestureButton, touchpadGesture,
+ () =>
+ {
+ OnTouchpadPressed(SetControllerEvent(ref touchpadPressed, true, 1f));
+ },
+ () =>
+ {
+ OnTouchpadReleased(SetControllerEvent(ref touchpadPressed, false, 0f));
+ });
+ }
+
+ protected virtual void CheckButtonOneGesture()
+ {
+ CheckGestureButton(ref buttonOneGestureButton, buttonOneGesture,
+ () =>
+ {
+ OnButtonOnePressed(SetControllerEvent(ref buttonOnePressed, true, 1f));
+ },
+ () =>
+ {
+ OnButtonOneReleased(SetControllerEvent(ref buttonOnePressed, false, 0f));
+ });
+ }
+
+ protected virtual void CheckButtonTwoGesture()
+ {
+ CheckGestureButton(ref buttonTwoGestureButton, buttonTwoGesture,
+ () =>
+ {
+ OnButtonTwoPressed(SetControllerEvent(ref buttonTwoPressed, true, 1f));
+ },
+ () =>
+ {
+ OnButtonTwoReleased(SetControllerEvent(ref buttonTwoPressed, false, 0f));
+ });
+ }
+
+ protected virtual void CheckStartMenuGesture()
+ {
+ CheckGestureButton(ref startMenuGestureButton, startMenuGesture,
+ () =>
+ {
+ OnStartMenuPressed(SetControllerEvent(ref startMenuPressed, true, 1f));
+ },
+ () =>
+ {
+ OnStartMenuReleased(SetControllerEvent(ref startMenuPressed, false, 0f));
+ });
+ }
+ #endregion
+ }
+}
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs.meta b/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs.meta
new file mode 100644
index 0000000..0c67cd2
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/GestureControllerEvent.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 08224c2548b75214e81b837a73fae0f9
+timeCreated: 1546447659
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs b/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs
new file mode 100644
index 0000000..ab9aa3e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs
@@ -0,0 +1,183 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using CharlesRiverAnalytics.Virtuoso.Gestures;
+using VRTK;
+
+
+namespace CharlesRiverAnalytics.Virtuoso
+{
+ ///
+ /// Event Payload - provides the object the gesture is attached to
+ /// whenever a gesture event happens
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class GestureEventArgs : EventArgs
+ {
+ public GameObject gestureObject;
+
+ public string gestureName;
+
+ public SDK_BaseGestureLibrary.Hand gestureHand;
+
+ public GestureEventArgs(GameObject gameObject, string name, SDK_BaseGestureLibrary.Hand hand)
+ {
+ gestureObject = gameObject;
+ gestureName = name;
+ gestureHand = hand;
+ }
+ }
+
+ ///
+ /// Event Payload
+ ///
+ /// this object
+ ///
+ public delegate void GestureEventHandler(object sender, GestureEventArgs e);
+
+ public enum GestureEvents
+ {
+ GestureStarted,
+ GestureEnded
+ }
+
+ ///
+ /// Allows the user to make gestures with events going off when the user first makes the gesture
+ /// and when they end it.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class GestureInteraction : VirtuosoEvent
+ {
+ #region PublicVariables
+ public string gestureName;
+ public Gesture gesture;
+ #endregion
+
+ #region PrivateVariables
+ private bool gestureHasStartedLeft = false;
+ private bool gestureHasStartedRight = false;
+ private bool hasGestureLibraryFinishedSetup = false;
+ private const float LIBRARY_TIME_CHECK_SECONDS = 1.0f;
+ #endregion
+
+ #region EventVariables
+ // Emitted when the gesture is first done by either hand
+ public event GestureEventHandler GestureStarted;
+
+ // Emitted when the gesture finishes by either hand
+ public event GestureEventHandler GestureEnded;
+
+ public virtual void OnGestureStarted(GestureEventArgs e)
+ {
+ if (GestureStarted != null)
+ {
+ GestureStarted(this, e);
+ }
+ }
+
+ public virtual void OnGestureEnded(GestureEventArgs e)
+ {
+ if (GestureEnded != null)
+ {
+ GestureEnded(this, e);
+ }
+ }
+ #endregion
+
+ #region HelperMethods
+ ///
+ /// Continually checks for Gesture Library attached to the active Hand SDK. This must happen after
+ /// the first frame or else the InteractGesture script will crash on the first frame as the Gesture
+ /// Library may not be active in the scene yet.
+ ///
+ protected IEnumerator CheckForGestureLibrary()
+ {
+ // Don't let this occur before the first frame as the SDK will not be fully set up
+ yield return new WaitForEndOfFrame();
+
+ GameObject currentHandSDK = VRTK_SDKManager.instance.loadedSetup.actualHand;
+
+ if (currentHandSDK == null)
+ {
+ Debug.LogError("No Hand SDK is currently seen by active SDK. Please make sure that Hand is filled in the SDK Setup.", this);
+
+ enabled = false;
+
+ yield break;
+ }
+
+ while (!hasGestureLibraryFinishedSetup)
+ {
+ if (currentHandSDK.activeInHierarchy)
+ {
+ hasGestureLibraryFinishedSetup = true;
+
+ yield break;
+ }
+
+ yield return new WaitForSecondsRealtime(LIBRARY_TIME_CHECK_SECONDS);
+ }
+ }
+
+ private void WaitForSDKSetup(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+ StartCoroutine(CheckForGestureLibrary());
+ }
+ #endregion
+
+ #region UnityFunctions
+ protected void Awake()
+ {
+ VRTK_SDKManager.SubscribeLoadedSetupChanged(WaitForSDKSetup);
+ }
+
+ protected void OnApplicationQuit()
+ {
+ VRTK_SDKManager.UnsubscribeLoadedSetupChanged(WaitForSDKSetup);
+ }
+
+ protected void LateUpdate()
+ {
+ if (hasGestureLibraryFinishedSetup)
+ {
+ bool isLeftGesturing = gesture.IsGestureOccuring(SDK_BaseGestureLibrary.Hand.Left);
+ bool isRightGesturing = gesture.IsGestureOccuring(SDK_BaseGestureLibrary.Hand.Right);
+
+ // Check if the left hand started a gesture
+ if (isLeftGesturing && !gestureHasStartedLeft)
+ {
+ OnGestureStarted(new GestureEventArgs(gameObject, gestureName, SDK_BaseGestureLibrary.Hand.Left));
+
+ gestureHasStartedLeft = true;
+ }
+ // Check if the left hand stopped doing a gesture
+ else if (!isLeftGesturing && gestureHasStartedLeft)
+ {
+ OnGestureEnded(new GestureEventArgs(gameObject, gestureName, SDK_BaseGestureLibrary.Hand.Left));
+
+ gestureHasStartedLeft = false;
+ }
+
+ // Check if the right hand started a gesture
+ if (isRightGesturing && !gestureHasStartedRight)
+ {
+ OnGestureStarted(new GestureEventArgs(gameObject, gestureName, SDK_BaseGestureLibrary.Hand.Right));
+
+ gestureHasStartedRight = true;
+ }
+ // Check if the right hand stopped a gesture
+ else if (!isRightGesturing && gestureHasStartedRight)
+ {
+ OnGestureEnded(new GestureEventArgs(gameObject, gestureName, SDK_BaseGestureLibrary.Hand.Right));
+
+ gestureHasStartedRight = false;
+ }
+ }
+ }
+ #endregion
+ }
+}
diff --git a/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs.meta b/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs.meta
new file mode 100644
index 0000000..85786aa
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/Gestures/GestureInteraction.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f18ea628d2a12f748b7a6f33b8a6811b
+timeCreated: 1544459946
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK.meta b/Assets/VIRTUOSO/Scripts/HapticSDK.meta
new file mode 100644
index 0000000..2038dfc
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 11b57922b469158438f96431cde94dcf
+folderAsset: yes
+timeCreated: 1551902009
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs
new file mode 100644
index 0000000..8adc613
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs
@@ -0,0 +1,450 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// This monobehavior is attached to the GameObject for the neccessary body and responsible for determining
+ /// where on that body part a hit has taken place in the body coordinate space. This object must also be
+ /// set up to have the correct polar axis to get the expected behavior with haptic patterns.
+ ///
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [RequireComponent(typeof(CapsuleCollider)), ExecuteInEditMode]
+ public class BodyCoordinate : MonoBehaviour
+ {
+ #region PublicVariables
+ [Tooltip("Automatically set if using on a rigged character. Otherwise, set what portion of the body this is suppose to be.")]
+ public HumanBodyBones attachedBody;
+ [Tooltip("The axis (local space) at which 0 degrees starts for calculating hit direction when looking down the height of the collider.")]
+ public Vector3 polarAxis = Vector3.right;
+ [Tooltip("When true, the body coordinate will traverse a pattern in a Counter-Clockwise direction.")]
+ public bool invertAngleDirection = false;
+ [Tooltip("Select this if you would like to see the Polar Axis on the GameObject without having it selected.")]
+ public bool drawGizmoUnselected = false;
+ #endregion
+
+ #region PrivateVariables
+ private CapsuleCollider capCollider;
+ private HapticManager manager;
+ private Vector3 distalColliderPosition;
+ private Vector3 proximalColliderPosition;
+ // If the collider's proximal end is actually the distal (due to the way the transform are set up), then mark this as true
+ private bool isHeightInverted = false;
+#if UNITY_EDITOR
+ private const float ARROW_SIZE_MULTIPLIER = .75f;
+ private const float GIZMO_SPHERE_SIZE = .005f;
+#endif
+ #endregion
+
+ #region PublicAPI
+ public Vector3 ProximalPosition
+ {
+ get
+ {
+ if (isHeightInverted)
+ {
+ return distalColliderPosition;
+ }
+ else
+ {
+ return proximalColliderPosition;
+ }
+ }
+ }
+
+ public Vector3 DistalPosition
+ {
+ get
+ {
+ if (isHeightInverted)
+ {
+ return proximalColliderPosition;
+ }
+ else
+ {
+ return distalColliderPosition;
+ }
+ }
+ }
+
+ ///
+ /// Used to determine the normalized height and hit angle on the collider
+ ///
+ /// The position in world space
+ /// The BodyCoordinateHit that contains the normalized height and angle on the capsule
+ public BodyCoordinateHit CalculateBodyCoordinateHitFromPosition(Vector3 collisionPoint)
+ {
+ Vector3 localHitPosition = transform.InverseTransformPoint(collisionPoint);
+
+ float hitHeight = CalculateNormalizedHitHeightFromLocalPosition(localHitPosition);
+ float hitDegree = CalculateDegreeOfCollisionFromPosition(collisionPoint);
+
+ return new BodyCoordinateHit(hitHeight, hitDegree);
+ }
+
+ ///
+ /// Calculates the world position of a BodyCoordinateHit.
+ ///
+ /// The height and angle of the collider to find the position
+ /// If true, the position should account for the circle ends on the capsule
+ /// The world position based on the collider and provided body hit
+ public Vector3 CalculatePositionFromBodyCoordinateHit(BodyCoordinateHit bodyHit, bool accountForCapsule = false)
+ {
+ float heightPosition = CalculatePositionFromNormalizedHeight(bodyHit.hitHeight);
+ Vector3 radius = CalculatePositionFromAngle(bodyHit, heightPosition, accountForCapsule);
+
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ return new Vector3(heightPosition, radius.y, radius.z);
+ // Y Axis
+ case 1:
+ return new Vector3(radius.x, heightPosition, radius.z);
+ // Z Axis
+ case 2:
+ return new Vector3(radius.x, radius.y, heightPosition);
+ default:
+ return Vector3.zero;
+ }
+ }
+ #endregion
+
+ #region BodyCoordinateMethods
+ private float CalculateNormalizedHeight(float value, float extremeValueOne, float extremeValueTwo)
+ {
+ // Comparisons with values less than 0 can screw things up, so shift everything up by the lowest value
+ float minVal = Mathf.Abs(Mathf.Min(value, extremeValueOne, extremeValueTwo));
+ value += minVal;
+ extremeValueOne += minVal;
+ extremeValueTwo += minVal;
+
+ float normalizedValue;
+
+ if (extremeValueOne < extremeValueTwo)
+ {
+ normalizedValue = Utilities.VirtMath.Normalize(value, extremeValueOne, extremeValueTwo);
+ }
+ else
+ {
+ normalizedValue = Utilities.VirtMath.Normalize(value, extremeValueTwo, extremeValueOne);
+ }
+
+ if (isHeightInverted)
+ {
+ return (1.0f - normalizedValue);
+ }
+ else
+ {
+ return normalizedValue;
+ }
+ }
+
+ private float CalculateNormalizedHitHeightFromLocalPosition(Vector3 localHitPosition)
+ {
+ float hitHeight = 0.0f;
+
+ // Use the direction of the collider to calculate the normalized height in local space
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ hitHeight = CalculateNormalizedHeight(localHitPosition.x, proximalColliderPosition.x, distalColliderPosition.x);
+
+ break;
+ // Y Axis
+ case 1:
+ hitHeight = CalculateNormalizedHeight(localHitPosition.y, proximalColliderPosition.y, distalColliderPosition.y);
+
+ break;
+ // Z Axis
+ case 2:
+ hitHeight = CalculateNormalizedHeight(localHitPosition.z, proximalColliderPosition.z, distalColliderPosition.z);
+
+ break;
+ }
+
+ return Mathf.Clamp01(hitHeight);
+ }
+
+ private float CalculatePositionFromNormalizedHeight(float normalizedHeight)
+ {
+ float colliderStartPoint = 0;
+
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ colliderStartPoint = transform.TransformPoint(ProximalPosition).x;
+ break;
+ // Y Axis
+ case 1:
+ colliderStartPoint = transform.TransformPoint(ProximalPosition).y;
+ break;
+ // Z Axis
+ case 2:
+ colliderStartPoint = transform.TransformPoint(ProximalPosition).z;
+ break;
+ }
+
+ if (isHeightInverted)
+ {
+ colliderStartPoint -= normalizedHeight * capCollider.height;
+ }
+ else
+ {
+ colliderStartPoint += normalizedHeight * capCollider.height;
+ }
+
+ return colliderStartPoint;
+ }
+
+ private Vector3 CalculatePositionFromAngle(BodyCoordinateHit bodyHit, float heightPosition = 0.0f, bool positionOnCapsule = false)
+ {
+ // Short circuit, if the height is at the extremes, then it will be at the poles
+ if (positionOnCapsule)
+ {
+ if (bodyHit.hitHeight == 0.0f)
+ {
+ return transform.TransformPoint(ProximalPosition);
+ }
+ else if (bodyHit.hitHeight == 1.0f)
+ {
+ return transform.TransformPoint(DistalPosition);
+ }
+ }
+
+ // Calculate the directional vector towards the hit point
+ Vector3 rotationDirection = Vector3.zero;
+
+ if (invertAngleDirection)
+ {
+ bodyHit.hitAngle = 360 - bodyHit.hitAngle;
+ }
+
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ rotationDirection = Quaternion.AngleAxis(bodyHit.hitAngle, transform.right) * polarAxis;
+ break;
+ // Y Axis
+ case 1:
+ rotationDirection = Quaternion.AngleAxis(bodyHit.hitAngle, transform.up) * polarAxis;
+ break;
+ // Z Axis
+ case 2:
+ rotationDirection = Quaternion.AngleAxis(bodyHit.hitAngle, transform.forward) * polarAxis;
+ break;
+ }
+
+ // Account for the angle of the collider
+ Vector3 positionByAngle = rotationDirection * capCollider.radius;
+
+ // Since the capsule has two circles at the ends, make sure the position is along the curve on the circle if required
+ if (positionOnCapsule)
+ {
+ // Don't bother doing this if new height is not at one of the circles extremes
+ float radiusNormalizedPerHeight = capCollider.radius / capCollider.height;
+
+ if (bodyHit.hitHeight >= radiusNormalizedPerHeight && bodyHit.hitHeight <= (1 - radiusNormalizedPerHeight))
+ {
+ return transform.TransformPoint(positionByAngle);
+ }
+
+ // Get the transform that is aligned with this point along the axis
+ Vector3 leveledTransform = transform.TransformPoint(capCollider.center);
+
+ switch (capCollider.direction)
+ {
+ case 0: // X Axis
+ leveledTransform = new Vector3(heightPosition, leveledTransform.y, leveledTransform.z);
+ positionByAngle = new Vector3(heightPosition, positionByAngle.y, positionByAngle.z);
+ break;
+ case 1: // Y Axis
+ leveledTransform = new Vector3(leveledTransform.x, heightPosition, leveledTransform.z);
+ positionByAngle = new Vector3(positionByAngle.x, heightPosition, positionByAngle.z);
+ break;
+ case 2: // Z Axis
+ leveledTransform = new Vector3(leveledTransform.x, leveledTransform.y, heightPosition);
+ positionByAngle = new Vector3(positionByAngle.x, positionByAngle.y, heightPosition);
+ break;
+ }
+
+ // Get the direction from the point towards the transform
+ Vector3 directionTowardsCapsule = leveledTransform - positionByAngle;
+
+ RaycastHit[] hitInfo;
+
+ // Shoot a ray to find the edge of the capsule collider in the calculated direction
+ hitInfo = Physics.RaycastAll(positionByAngle, directionTowardsCapsule.normalized, .5f);
+
+ for (int n = 0; n < hitInfo.Length; n++)
+ {
+ if (hitInfo[n].collider.gameObject.name == "Capsule")
+ {
+ // Move the positionByAngle in the direction towards the transform at the proper distance
+ positionByAngle += (directionTowardsCapsule.normalized * hitInfo[n].distance);
+ }
+ }
+ }
+
+ return transform.TransformPoint(positionByAngle);
+ }
+
+ private float CalculateDegreeOfCollisionFromPosition(Vector3 hitPosition)
+ {
+ Vector3 hitDirection = hitPosition - transform.position;
+ float signAngle = 0.0f;
+
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ signAngle = Utilities.VirtMath.AngleSigned(transform.TransformDirection(polarAxis), hitDirection, transform.right);
+
+ break;
+ // Y Axis
+ case 1:
+ signAngle = Utilities.VirtMath.AngleSigned(transform.TransformDirection(polarAxis), hitDirection, transform.up);
+
+ break;
+ // Z Axis
+ case 2:
+ signAngle = Utilities.VirtMath.AngleSigned(transform.TransformDirection(polarAxis), hitDirection, transform.forward);
+
+ break;
+ }
+
+ // Make sure a value between 0 and 360 is returned
+ if (signAngle < 0)
+ {
+ signAngle += 360;
+ }
+
+ if (invertAngleDirection)
+ {
+ signAngle = 360 - signAngle;
+ }
+
+ return signAngle;
+ }
+
+ private void CalculateColliderEndPoints(Vector3 directionOfCollider)
+ {
+ // If the height is less than double the radius, then it acts as a sphere
+ float halfLengthOfCollider = (capCollider.height >= 2 * capCollider.radius) ? capCollider.height / 2f : capCollider.radius;
+
+ proximalColliderPosition = capCollider.center - (directionOfCollider * halfLengthOfCollider);
+ distalColliderPosition = capCollider.center + (directionOfCollider * halfLengthOfCollider);
+
+ // Depending on the transform that the collider is attached to, the proximal end may actually be closer to the transform and
+ // therefore be the distal end, so mark that as inverted so that the normalized height value will be correct
+ float proximalDistanceToTransformOrigin = Vector3.Distance(proximalColliderPosition, Vector3.zero);
+ float distalDistanceToTransformOrigin = Vector3.Distance(distalColliderPosition, Vector3.zero);
+
+ isHeightInverted = (distalDistanceToTransformOrigin < proximalDistanceToTransformOrigin);
+ }
+ #endregion
+
+ #region UnityFunctions
+ void Awake()
+ {
+ capCollider = GetComponent();
+
+ manager = FindObjectOfType();
+
+ // Calculate the local positions of the ends of the collider
+ switch (capCollider.direction)
+ {
+ // X Axis
+ case 0:
+ CalculateColliderEndPoints(transform.InverseTransformDirection(transform.right));
+ break;
+ // Y Axis
+ case 1:
+ CalculateColliderEndPoints(transform.InverseTransformDirection(transform.up));
+ break;
+ // Z Axis
+ case 2:
+ CalculateColliderEndPoints(transform.InverseTransformDirection(transform.forward));
+ break;
+ }
+ }
+
+ private void OnCollisionEnter(Collision collision)
+ {
+ BodyCoordinateHit bodyHit = CalculateBodyCoordinateHitFromPosition(collision.contacts[0].point);
+ HapticPatternCollisionHolder hitPattern = collision.gameObject.GetComponent();
+
+ if (hitPattern != null)
+ {
+ manager.BodyPartHit(attachedBody, bodyHit, hitPattern.GetHapticPattern());
+ }
+ else
+ {
+ manager.BodyPartHit(attachedBody, bodyHit);
+ }
+ }
+
+#if UNITY_EDITOR
+ private void Update()
+ {
+ if(transform.hasChanged)
+ {
+ transform.localScale = Vector3.one;
+ }
+ }
+
+ private void OnDrawGizmos()
+ {
+ if (drawGizmoUnselected)
+ {
+ DrawGizmo();
+ }
+ }
+
+ private void OnDrawGizmosSelected()
+ {
+ DrawGizmo();
+ }
+
+ private void DrawGizmo()
+ {
+ Handles.color = Color.cyan;
+ Handles.ArrowHandleCap(
+ 0,
+ transform.TransformPoint(capCollider.center),
+ transform.rotation * ((polarAxis != Vector3.zero) ? Quaternion.LookRotation(polarAxis) : Quaternion.identity),
+ HandleUtility.GetHandleSize(transform.position) * ARROW_SIZE_MULTIPLIER,
+ EventType.Repaint);
+
+ if (isHeightInverted)
+ {
+ Gizmos.DrawSphere(transform.TransformPoint(capCollider.center), GIZMO_SPHERE_SIZE);
+
+ Gizmos.color = Color.red;
+ Gizmos.DrawSphere(transform.TransformPoint(distalColliderPosition), GIZMO_SPHERE_SIZE);
+
+ Gizmos.color = Color.blue;
+ Gizmos.DrawSphere(transform.TransformPoint(proximalColliderPosition), GIZMO_SPHERE_SIZE);
+ }
+ else
+ {
+ Gizmos.color = Color.red;
+ Gizmos.DrawSphere(transform.TransformPoint(proximalColliderPosition), GIZMO_SPHERE_SIZE);
+
+ Gizmos.color = Color.blue;
+ Gizmos.DrawSphere(transform.TransformPoint(distalColliderPosition), GIZMO_SPHERE_SIZE);
+ }
+ }
+#endif
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs.meta
new file mode 100644
index 0000000..ccc31a8
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinate.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b723a283540a41e48a91402afa4a18a7
+timeCreated: 1551902017
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs
new file mode 100644
index 0000000..c9012e2
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs
@@ -0,0 +1,42 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Structure that holds the normalized height and the angle of a hit.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public struct BodyCoordinateHit
+ {
+ #region PublicVariables
+ [Range(0, 1)]
+ public float hitHeight;
+ [Range(0, 360)]
+ public float hitAngle;
+ #endregion
+
+ #region Constructors
+ public BodyCoordinateHit(float height, float angle)
+ {
+ hitHeight = height;
+ hitAngle = angle;
+ }
+
+ public BodyCoordinateHit(BodyCoordinateHit otherHit)
+ {
+ hitHeight = otherHit.hitHeight;
+ hitAngle = otherHit.hitAngle;
+ }
+ #endregion
+
+ #region DefaultOverrides
+ public override string ToString()
+ {
+ return "(" + hitHeight + ", " + hitAngle + ")";
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs.meta
new file mode 100644
index 0000000..ca79b8a
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateHit.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 7e152d57a0c4b42498f05adc2d92b9b7
+timeCreated: 1553107616
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs
new file mode 100644
index 0000000..1858e57
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// The Body Coordinate Space is a section on a body part that can be triggered by some haptic
+ /// actuator. It uses the same body coordinate space of a normalized height and angle.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [Serializable]
+ public class BodyCoordinateSpace
+ {
+ #region PublicVariables
+ [Range(0, 1), Delayed]
+ public float startHeight = 0;
+ [Range(0, 1), Delayed]
+ public float endHeight = 1;
+ [Range(0, 360), Delayed]
+ public float startAngle = 0;
+ [Range(0, 360), Delayed]
+ public float endAngle = 360;
+ #endregion
+
+ #region PublicAPI
+ public bool HitInsideSpace(BodyCoordinateHit hitLocation)
+ {
+ if (hitLocation.hitHeight >= startHeight &&
+ hitLocation.hitHeight <= endHeight &&
+ hitLocation.hitAngle >= startAngle &&
+ hitLocation.hitAngle <= endAngle)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ #endregion
+
+ #region Unity Functions
+ public void OnValidate()
+ {
+ // StartHeight always needs to be less, so flip these values if that's not the case
+ if (startHeight > endHeight)
+ {
+ float tempHeight = endHeight;
+
+ endHeight = startHeight;
+ startHeight = tempHeight;
+ }
+
+ // Similiarly, StartAngle also needs to be less than the end angle
+ if (startAngle > endAngle)
+ {
+ float tempAngle = endAngle;
+
+ endAngle = startAngle;
+ startAngle = tempAngle;
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs.meta
new file mode 100644
index 0000000..8ff6419
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/BodyCoordinateSpace.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 2c1605f0da651ca4fab41bfe2e72083c
+timeCreated: 1551986059
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices.meta
new file mode 100644
index 0000000..83750a6
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 9f08f403aa2e1c040a05fb2c8018d26f
+folderAsset: yes
+timeCreated: 1551985383
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs
new file mode 100644
index 0000000..7540cce
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs
@@ -0,0 +1,119 @@
+#if VRTK_DEFINE_SDK_BHAPTICS
+using Bhaptics.Tact.Unity;
+using System;
+#endif
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// BHaptics Haptic Device. The BHaptics has several actuators on their devices that can affect
+ /// multiple body parts. This script can target any body part with the position variable. Additionally,
+ /// a mapping needs to be provided that lets a specific physical actuator know which body coordinate space
+ /// they must react to.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+#if VRTK_DEFINE_SDK_BHAPTICS
+ [HapticSystem("Bhaptics", "TACTAL", "BodyCoordinates/Head", Pos.Head, "DeviceMappings/BHapticsFaceMapping")]
+ [HapticSystem("Bhaptics", "TACTOT Front", "BodyCoordinates/ChestFront", Pos.VestFront, "DeviceMappings/BHapticsFrontVestMapping")]
+ [HapticSystem("Bhaptics", "TACTOT Back", "BodyCoordinates/ChestBack", Pos.VestBack, "DeviceMappings/BHapticsBacktVestMapping")]
+ [HapticSystem("Bhaptics", "Left TACTOSY", "BodyCoordinates/LeftForearm", Pos.LeftArm, "DeviceMappings/BHapticsLeftWristMapping")]
+ [HapticSystem("Bhaptics", "Right TACTOSY", "BodyCoordinates/RightForearm", Pos.RightArm, "DeviceMappings/BHapticsRightWristMapping")]
+ [HapticSystem("Bhaptics", "Left TACTOSY Hand", "BodyCoordinates/LeftHand", Pos.LeftHand)]
+ [HapticSystem("Bhaptics", "Right TACTOSY Hand", "BodyCoordinates/RightHand", Pos.RightHand)]
+ [HapticSystem("Bhaptics", "Left TACTOSY Foot", "BodyCoordinates/LeftFoot", Pos.LeftFoot)]
+ [HapticSystem("Bhaptics", "Right TACTOSY Foot", "BodyCoordinates/RightFoot", Pos.RightFoot)]
+#endif
+ public class BHapticsDevice : HapticDevice
+ {
+ #region PublicVariables
+#if VRTK_DEFINE_SDK_BHAPTICS
+ [Tooltip("The position tag for where the device is attached to.")]
+ public Pos devicePosition;
+#endif
+ public ScriptableDeviceMapping bhapticsMapping;
+ #endregion
+
+ #region PrivateVariables
+#if VRTK_DEFINE_SDK_BHAPTICS
+ private TactSource tactSource;
+#endif
+ private const int HAPTIC_ACTUATOR_COUNT = 20;
+ // The DotPoint array that will be filled to play the haptic patterns
+ private byte[] hapticBytes = new byte[HAPTIC_ACTUATOR_COUNT];
+ #endregion
+
+ #region HapticDeviceImplementation
+ protected override void CancelHaptics()
+ {
+#if VRTK_DEFINE_SDK_BHAPTICS
+ tactSource.Stop();
+#endif
+ // Clear the array
+ hapticBytes = new byte[HAPTIC_ACTUATOR_COUNT];
+ }
+
+ protected override void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+ int hitIndex = affectedBodyPart.BodyCoordinateHitIndex(bodyPart, hitLocation);
+
+ // If -1 is returned, then the hitLocation is not in the CoordinateSpace that the device is attached to
+ if (hitIndex == -1)
+ {
+ return;
+ }
+
+ // Assign the intensity value for each of the mapped effector
+ for (int n = 0; n < bhapticsMapping.mapping[hitIndex].indexMapping.Length; n++)
+ {
+ // The intensity needs to be between 0 and 100, so convert the intensity to that range
+ hapticBytes[bhapticsMapping.mapping[hitIndex].indexMapping[n]] = (byte)(intensity * 100);
+ }
+
+ // Assign the intensity values and play
+#if VRTK_DEFINE_SDK_BHAPTICS
+ tactSource.DotPoints = hapticBytes;
+ tactSource.Play();
+#endif
+
+ // Clear the array since it will need different values on the next frame
+ hapticBytes = new byte[HAPTIC_ACTUATOR_COUNT];
+ }
+
+ public override void ApplyDefaultData(HapticSystemAttribute hapticSystemInfo)
+ {
+ base.ApplyDefaultData(hapticSystemInfo);
+
+#if VRTK_DEFINE_SDK_BHAPTICS
+ devicePosition = (Pos) Enum.Parse(typeof(Pos), hapticSystemInfo.AdditionalData[0].ToString());
+#endif
+
+ if (hapticSystemInfo.AdditionalData.Length > 1)
+ {
+ ScriptableDeviceMapping mapping = Resources.Load(hapticSystemInfo.AdditionalData[1] as string);
+
+ if (mapping != null)
+ {
+ bhapticsMapping = mapping;
+ }
+ }
+ }
+ #endregion
+
+ #region Unity Functions
+ protected override void Start()
+ {
+ base.Start();
+
+#if VRTK_DEFINE_SDK_BHAPTICS
+ tactSource = gameObject.AddComponent();
+
+ tactSource.FeedbackType = FeedbackType.DotMode;
+ tactSource.Position = devicePosition;
+ tactSource.TimeMillis = hapticDuration;
+#endif
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs.meta
new file mode 100644
index 0000000..836d6ef
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/BHapticsDevice.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b66cbf23014e0364fb0c144eb87cb5ba
+timeCreated: 1553613258
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs
new file mode 100644
index 0000000..e035ac3
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs
@@ -0,0 +1,426 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// EventArgs for when a haptic pulse is sent out. Allows listeners to know where the haptic pulse is felt
+ /// as well as the intensity of the feedback.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), April 2019
+ ///
+ public class HapticFeedbackEventArgs : EventArgs
+ {
+ public HumanBodyBones bodyPart;
+ public BodyCoordinateHit hitLocation;
+ public float feedbackIntensity;
+
+ public HapticFeedbackEventArgs(HumanBodyBones body, BodyCoordinateHit hit, float intense)
+ {
+ bodyPart = body;
+ hitLocation = hit;
+ feedbackIntensity = intense;
+ }
+ }
+
+ ///
+ /// Generalized class for haptic devices. A specific device must specify how it triggers a haptic pulse
+ /// in a single frame and how to cancle that pulse. The developer must then specify in the editor what
+ /// body parts the device instance will affect in terms of the body coordinate system.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public abstract class HapticDevice : MonoBehaviour
+ {
+ #region PublicVariables
+ public ScriptableBodyCoordinate affectedBodyPart;
+ [Tooltip("The amount of time that a single haptic pulse should take (in ms)")]
+ [Range(20, 10000)]
+ public int hapticDuration = 100;
+ #endregion
+
+ #region ProtectedVariables
+ protected HapticManager manager;
+ [SerializeField]
+ protected HapticSystemAttribute hapticSystemInfo;
+ #endregion
+
+ #region PrivateVariables
+ private ScriptableHapticPattern patternPlaying;
+ private HumanBodyBones bodyPartHit;
+ private float patternTime = 0.0f;
+ #endregion
+
+ #region Events
+ public event EventHandler HapticFeedbackPlayed;
+
+ public virtual void OnHapticFeedbackPlayed(HapticFeedbackEventArgs e)
+ {
+ if (HapticFeedbackPlayed != null)
+ {
+ HapticFeedbackPlayed(this, e);
+ }
+ }
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// A single haptic pulse that is triggered by an object hitting a body part that has been
+ /// set up to recieve haptic events.
+ ///
+ /// The body part of the hit
+ /// The body coordinate system hit
+ /// The intensity to play the haptic vibration
+ public void TriggerDevice(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+ if (affectedBodyPart.HitInsideAffectedArea(bodyPart, hitLocation))
+ {
+ StartHaptics(bodyPart, hitLocation, intensity);
+ }
+ }
+
+ ///
+ /// Plays a pattern that is triggered by an object hitting a body part that has been
+ /// set up to recieve haptic events.
+ ///
+ /// The body part of the hit
+ /// The body coordinate system hit
+ /// The haptic pattern
+ public void TriggerDevice(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, ScriptableHapticPattern hapticPattern)
+ {
+ if(bodyPart == affectedBodyPart.affectableBodyParts)
+ {
+ hapticPattern.hitOffset = hitLocation;
+
+ PlayPattern(bodyPart, hapticPattern);
+ }
+ }
+
+ ///
+ /// Starts playing a pattern on a given bodypart
+ ///
+ /// The body part to play the pattern on
+ /// The haptic pattern to play
+ public void PlayPattern(HumanBodyBones bodyLocation, ScriptableHapticPattern pattern)
+ {
+ patternPlaying = pattern;
+ bodyPartHit = bodyLocation;
+ patternTime = 0.0f;
+
+ if (patternPlaying.playbackTiming == PlaybackTiming.Custom)
+ {
+ StartCoroutine(Play());
+ }
+ }
+
+ ///
+ /// Stops playing a pattern on a specific body part.
+ ///
+ /// The body part that is current playing a pattern
+ public void StopPattern(HumanBodyBones bodyLocation)
+ {
+ if(bodyLocation == affectedBodyPart.affectableBodyParts)
+ {
+ CancelHaptics();
+
+ ResetHapticPattern();
+ }
+ }
+ #endregion
+
+ #region PatternPlayingMethods
+ protected IEnumerator Play()
+ {
+ while (patternPlaying != null)
+ {
+ bool keepPlaying = PlayPatternWithTiming(patternPlaying.customPlaybackTiming);
+
+ // Wait that set amount of time
+ if (keepPlaying)
+ {
+ yield return new WaitForSeconds(patternPlaying.customPlaybackTiming);
+ }
+ }
+ }
+
+ ///
+ /// Plays the current haptic pattern with the given frame time.
+ ///
+ /// The time adjustment based on either DeltaTime, FixedDeltaTime, or custom
+ /// False when the timing of the pattern is over
+ protected bool PlayPatternWithTiming(float frameTime)
+ {
+ // Stop playing the pattern if it is over
+ if (patternTime > patternPlaying.EndTime)
+ {
+ CancelHaptics();
+
+ ResetHapticPattern();
+
+ return false;
+ }
+
+ // Get the current pattern value hit locations and intensity
+ BodyCoordinateHit[] hits = patternPlaying.GetHitLocationsAtCurrentTime(patternTime);
+ float[] intensities = patternPlaying.GetIntenstiyValuesAtCurrentTime(patternTime);
+
+ // Tell the device to play
+ PlayHapticList(bodyPartHit, hits, intensities);
+
+ // Update the timing information
+ patternTime += frameTime;
+
+ return true;
+ }
+
+ protected void ResetHapticPattern()
+ {
+ if(patternPlaying != null)
+ {
+ patternPlaying.hitOffset = new BodyCoordinateHit();
+ }
+
+ patternTime = 0;
+ patternPlaying = null;
+ }
+
+ protected void PlayHapticList(HumanBodyBones bodyPartHit, BodyCoordinateHit[] hitLocations, float[] intensities)
+ {
+ for (int n = 0; n < hitLocations.Length; n++)
+ {
+ // Ignore any pulses that have negative infinity since those are marked to be skipped
+ if(float.IsNegativeInfinity(hitLocations[n].hitAngle) || float.IsNegativeInfinity(hitLocations[n].hitHeight))
+ {
+ continue;
+ }
+
+ StartHaptics(bodyPartHit, hitLocations[n], intensities[n]);
+
+ // Send an event with the haptic info you are playing
+ OnHapticFeedbackPlayed(new HapticFeedbackEventArgs(bodyPartHit, hitLocations[n], intensities[n]));
+ }
+ }
+
+ protected void ResolvePatternConflicts(ref BodyCoordinateHit[] hits, ref float[] intensities)
+ {
+ // Must have a valid pattern assigned
+ if (patternPlaying != null)
+ {
+ int[] indiceArray = new int[hits.Length];
+ Dictionary> indiceCounter = new Dictionary>();
+
+ // Collisions are detected based on hitting the same coordinate space, so grab all the
+ // needed indices from all the hits
+ for (int n = 0; n < hits.Length; n++)
+ {
+ indiceArray[n] = affectedBodyPart.BodyCoordinateHitIndex(bodyPartHit, hits[n]);
+ }
+
+ // Iterate through the indices, saving the duplicates
+ for (int n = 0; n < indiceArray.Length; n++)
+ {
+ if (indiceCounter.ContainsKey(indiceArray[n]))
+ {
+ indiceCounter[indiceArray[n]].Add(n);
+ }
+ else
+ {
+ indiceCounter[indiceArray[n]] = new List
+ {
+ n
+ };
+ }
+ }
+
+ // Iterate throught keyes, lists with more than 1 key in the list are the duplicates
+ foreach (KeyValuePair> item in indiceCounter)
+ {
+ if (item.Value.Count > 1)
+ {
+ float adjustedIntensityValue = 0;
+
+ // Calculate the intensity from multiple collisions
+ switch (patternPlaying.collisionResolution)
+ {
+ // New intensity will be the smallest intensity value
+ case PatternCollisionResolution.Min:
+ float minValue = float.MaxValue;
+
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ if (intensities[item.Value[n]] < minValue)
+ {
+ minValue = intensities[item.Value[n]];
+ }
+ }
+
+ adjustedIntensityValue = minValue;
+
+ break;
+ // New intensity will be the greatest intensity value
+ case PatternCollisionResolution.Max:
+ float maxValue = float.MinValue;
+
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ if (intensities[item.Value[n]] > maxValue)
+ {
+ maxValue = intensities[item.Value[n]];
+ }
+ }
+
+ adjustedIntensityValue = maxValue;
+
+ break;
+ // New intensity will be the average of all the intensity value
+ case PatternCollisionResolution.Average:
+ float average = 0;
+
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ average += intensities[item.Value[n]];
+ }
+
+ adjustedIntensityValue = average / item.Value.Count;
+
+ break;
+ // New intensity will be calculated by adding all the intensity values
+ case PatternCollisionResolution.Add:
+ float sum = 0;
+
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ sum += intensities[item.Value[n]];
+ }
+
+ adjustedIntensityValue = sum;
+ break;
+ // New intensity will be calculated by multiplying all the intensity values
+ case PatternCollisionResolution.Multiply:
+ float product = 0;
+
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ product *= intensities[item.Value[n]];
+ }
+
+ adjustedIntensityValue = product;
+ break;
+ // New intensity will be determined by a specific curve, otherwise it will default to the first curve in the list
+ case PatternCollisionResolution.CurvePriority:
+ if (item.Value.Contains(patternPlaying.curvePriorityIndex))
+ {
+ adjustedIntensityValue = intensities[patternPlaying.curvePriorityIndex];
+ }
+ else
+ {
+ adjustedIntensityValue = intensities[0];
+ }
+
+ break;
+ }
+
+ adjustedIntensityValue = Mathf.Clamp01(adjustedIntensityValue);
+
+ // Apply the calculated intensity back to the array
+ for (int n = 0; n < item.Value.Count; n++)
+ {
+ intensities[item.Value[n]] = adjustedIntensityValue;
+ }
+ }
+ }
+ }
+ }
+
+ public virtual void ApplyDefaultData(HapticSystemAttribute hapticSystemAtt)
+ {
+ // Check to see if the first data point is a BodyCoordinateSystem
+ ScriptableBodyCoordinate bodyCoordinate = Resources.Load(hapticSystemAtt.AffectedBodyFileLocation);
+
+ if (bodyCoordinate != null)
+ {
+ affectedBodyPart = bodyCoordinate;
+ }
+
+ hapticSystemInfo = hapticSystemAtt;
+ }
+ #endregion
+
+ #region AbstractMethods
+ ///
+ /// How the device plays a single haptic pulse
+ ///
+ /// The hit location in the BodyCoordinate space
+ /// The normalized (0-1) intensity value
+ protected abstract void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity);
+
+ ///
+ /// How the device stops haptics
+ ///
+ protected abstract void CancelHaptics();
+ #endregion
+
+ #region UnityFunctions
+ protected virtual void Start()
+ {
+ manager = FindObjectOfType();
+
+ if (manager == null)
+ {
+ Debug.LogWarning("No HapticManager found in scene. Please add a Haptic Manager to the scene.");
+
+ enabled = false;
+ }
+ else
+ {
+ manager.AddDevicePerBodyLocation(this, affectedBodyPart);
+ }
+
+ // Since some types aren't serializable, use this method to rebuild them from serialized data
+ hapticSystemInfo.ResetAfterSerialization();
+
+ if (hapticSystemInfo.ConnectedSDKType != null)
+ {
+ VRTK_SDKManager.instance.LoadedSetupChanged += Instance_LoadedSetupChanged;
+ }
+ }
+
+ protected void OnEnable()
+ {
+ ResetHapticPattern();
+ }
+
+ protected void Update()
+ {
+ if (patternPlaying != null && patternPlaying.playbackTiming == PlaybackTiming.Update)
+ {
+ PlayPatternWithTiming(Time.deltaTime);
+ }
+ }
+
+ protected void FixedUpdate()
+ {
+ if (patternPlaying != null && patternPlaying.playbackTiming == PlaybackTiming.FixedUpdate)
+ {
+ PlayPatternWithTiming(Time.fixedDeltaTime);
+ }
+ }
+
+ protected void OnApplicationQuit()
+ {
+ if (hapticSystemInfo.ConnectedSDKType != null)
+ {
+ VRTK_SDKManager.instance.LoadedSetupChanged -= Instance_LoadedSetupChanged;
+ }
+ }
+ #endregion
+
+ protected virtual void Instance_LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+ // No-op
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs.meta
new file mode 100644
index 0000000..9b17d92
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/HapticDevice.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b5ebc3e60221e6b4f9446685dd4e23da
+timeCreated: 1551903306
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs
new file mode 100644
index 0000000..ff3f29d
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs
@@ -0,0 +1,71 @@
+using UnityEngine;
+using VRTK;
+#if VRTK_DEFINE_SDK_MANUS_VR
+using Assets.ManusVR.Scripts;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Haptic device for the Manus VR Gloves. The Manus VR gloves have one actuator on each hand, so this
+ /// script must be used with each hand as well.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+#if VRTK_DEFINE_SDK_MANUS_VR
+ [HapticSystem("ManusVR", "Left Glove", "BodyCoordinates/LeftHand", typeof(SDK_ManusVRHand), false)]
+ [HapticSystem("ManusVR", "Right Glove", "BodyCoordinates/RightHand", typeof(SDK_ManusVRHand), true)]
+#endif
+ public class ManusVRDevice : HapticDevice
+ {
+ #region PublicVariables
+ [Tooltip("The side the glove is on.")]
+ public bool isRightGlove;
+ #endregion
+
+ #region PrivateVariables
+#if VRTK_DEFINE_SDK_MANUS_VR
+ private HandData handData;
+#endif
+ #endregion
+
+ #region HapticDeviceImplementation
+ protected override void CancelHaptics()
+ {
+#if VRTK_DEFINE_SDK_MANUS_VR
+ Manus.ManusSetVibration(handData.Session,
+ isRightGlove ? device_type_t.GLOVE_RIGHT : device_type_t.GLOVE_LEFT,
+ 0,
+ (ushort)hapticDuration);
+#endif
+ }
+
+ protected override void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+#if VRTK_DEFINE_SDK_MANUS_VR
+ Manus.ManusSetVibration(handData.Session,
+ isRightGlove ? device_type_t.GLOVE_RIGHT : device_type_t.GLOVE_LEFT,
+ intensity,
+ (ushort)hapticDuration);
+#endif
+ }
+
+ public override void ApplyDefaultData(HapticSystemAttribute hapticSystemInfo)
+ {
+ base.ApplyDefaultData(hapticSystemInfo);
+
+ isRightGlove = (bool)hapticSystemInfo.AdditionalData[0];
+ }
+
+ protected override void Instance_LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+ if (e.currentSetup.handSDKInfo.type == hapticSystemInfo.ConnectedSDKType)
+ {
+#if VRTK_DEFINE_SDK_MANUS_VR
+ handData = e.currentSetup.handSDK.GetHandController().GetComponent();
+#endif
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs.meta
new file mode 100644
index 0000000..5544568
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ManusVRDevice.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: fc4743e317274a24a959faef230c14a5
+timeCreated: 1553632923
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs
new file mode 100644
index 0000000..08b214b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs
@@ -0,0 +1,84 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Haptic device for the Oculus controllers. Each has a single actuator.
+ /// To use this script, attach it to each controller.
+ ///
+ /// Author: Dan Duggan (dduggan@cra.com) May 2019
+ ///
+#if VRTK_DEFINE_SDK_OCULUS
+ [HapticSystem("Oculus", "Left Controller", "BodyCoordinates/LeftHand", typeof(SDK_OculusController), false)]
+ [HapticSystem("Oculus", "Right Controller", "BodyCoordinates/RightHand", typeof(SDK_OculusController), true)]
+#endif
+ public class OculusDevice : HapticDevice
+ {
+ #region Public Variables
+ public bool isLeftController;
+ #endregion
+
+ #region Control Variables
+#if VRTK_DEFINE_SDK_OCULUS
+ // used to convert incoming pattern into something OVR can understand
+ protected OVRHapticsClip hapticsClipLeft;
+ // used to convert incoming pattern into something OVR can understand
+ protected OVRHapticsClip hapticsClipRight;
+#endif
+ #endregion
+
+ protected override void CancelHaptics()
+ {
+#if VRTK_DEFINE_SDK_OCULUS
+ if (isLeftController)
+ {
+ OVRHaptics.LeftChannel.Clear();
+ }
+ else
+ {
+ OVRHaptics.RightChannel.Clear();
+ }
+#endif
+ }
+
+ protected override void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+#if VRTK_DEFINE_SDK_OCULUS
+ if (isLeftController)
+ {
+ hapticsClipLeft.Reset();
+ hapticsClipLeft.WriteSample((byte)(intensity * byte.MaxValue));
+ OVRHaptics.LeftChannel.Preempt(hapticsClipLeft);
+ }
+ else
+ {
+ hapticsClipRight.Reset();
+ hapticsClipRight.WriteSample((byte)(intensity * byte.MaxValue));
+ OVRHaptics.RightChannel.Preempt(hapticsClipRight);
+ }
+#endif
+ }
+
+ public override void ApplyDefaultData(HapticSystemAttribute hapticSystemInfo)
+ {
+ base.ApplyDefaultData(hapticSystemInfo);
+
+ isLeftController = ! (bool) hapticSystemInfo.AdditionalData[0];
+ }
+
+ protected override void Instance_LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+#if VRTK_DEFINE_SDK_OCULUS
+ if (e.currentSetup.controllerSDKInfo.type == hapticSystemInfo.ConnectedSDKType)
+ {
+ OVRHaptics.Config.Load();
+ hapticsClipLeft = new OVRHapticsClip();
+ hapticsClipRight = new OVRHapticsClip();
+ }
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs.meta
new file mode 100644
index 0000000..a70ed72
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/OculusDevice.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1a5bfb33c069db8459f6fb5b81aa4f08
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs
new file mode 100644
index 0000000..6dba9e7
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs
@@ -0,0 +1,32 @@
+using System;
+
+namespace VRTK
+{
+ ///
+ /// Handles all of the scripting define symbols for the BHaptics SDK
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public static class SDK_BhapticsDefines
+ {
+ ///
+ /// The scripting define symbol for the Leap Motion SDK.
+ ///
+ public const string ScriptingDefineSymbol = SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "SDK_BHAPTICS";
+
+ [SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, "Standalone")]
+ private static bool IsBHapticsInstalled()
+ {
+ Type pluginClass = VRTK_SharedMethods.GetTypeUnknownAssembly("Bhaptics.Tact.Unity.BhapticsManager");
+
+ if (pluginClass == null)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs.meta
new file mode 100644
index 0000000..312e230
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SDK_BHapticsDefines.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 66a9ad0a6d999fe4587ce730ec9c8fc0
+timeCreated: 1557173733
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs
new file mode 100644
index 0000000..6d9a15b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs
@@ -0,0 +1,153 @@
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Haptic device for the Sense Gloves. It handles the actuators for a single hand so each
+ /// hand will need one of these scripts and a body coordinate system for each finger.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+#if VRTK_DEFINE_SDK_SENSE_GLOVE
+ [HapticSystem("SenseGlove", "Left Glove", "BodyCoordinates/Finger_LeftThumb", typeof(SDK_SenseGloveHand),
+ "BodyCoordinates/Finger_LeftIndex",
+ "BodyCoordinates/Finger_LeftMiddle",
+ "BodyCoordinates/Finger_LeftRing",
+ "BodyCoordinates/Finger_LeftPinky",
+ false)]
+ [HapticSystem("SenseGlove", "Right Glove", "BodyCoordinates/Finger_RightThumb", typeof(SDK_SenseGloveHand),
+ "BodyCoordinates/Finger_RightIndex",
+ "BodyCoordinates/Finger_RightMiddle",
+ "BodyCoordinates/Finger_RightRing",
+ "BodyCoordinates/Finger_RightPinky",
+ true)]
+#endif
+ public class SenseGloveDevice : HapticDevice
+ {
+ #region PublicFingerCoordinates
+ public ScriptableBodyCoordinate indexFingerCoordinates;
+ public ScriptableBodyCoordinate middleFingerCoordinates;
+ public ScriptableBodyCoordinate ringFingerCoordinates;
+ public ScriptableBodyCoordinate pinkyFingerCoordinates;
+ #endregion
+
+ #region PrivateVariables
+ [SerializeField]
+ private bool isRightHand;
+ // Describes each finger from thumb to pinky
+ private bool[] fingers = new bool[5];
+ private int[] intensities = new int[5];
+ private int[] duration = new int[5];
+#if VRTK_DEFINE_SDK_SENSE_GLOVE
+ private SenseGlove_Object glove;
+#endif
+ #endregion
+
+ #region HapticDeviceImplementation
+ protected override void CancelHaptics()
+ {
+#if VRTK_DEFINE_SDK_SENSE_GLOVE
+ glove.StopBuzzMotors();
+
+ fingers = new bool[5];
+ intensities = new int[5];
+ duration = new int[5];
+#endif
+ }
+
+ protected override void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+#if VRTK_DEFINE_SDK_SENSE_GLOVE
+ int fingerIndex = FindHitFingerIndex(bodyPart);
+
+ if (fingerIndex != -1)
+ {
+ fingers[fingerIndex] = true;
+ intensities[fingerIndex] = (int)(intensity * 100);
+ duration[fingerIndex] = hapticDuration;
+ }
+
+ glove.SendBuzzCmd(fingers, intensities, duration);
+#endif
+ }
+
+ public override void ApplyDefaultData(HapticSystemAttribute hapticSystemInfo)
+ {
+ base.ApplyDefaultData(hapticSystemInfo);
+
+ indexFingerCoordinates = Resources.Load(hapticSystemInfo.AdditionalData[0] as string);
+ middleFingerCoordinates = Resources.Load(hapticSystemInfo.AdditionalData[1] as string);
+ ringFingerCoordinates = Resources.Load(hapticSystemInfo.AdditionalData[2] as string);
+ pinkyFingerCoordinates = Resources.Load(hapticSystemInfo.AdditionalData[3] as string);
+
+ isRightHand = (bool)hapticSystemInfo.AdditionalData[4];
+ }
+
+ protected override void Instance_LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+ if (e.currentSetup.handSDKInfo.type == hapticSystemInfo.ConnectedSDKType)
+ {
+#if VRTK_DEFINE_SDK_SENSE_GLOVE
+ if (isRightHand)
+ {
+ glove = e.currentSetup.handSDK.GetRightHand().GetComponent();
+ }
+ else
+ {
+ glove = e.currentSetup.handSDK.GetLeftHand().GetComponent();
+ }
+#endif
+ }
+ }
+ #endregion
+
+ #region SenseGloveMethods
+ ///
+ /// Provides the index of the finger that was hit based on the assigned coordinate system
+ ///
+ /// The body part that was hit
+ /// The index that represents the finger that was hit (0 - thumb to 4 - Pinky)
+ private int FindHitFingerIndex(HumanBodyBones bodyPart)
+ {
+ if (affectedBodyPart?.affectableBodyParts == bodyPart)
+ {
+ return 0;
+ }
+ else if (indexFingerCoordinates?.affectableBodyParts == bodyPart)
+ {
+ return 1;
+ }
+ else if (middleFingerCoordinates?.affectableBodyParts == bodyPart)
+ {
+ return 2;
+ }
+ else if (ringFingerCoordinates?.affectableBodyParts == bodyPart)
+ {
+ return 3;
+ }
+ else if (pinkyFingerCoordinates?.affectableBodyParts == bodyPart)
+ {
+ return 4;
+ }
+
+ return -1;
+ }
+ #endregion
+
+ #region Unity Functions
+ protected override void Start()
+ {
+ base.Start();
+
+ if (manager != null)
+ {
+ manager.AddDevicePerBodyLocation(this, indexFingerCoordinates);
+ manager.AddDevicePerBodyLocation(this, middleFingerCoordinates);
+ manager.AddDevicePerBodyLocation(this, ringFingerCoordinates);
+ manager.AddDevicePerBodyLocation(this, pinkyFingerCoordinates);
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs.meta
new file mode 100644
index 0000000..4c435d8
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/SenseGloveDevice.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 7fa16c992ca715c40a5a9637c48ac7f8
+timeCreated: 1553696506
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs
new file mode 100644
index 0000000..1e24666
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs
@@ -0,0 +1,95 @@
+using UnityEngine;
+using VRTK;
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+#if VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+using Valve.VR;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Haptic device for the Vive controllers. A controller has a single actuator so it only has to
+ /// activate the vibration motor on that controller. Use this script on each controller.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+#if VRTK_DEFINE_STEAMVR_PLUGIN_1_2_1_OR_NEWER || VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ [HapticSystem("Vive", "Left Controller", "BodyCoordinates/LeftHand", typeof(SDK_SteamVRController), false)]
+ [HapticSystem("Vive", "Right Controller", "BodyCoordinates/RightHand", typeof(SDK_SteamVRController), true)]
+#endif
+ public class ViveDevice : HapticDevice
+ {
+ #region PublicVariables
+#if VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ public SteamVR_Action_Vibration vibration;
+#endif
+ [Range(0, 320)]
+ ///How often the haptic motor should bounce (0 - 320 in hz)
+ public float frequency = 100.0f;
+ #endregion
+
+ #region PrivateVariables
+ [SerializeField]
+ private bool isRightController;
+#if VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ private SteamVR_Behaviour_Pose trackedObject;
+#elif VRTK_DEFINE_STEAMVR_PLUGIN_1_2_1_OR_NEWER && VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ // The max timing of a haptic pulse in microseconds for the controller, this also determines the max intensity
+ private const float VIVE_VIBRATION_VALUE = 3999;
+ private SteamVR_TrackedObject trackedObject;
+#endif
+ #endregion
+
+ #region HapticDeviceOverride
+ protected override void StartHaptics(HumanBodyBones bodyPart, BodyCoordinateHit hitLocation, float intensity)
+ {
+#if VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ vibration.Execute(0.0f, hapticDuration / Constants.MS_TO_SECONDS, frequency, intensity, trackedObject.inputSource);
+#elif VRTK_DEFINE_STEAMVR_PLUGIN_1_2_1_OR_NEWER
+ SteamVR_Controller.Input((int)trackedObject.index).TriggerHapticPulse((ushort)(intensity * VIVE_VIBRATION_VALUE));
+#endif
+ }
+
+ protected override void CancelHaptics()
+ {
+ // No-op
+ }
+
+ public override void ApplyDefaultData(HapticSystemAttribute hapticSystemInfo)
+ {
+ base.ApplyDefaultData(hapticSystemInfo);
+
+ isRightController = (bool)hapticSystemInfo.AdditionalData[0];
+ }
+
+ protected override void Instance_LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
+ {
+ if (e.currentSetup.controllerSDKInfo.type == hapticSystemInfo.ConnectedSDKType)
+ {
+ GameObject controllerGameObject;
+
+ if (isRightController)
+ {
+ controllerGameObject = e.currentSetup.controllerSDK.GetControllerRightHand(true);
+ }
+ else
+ {
+ controllerGameObject = e.currentSetup.controllerSDK.GetControllerLeftHand(true);
+ }
+
+
+ if (controllerGameObject != null)
+ {
+#if VRTK_DEFINE_STEAMVR_PLUGIN_2_0_0_OR_NEWER
+ trackedObject = controllerGameObject.GetComponent();
+ vibration = SteamVR_Actions.naturalistic_Haptic;
+#elif VRTK_DEFINE_STEAMVR_PLUGIN_1_2_1_OR_NEWER
+ trackedObject = controllerGameObject.GetComponent();
+#endif
+ }
+
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs.meta
new file mode 100644
index 0000000..40c1e88
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/Haptic Devices/ViveDevice.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 5c0be7d8c5eaf734ba7c5cc56c7cc00d
+timeCreated: 1551904591
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs
new file mode 100644
index 0000000..087da9e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs
@@ -0,0 +1,55 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// Holds all the enums that are used throughout the Haptic SDK.
+///
+/// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+///
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ public enum OffsetUse
+ {
+ // Don't use the offset to play the pattern
+ Ignore,
+ // The first point in the pattern will start at the offset
+ SetAtFirstPoint
+ }
+
+ public enum PatternOvershootResolution
+ {
+ // Any value outside the range will be ignored
+ Discard,
+ // Any value outside the range will be set to the max/min value
+ Clamp,
+ // Any value outside the range will be set to the opposite
+ Wrap
+ }
+
+ public enum PatternCollisionResolution
+ {
+ // Use the minium value from all curves
+ Min,
+ // Use the maximum value from all curves
+ Max,
+ // Take the average value from all curves
+ Average,
+ // Add all the values from all curves
+ Add,
+ // Multiple the values from all curves
+ Multiply,
+ // One specified curve value will always be used
+ CurvePriority
+ }
+
+ public enum PlaybackTiming
+ {
+ // Use the Update loop to play the pattern
+ Update,
+ // Use the FixedUpdate loop to play the pattern
+ FixedUpdate,
+ // Use a custom timing scheme to play the pattern
+ Custom
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs.meta
new file mode 100644
index 0000000..f6e9588
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticEnums.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: fde99571fbf427248b799ff74d66b5a9
+timeCreated: 1556222849
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs
new file mode 100644
index 0000000..fc69b2a
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs
@@ -0,0 +1,211 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Manages all the haptic devices that have an affect on the Body Coordinates in the scene.
+ ///
+ /// If attached to a class with an Animator, it will also automatically set up the body parts on any
+ /// transforms that have a BodyCoordinate attached to them.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class HapticManager : MonoBehaviour
+ {
+ #region PrivateVariables
+ private Animator animator;
+ private Dictionary> bodyAffectedByDevice;
+ // Body parts in this set will not receive haptics
+ private HashSet ignoreBoneSet;
+ // Devices in this set will get haptic patterns
+ private HashSet ignoreHapticDevices;
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// Checks to see if the given body part that was hit has a device that should be triggered. If it does,
+ /// it tells that device to play their haptic for that hit location.
+ ///
+ /// The body part that was hit
+ /// The height/angle of the hit on the body part
+ public void BodyPartHit(HumanBodyBones bodyLocation, BodyCoordinateHit hitLocation, ScriptableHapticPattern hapticPattern = null)
+ {
+ // Check to make sure this body part isn't ignored
+ if (ignoreBoneSet.Contains(bodyLocation))
+ {
+ return;
+ }
+
+ if (bodyAffectedByDevice.ContainsKey(bodyLocation))
+ {
+ // Tell every device that has this body part to trigger the haptics at the given location
+ for (int n = 0; n < bodyAffectedByDevice[bodyLocation].Count; n++)
+ {
+ // Check to make sure this haptic device isn't ignored
+ if(ignoreHapticDevices.Contains(bodyAffectedByDevice[bodyLocation][n]))
+ {
+ return;
+ }
+
+ if (hapticPattern == null)
+ {
+ bodyAffectedByDevice[bodyLocation][n].TriggerDevice(bodyLocation, hitLocation, 0.5f);
+ }
+ else
+ {
+ bodyAffectedByDevice[bodyLocation][n].TriggerDevice(bodyLocation, hitLocation, hapticPattern);
+ }
+ }
+ }
+ }
+
+ ///
+ /// Allows the manager to know that a device is able to target a specific body part
+ ///
+ /// The haptic device that is able to target a body coordinate
+ /// The body coordinate system that it can handle
+ public void AddDevicePerBodyLocation(HapticDevice device, ScriptableBodyCoordinate hitLocation)
+ {
+ if (bodyAffectedByDevice.ContainsKey(hitLocation.affectableBodyParts))
+ {
+ bodyAffectedByDevice[hitLocation.affectableBodyParts].Add(device);
+ }
+ else
+ {
+ bodyAffectedByDevice[hitLocation.affectableBodyParts] = new List
+ {
+ device
+ };
+ }
+ }
+
+ ///
+ /// Plays a specified haptic pattern on a specific body part. Use this method if one
+ /// simply needs to give a notification to a body part through scripting.
+ ///
+ /// The body part to notify
+ /// The haptic pattern to play
+ public void PlayPattern(HumanBodyBones bodyLocation, ScriptableHapticPattern pattern)
+ {
+ // Check to make sure this body part isn't ignored
+ if (ignoreBoneSet.Contains(bodyLocation))
+ {
+ return;
+ }
+
+ if (bodyAffectedByDevice.ContainsKey(bodyLocation))
+ {
+ // Tell every device that has this body part to play the pattern
+ for (int n = 0; n < bodyAffectedByDevice[bodyLocation].Count; n++)
+ {
+ // Check to make sure this haptic device isn't ignored
+ if (ignoreHapticDevices.Contains(bodyAffectedByDevice[bodyLocation][n]))
+ {
+ return;
+ }
+
+ bodyAffectedByDevice[bodyLocation][n].PlayPattern(bodyLocation, pattern);
+ }
+ }
+ }
+
+ ///
+ /// Stops any patterns that are playing on the given body part.
+ ///
+ public void CancelPatternPlayingOnBody(HumanBodyBones bodyLocation)
+ {
+ if (bodyAffectedByDevice.ContainsKey(bodyLocation))
+ {
+ // Tell every device that has this body part to stop
+ for (int n = 0; n < bodyAffectedByDevice[bodyLocation].Count; n++)
+ {
+ bodyAffectedByDevice[bodyLocation][n].StopPattern(bodyLocation);
+ }
+ }
+ }
+
+ ///
+ /// Used to retrieve every unique haptic device that the manager
+ ///
+ /// A HashSet of every haptic device that the manager is aware of.
+ public HashSet GetSetOfActiveDevices()
+ {
+ HashSet deviceSet = new HashSet();
+
+ // Go through every entry in the body to device dictionary and add them to the hashset
+ foreach (List deviceList in bodyAffectedByDevice.Values)
+ {
+ foreach (HapticDevice device in deviceList)
+ {
+ deviceSet.Add(device);
+ }
+ }
+
+ return deviceSet;
+ }
+
+ public void IgnoreHapticsOnBodyPart(HumanBodyBones bodyPartToIgnore)
+ {
+ ignoreBoneSet.Add(bodyPartToIgnore);
+
+ CancelPatternPlayingOnBody(bodyPartToIgnore);
+ }
+
+ public void ReconsiderHapticsOnBodyPart(HumanBodyBones bodyPartToReconsider)
+ {
+ if (ignoreBoneSet.Contains(bodyPartToReconsider))
+ {
+ ignoreBoneSet.Remove(bodyPartToReconsider);
+ }
+ }
+
+ public void IgnoreHapticsByDevice(HapticDevice deviceToIgnore)
+ {
+ ignoreHapticDevices.Add(deviceToIgnore);
+ }
+
+ public void ReconsiderHapticsByDevice(HapticDevice deviceToReconsider)
+ {
+ if (ignoreHapticDevices.Contains(deviceToReconsider))
+ {
+ ignoreHapticDevices.Remove(deviceToReconsider);
+ }
+ }
+ #endregion
+
+ #region Unity Functions
+ void Awake()
+ {
+ bodyAffectedByDevice = new Dictionary>();
+ ignoreBoneSet = new HashSet();
+ ignoreHapticDevices = new HashSet();
+
+ animator = GetComponent();
+
+ if (animator != null)
+ {
+ foreach (HumanBodyBones bone in Enum.GetValues(typeof(HumanBodyBones)))
+ {
+ Transform boneTransform = animator.GetBoneTransform(bone);
+
+ if (boneTransform != null)
+ {
+ BodyCoordinate attachedCoordinate = boneTransform.gameObject.GetComponent();
+
+ if (attachedCoordinate != null)
+ {
+ attachedCoordinate.attachedBody = bone;
+ }
+ }
+ }
+ }
+ else
+ {
+ Debug.LogWarning("No Animator found on HapticManager. Bones cannot be automatically set, please make sure it was manually done.", this);
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs.meta
new file mode 100644
index 0000000..b27fb7e
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticManager.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: a75400c659f89a34caa71e27eafcf332
+timeCreated: 1551902273
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: -500
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs
new file mode 100644
index 0000000..a157f62
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs
@@ -0,0 +1,27 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Component that holds a haptic pattern. When the GameObject that this component is attached
+ /// to hits a body coordinate, it will pull the attached pattern and play that pattern on that
+ /// body part.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class HapticPatternCollisionHolder : MonoBehaviour
+ {
+ #region PublicVariables
+ public ScriptableHapticPattern patternToSend;
+ #endregion
+
+ #region PublicAPI
+ public ScriptableHapticPattern GetHapticPattern()
+ {
+ return patternToSend;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs.meta
new file mode 100644
index 0000000..6497d87
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticPatternCollisionHolder.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 11dd23e0d1b103642b773b8b2eaf26b6
+timeCreated: 1556206181
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs
new file mode 100644
index 0000000..2508ed7
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs
@@ -0,0 +1,116 @@
+using System;
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Attribute to be used by a haptic device to define the system info for the editor. The attributes
+ /// that are placed on the device are used in the editor to easily enable/disable the devices
+ /// that the developer is trying to target. Additionaly, they can be used to set the default
+ /// values for the device as well.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [Serializable, AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
+ public class HapticSystemAttribute : Attribute
+ {
+ #region PrivateVariables
+ [SerializeField]
+ private string systemName;
+ [SerializeField]
+ private string deviceName;
+ [SerializeField]
+ private string affectedBodyFileLocation;
+ [SerializeField]
+ private Type connectedSDKType;
+ [SerializeField]
+ private string connectedSDKTypeName;
+ [SerializeField]
+ private object[] additionalData;
+ #endregion
+
+ public HapticSystemAttribute(string sysName, string devName, params object[] addData)
+ {
+ systemName = sysName;
+ deviceName = devName;
+
+ additionalData = addData;
+ }
+
+ public HapticSystemAttribute(string sysName, string devName, string bodyFileLocation, params object[] addData)
+ {
+ systemName = sysName;
+ deviceName = devName;
+ affectedBodyFileLocation = bodyFileLocation;
+
+ additionalData = addData;
+ }
+
+ public HapticSystemAttribute(string sysName, string devName, string bodyFileLocation, Type sdkSetupType, params object[] addData)
+ {
+ systemName = sysName;
+ deviceName = devName;
+ affectedBodyFileLocation = bodyFileLocation;
+ connectedSDKType = sdkSetupType;
+ connectedSDKTypeName = connectedSDKType.AssemblyQualifiedName;
+ additionalData = addData;
+ }
+
+ public string SystemName
+ {
+ get
+ {
+ return systemName;
+ }
+ }
+
+ public string DeviceName
+ {
+ get
+ {
+ return deviceName;
+ }
+ }
+
+ public string AffectedBodyFileLocation
+ {
+ get
+ {
+ return affectedBodyFileLocation;
+ }
+ }
+
+ public Type ConnectedSDKType
+ {
+ get
+ {
+ return connectedSDKType;
+ }
+ }
+
+ public string ConnectedSDKTypeName
+ {
+ get
+ {
+ return connectedSDKTypeName;
+ }
+ }
+
+ public object[] AdditionalData
+ {
+ get
+ {
+ return additionalData;
+ }
+ }
+
+ public virtual void ResetAfterSerialization()
+ {
+ if(!string.IsNullOrEmpty(ConnectedSDKTypeName))
+ {
+ connectedSDKType = Type.GetType(ConnectedSDKTypeName);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs.meta
new file mode 100644
index 0000000..7a85b19
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/HapticSystemAttribute.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 55b74a171a3462b429dbb4e3507ce3c3
+timeCreated: 1556818419
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects.meta
new file mode 100644
index 0000000..1c73517
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 47dc23d4f164c5949a39cafd0608eafc
+folderAsset: yes
+timeCreated: 1553705601
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs
new file mode 100644
index 0000000..c72970d
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs
@@ -0,0 +1,80 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Defines the division of a body part for the purpose of allowing a haptic device that
+ /// has multiple actuators define what area of the body part it can affect. It can also
+ /// be used by an object with a single actuator to define the area that can effect it by
+ /// limiting the available area.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [CreateAssetMenu(fileName = "New Body Coordinate System", menuName = "VIRTUOSO/Haptics/Create Body Coordinate System")]
+ public class ScriptableBodyCoordinate : ScriptableObject
+ {
+ #region PublicVariables
+ public HumanBodyBones affectableBodyParts;
+ public List affectedAreaList;
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// Use to tell if a specific body part was hit
+ ///
+ /// The body part of the hit
+ /// The exact hit on the body coordinate system
+ /// True if the hit is in an active body coordinate space
+ public bool HitInsideAffectedArea(HumanBodyBones hitBone, BodyCoordinateHit hitLocation)
+ {
+ // Check if it's on the same bone
+ if (hitBone == affectableBodyParts)
+ {
+ for (int n = 0; n < affectedAreaList.Count; n++)
+ {
+ // Check if it's an affect area on the same bone
+ if (affectedAreaList[n].HitInsideSpace(hitLocation))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public int BodyCoordinateHitIndex(HumanBodyBones hitBone, BodyCoordinateHit hitLocation)
+ {
+ // Check if it's on the same bone
+ if (hitBone == affectableBodyParts)
+ {
+ for (int n = 0; n < affectedAreaList.Count; n++)
+ {
+ // Check if it's an affect area on the same bone
+ if (affectedAreaList[n].HitInsideSpace(hitLocation))
+ {
+ return n;
+ }
+ }
+ }
+
+ return -1;
+ }
+ #endregion
+
+ #region Unity Functions
+ void OnValidate()
+ {
+ for(int n = 0; n < affectedAreaList.Count; n++)
+ {
+ if(affectedAreaList[n] != null)
+ {
+ affectedAreaList[n].OnValidate();
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs.meta
new file mode 100644
index 0000000..d169395
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableBodyCoordinate.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 1def597fc958b34428d434d67f612575
+timeCreated: 1551986644
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs
new file mode 100644
index 0000000..aebd24c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs
@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Takes a BodyCoordinate body part and creates an index mapping between the spaces availble from the mapping
+ /// and the actuators on the device. The IndexMapping class assumes that the actuators can be referenced from
+ /// an index value represented by an int.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [CreateAssetMenu(fileName = "New Device Mapping", menuName = "VIRTUOSO/Haptics/Create Device Mapping")]
+ public class ScriptableDeviceMapping : ScriptableObject
+ {
+ #region PublicVariables
+ public ScriptableBodyCoordinate affectedBodyArea;
+ public IndexMapping[] mapping;
+ #endregion
+
+ #region Unity Functions
+ void OnValidate()
+ {
+ if(affectedBodyArea != null)
+ {
+ Array.Resize(ref mapping, affectedBodyArea.affectedAreaList.Count);
+ }
+ else
+ {
+ mapping = new IndexMapping[0];
+ }
+ }
+ #endregion
+
+ [Serializable]
+ public class IndexMapping
+ {
+ public int[] indexMapping;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs.meta
new file mode 100644
index 0000000..7e5aba0
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableDeviceMapping.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 652134711068581419c729823ab6e5d3
+timeCreated: 1553284629
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs
new file mode 100644
index 0000000..9e4840c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs
@@ -0,0 +1,204 @@
+using System.IO;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Defines what a single curve on a Haptic Pattern is. The class consists of three AnimationCurves that
+ /// define how the curve will traverse the height and angle of the Body Coordinate System as well as the intensity
+ /// value at each of the inflection point. Since these are mathematical curves, there cannot be two points defined
+ /// at the same time, hence the need for a set of curves in order to define more complex haptic patterns.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [CreateAssetMenu(fileName = "New Haptic Curve", menuName = "VIRTUOSO/Haptics/Create Haptic Curve")]
+ public class ScriptableHapticCurve : ScriptableObject
+ {
+ #region PublicVariables
+ public AnimationCurve heightCurve = new AnimationCurve();
+ public AnimationCurve angleCurve = new AnimationCurve();
+ public AnimationCurve intensityCurve = new AnimationCurve();
+ // Used by the Haptic Pattern UI, if this is marked true, it will be deleted by discard
+ public bool temporaryCurve = false;
+ #endregion
+
+ #region PublicAPI
+ public float EndTime
+ {
+ get
+ {
+ return (heightCurve.keys.Length > 0) ? heightCurve.keys[heightCurve.length - 1].time : 0;
+ }
+ }
+
+ ///
+ /// Provides the height and angle for the curve at the given time
+ ///
+ /// The timing information for the hit
+ /// The BodyCoordinateHit that provides the height and angle of the hit
+ public BodyCoordinateHit GetHitLocationAtTime(float currentTime)
+ {
+ return new BodyCoordinateHit(Mathf.Clamp01(heightCurve.Evaluate(currentTime)),
+ Mathf.Clamp(angleCurve.Evaluate(currentTime), 0.0f, 360.0f));
+ }
+
+ ///
+ /// Provides the intensity value for a given time
+ ///
+ /// The timing information for the hit
+ /// The intensity value evaluated at the given time, clamped between 0 and 1
+ public float GetIntensityAtTime(float currentTime)
+ {
+ return Mathf.Clamp01(intensityCurve.Evaluate(currentTime));
+ }
+
+ ///
+ /// Adds a keyframe to the Haptic Pattern at the specified time.
+ ///
+ /// The time for the keyframe
+ /// The hit angle and height
+ /// The intensity between 0 and 1
+ public void AddKey(float time, BodyCoordinateHit location, float intensity)
+ {
+ heightCurve.AddKey(time, location.hitHeight);
+ angleCurve.AddKey(time, location.hitAngle);
+ intensityCurve.AddKey(time, intensity);
+ }
+
+ ///
+ /// Adjusts the values of a specific keyframe
+ ///
+ /// The index for the keyframe to update
+ /// The new height value for the keyframe
+ /// The new angle value for the keyframe
+ /// The new intensity of the keyframe
+ /// The new timing value for the keyframe
+ /// The index of the keyframe that was changed, timing information may change this value from the passed in keyIndex
+ public int UpdateKey(int keyIndex, float newHeight, float newAngle, float newIntensity, float newTime)
+ {
+ int newIndex = heightCurve.MoveKey(keyIndex, new Keyframe(newTime, newHeight));
+ angleCurve.MoveKey(keyIndex, new Keyframe(newTime, newAngle));
+ intensityCurve.MoveKey(keyIndex, new Keyframe(newTime, newIntensity));
+
+ return newIndex;
+ }
+
+ ///
+ /// Removes a keyframe from the Haptic Pattern.
+ ///
+ /// The index for the keyframe to remove
+ public void RemoveKey(int keyIndex)
+ {
+ heightCurve.RemoveKey(keyIndex);
+ angleCurve.RemoveKey(keyIndex);
+ intensityCurve.RemoveKey(keyIndex);
+ }
+ #endregion
+
+ #region PatternMethods
+ private void AddNewKeys(ref AnimationCurve curveWithLessKeys, ref AnimationCurve moreKeys)
+ {
+ int keyDifference = moreKeys.length - curveWithLessKeys.length;
+
+ for (int n = 0; n < keyDifference; n++)
+ {
+ curveWithLessKeys.AddKey(moreKeys.keys[curveWithLessKeys.length + n].time, 0f);
+ }
+ }
+
+ private void KeepCurveInRange(ref AnimationCurve curve, float minValue, float maxValue)
+ {
+ for (int n = 0; n < curve.keys.Length; n++)
+ {
+ // Keep value within the proper range
+ if (curve.keys[n].value < minValue)
+ {
+ curve.MoveKey(n, AdjustKeyFrameValue(curve.keys[n], minValue));
+ }
+ else if (curve.keys[n].value > maxValue)
+ {
+ curve.MoveKey(n, AdjustKeyFrameValue(curve.keys[n], maxValue));
+ }
+
+ // Keep time value above zero as well
+ if (curve.keys[n].time < 0)
+ {
+ curve.MoveKey(n, AdjustKeyFrameTime(curve.keys[n], 0));
+ }
+ }
+ }
+
+ private void KeepCurvesInSync()
+ {
+ for (int n = 0; n < heightCurve.keys.Length; n++)
+ {
+ if (heightCurve.keys[n].time != angleCurve.keys[n].time)
+ {
+ angleCurve.MoveKey(n, AdjustKeyFrameTime(angleCurve.keys[n], heightCurve.keys[n].time));
+ }
+
+ if (heightCurve.keys[n].time != intensityCurve.keys[n].time)
+ {
+ intensityCurve.MoveKey(n, AdjustKeyFrameTime(intensityCurve.keys[n], heightCurve.keys[n].time));
+ }
+ }
+ }
+
+ private Keyframe AdjustKeyFrameValue(Keyframe key, float value)
+ {
+ return new Keyframe(key.time, value, key.inTangent, key.outTangent);
+ }
+
+ private Keyframe AdjustKeyFrameTime(Keyframe key, float time)
+ {
+ return new Keyframe(time, key.value, key.inTangent, key.outTangent);
+ }
+ #endregion
+
+ #region UnityFunctions
+ private void OnValidate()
+ {
+ // Keep curves the same length
+ if (angleCurve.length < heightCurve.length)
+ {
+ AddNewKeys(ref angleCurve, ref heightCurve);
+ }
+ else if (intensityCurve.length < heightCurve.length)
+ {
+ AddNewKeys(ref intensityCurve, ref heightCurve);
+ }
+ else if(angleCurve.length > heightCurve.length)
+ {
+ AddNewKeys(ref heightCurve, ref angleCurve);
+ }
+ else if(intensityCurve.length > heightCurve.length)
+ {
+ AddNewKeys(ref heightCurve, ref intensityCurve);
+ }
+
+ // Make sure the curves have the proper ranges
+ KeepCurveInRange(ref heightCurve, 0.0f, 1.0f);
+ KeepCurveInRange(ref angleCurve, 0.0f, 360.0f);
+ KeepCurveInRange(ref intensityCurve, 0.0f, 1.0f);
+
+ // Make sure each infliction point on the curves are aligned among time, angle + intensity matches height's timing
+ KeepCurvesInSync();
+ }
+
+ public override string ToString()
+ {
+#if UNITY_EDITOR
+ string assetPath = AssetDatabase.GetAssetPath(this.GetInstanceID());
+
+ return Path.GetFileNameWithoutExtension(assetPath);
+#else
+ return "Haptic Curve";
+#endif
+
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs.meta
new file mode 100644
index 0000000..2ddaccb
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticCurve.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 614963222c5fc264abeee260e20d8641
+timeCreated: 1553102906
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs
new file mode 100644
index 0000000..dc6ac60
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs
@@ -0,0 +1,278 @@
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Defines a haptic pattern to use with the Haptic SDK. A haptic pattern is composed of a set of haptic curves. Some
+ /// additional information includes playback timing, which determines how often to tell the device to make a haptic pulse.
+ /// Collision resolution deals with how two or more curves will resolve the intensity if they affect the same actuator.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [CreateAssetMenu(fileName = "New Haptic Pattern", menuName = "VIRTUOSO/Haptics/Create Haptic Pattern")]
+ public class ScriptableHapticPattern : ScriptableObject
+ {
+ #region PublicVariables
+ // The curves that make up the haptic pattern
+ public List curveList = new List();
+ // How to resolve the intensity when 2 or more curves intersect in a section of a body coordinate space
+ public PatternCollisionResolution collisionResolution = PatternCollisionResolution.Average;
+ // The curve index to use if curve priority is selected as the resolution
+ public int curvePriorityIndex = 0;
+ // How to time playing successive haptic pulses in the pattern
+ public PlaybackTiming playbackTiming;
+ // If using a custom playback timing, this is the value between successive haptic pulses
+ public float customPlaybackTiming = 0.333f;
+ // What happens when a pattern's evaluated height goes above the range
+ public PatternOvershootResolution heightOvershootResolution = PatternOvershootResolution.Clamp;
+ // What happens when a pattern's evaluated height goes above the range
+ public PatternOvershootResolution angleOvershootResolution = PatternOvershootResolution.Wrap;
+ // The last body hit with this pattern
+ public BodyCoordinateHit hitOffset;
+ // Whether to use the hitoffset when evaluating the haptic pattern being played
+ public OffsetUse offsetUse = OffsetUse.Ignore;
+ #endregion
+
+ #region PublicProperties
+ public float EndTime
+ {
+ get
+ {
+ return Mathf.Max(curveList.Select(C => (C.EndTime)).ToArray());
+ }
+ }
+ #endregion
+
+ #region PrivateVariables
+ private float[] intensityEvaluationBuffer;
+ private BodyCoordinateHit[] hitLocationBuffer;
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// Provides the intensity values for all the curve values in the pattern for a specified time
+ ///
+ /// The timing information
+ /// An array of intensity value for each curve in the pattern
+ public float[] GetIntenstiyValuesAtCurrentTime(float currentTime)
+ {
+ // Get the intensity value for each curve
+ for (int n = 0; n < curveList.Count; n++)
+ {
+ intensityEvaluationBuffer[n] = curveList[n].GetIntensityAtTime(currentTime);
+ }
+
+ return intensityEvaluationBuffer;
+ }
+
+ ///
+ /// Provides the hit location (angle and height) values for all the curve values in the pattern for a specified time
+ ///
+ /// The timing information
+ /// An array of BodyCoordinateHit value for each curve in the pattern
+ public BodyCoordinateHit[] GetHitLocationsAtCurrentTime(float currentTime)
+ {
+ // Get the hit location for each curve
+ for (int n = 0; n < curveList.Count; n++)
+ {
+ BodyCoordinateHit hitLocation = curveList[n].GetHitLocationAtTime(currentTime);
+
+ // Adjust the hitLocation based on the offset
+ switch (offsetUse)
+ {
+ case OffsetUse.SetAtFirstPoint:
+ // Get the difference between the offset and the first point
+ float heightDifference = hitOffset.hitHeight - curveList[n].heightCurve[0].value;
+ float angleDifference = hitOffset.hitAngle - curveList[n].angleCurve[0].value;
+
+ // Apply the difference to the current hit location
+ hitLocation.hitHeight += heightDifference;
+ hitLocation.hitAngle += angleDifference;
+
+ break;
+ }
+
+ // Adjust the hitLocation based on the overshoot resolution for the height
+ hitLocation.hitHeight = AdjustHitLocation(hitLocation.hitHeight, 0.0f, 1.0f, heightOvershootResolution);
+
+ // Adjust the hitLocation based on the overshoot resolution for the angle
+ hitLocation.hitAngle = AdjustHitLocation(hitLocation.hitAngle, 0.0f, 360.0f, angleOvershootResolution);
+
+ hitLocationBuffer[n] = hitLocation;
+ }
+
+ return hitLocationBuffer;
+ }
+
+ ///
+ /// Adds a keyframe to the pattern for a given curve
+ ///
+ /// The curve index to add the keyframe to
+ /// The timing for the new keyframe
+ /// The height/angle of the keyframe
+ /// The intensity value of the keyframe
+ public void AddKey(int curveIndex, float time, BodyCoordinateHit location, float intensity)
+ {
+ curveList[curveIndex].AddKey(time, location, intensity);
+ }
+
+ ///
+ /// Removes a keyframe from a specified curve
+ ///
+ /// The index of the curve to remove a keyframe from
+ /// The index of the keyframe within the curve to remove
+ public void RemoveKey(int curveIndex, int keyIndex)
+ {
+ curveList[curveIndex].RemoveKey(keyIndex);
+ }
+
+ ///
+ /// Provides the number of keyframes in a specific curve
+ ///
+ /// The index of the curve
+ /// -1 if an invalid curve index is given, otherwise the total number of keyframes in the curve
+ public int GetKeyCountForCurve(int curveIndex)
+ {
+ if (curveIndex < 0 || curveIndex >= curveList.Count)
+ {
+ return -1;
+ }
+ else
+ {
+ return curveList[curveIndex].heightCurve.length;
+ }
+ }
+
+ ///
+ /// Adds an empty curve to the pattern through scripting. This will also save the curve to an .asset file so that the reference and changes
+ /// made to this curve are not lost to serilization issues.
+ ///
+ /// The index of the new curve
+ public int AddNewCurve(string filePath, string patternName)
+ {
+ curveList.Add(ScriptableObject.CreateInstance());
+
+#if UNITY_EDITOR
+ // Save the curve so that it can be found in the UI list
+ ScriptableObjectUtility.SaveScriptableObject(curveList[curveList.Count - 1], filePath, patternName + "_Curve" + (curveList.Count - 1));
+#endif
+
+ return curveList.Count - 1;
+ }
+
+ ///
+ /// Adds a curve to the curveList. This method is used when the curve already has an .asset file associated
+ /// with it and does not require tweaking it in any way.
+ ///
+ /// The curve to add to the list
+ /// The index of the added curve
+ public int AddSavedCurve(ScriptableHapticCurve hapticCurve)
+ {
+ curveList.Add(hapticCurve);
+
+ return curveList.Count - 1;
+ }
+
+ ///
+ /// Removes a specific curve from the pattern. If the curve is temporary, it will delete the
+ /// associated .asset file as well.
+ ///
+ /// The index of the curve to remove in the curveList
+ public void RemoveCurve(int curveIndex)
+ {
+ if (curveIndex < 0 || curveIndex >= curveList.Count)
+ {
+ return;
+ }
+
+#if UNITY_EDITOR
+ // If it is a temporary curve, delete the asset first since it is no longer needed
+ if (curveList[curveIndex].temporaryCurve)
+ {
+ ScriptableObjectUtility.DeleteScriptableObject(curveList[curveIndex]);
+ }
+#endif
+
+ curveList.RemoveAt(curveIndex);
+ }
+
+ ///
+ /// Utility to get the length of a curve in the pattern for the specified curve
+ ///
+ /// The index of the curve in the curveList
+ /// -1 if the index is invalid, otherwise the last keyframe timing information for the curve
+ public float GetCurveEndTime(int curveIndex)
+ {
+ if (curveIndex < 0 || curveIndex >= curveList.Count)
+ {
+ return -1;
+ }
+
+ return curveList[curveIndex].heightCurve[curveList[curveIndex].heightCurve.length - 1].time;
+ }
+ #endregion
+
+ #region PrivateMethods
+ private float AdjustHitLocation(float value, float minValue, float maxValue, PatternOvershootResolution overshootResolution)
+ {
+ switch (overshootResolution)
+ {
+ case PatternOvershootResolution.Discard:
+ if (value < minValue || value > maxValue)
+ {
+ // Return negative infinity as this number will never be reached and can easily be checked to skip
+ return float.NegativeInfinity;
+ }
+ break;
+ case PatternOvershootResolution.Clamp:
+ if (value > maxValue)
+ {
+ return maxValue;
+ }
+ else if (value < minValue)
+ {
+ return minValue;
+ }
+ break;
+ case PatternOvershootResolution.Wrap:
+ if (value < minValue || value > maxValue)
+ {
+ return VirtMath.WrapBetweenRange(value, minValue, maxValue);
+ }
+ break;
+ }
+
+ return value;
+ }
+ #endregion
+
+ #region Unity Functions
+ private void OnEnable()
+ {
+ intensityEvaluationBuffer = new float[curveList.Count];
+ hitLocationBuffer = new BodyCoordinateHit[curveList.Count];
+ }
+
+ private void OnDisable()
+ {
+ // Don't keep a saved offset value since it's only set by a collision
+ hitOffset = new BodyCoordinateHit();
+ }
+
+ private void OnValidate()
+ {
+ if (curvePriorityIndex < 0)
+ {
+ curvePriorityIndex = 0;
+ }
+ else if (curvePriorityIndex >= curveList.Count)
+ {
+ curvePriorityIndex = curveList.Count - 1;
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs.meta
new file mode 100644
index 0000000..7eac547
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticPattern.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 4c110b34a208c8c43abc687227bfacc0
+timeCreated: 1553102915
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs
new file mode 100644
index 0000000..87bd928
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs
@@ -0,0 +1,83 @@
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using System.IO;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Holds reusable data that is needed through out the Haptic SDK.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class ScriptableHapticSettings : ScriptableObject
+ {
+ #region PublicVariables
+ // Where the default setting file will be hosted
+ public const string DEFAULT_SETTING_LOCATION = "Assets/VIRTUOSO/Resources/Editor/";
+ // What the default setting file will be named
+ public const string DEFAULT_SETTING_NAME = "HapticSettings";
+
+ // Where any patterns created by the UI will be saved
+ public string defaultPatternSaveLocation = "Assets/VIRTUOSO/Resources/Patterns/";
+ // Where any curves created by the UI will be saved
+ public string defaultCurveSaveLocation = "Assets/VIRTUOSO/Resources/Curves/";
+ // The default intensity value for any new inflection point
+ public float defaultIntensity = 0.5f;
+ // The default time increase when a new inflection point is added
+ public float defaultTimeGranularity = 0.5f;
+ // The amount of samples that will be used when rendering the curve between two points in a haptic curve
+ public int defaultCurveRenderingGranularity = 10;
+ #endregion
+
+ #region PublicAPI
+ public static ScriptableHapticSettings GetSettings()
+ {
+ ScriptableHapticSettings settings = Resources.Load(DEFAULT_SETTING_NAME) as ScriptableHapticSettings;
+
+ // If there is no settings, create one with the default values
+ if (settings == null)
+ {
+ settings = ScriptableObject.CreateInstance();
+#if UNITY_EDITOR
+ ScriptableObjectUtility.SaveScriptableObject(settings, DEFAULT_SETTING_LOCATION, DEFAULT_SETTING_NAME);
+#endif
+ }
+
+ return settings;
+ }
+ #endregion
+
+ #region UnityFunctions
+ public void OnValidate()
+ {
+ // Keep intensity between 0 and 1
+ defaultIntensity = Mathf.Clamp01(defaultIntensity);
+
+ // Keep timing non-negative
+ if (defaultTimeGranularity <= 0.0f)
+ {
+ defaultTimeGranularity = 0.01f;
+ }
+
+#if UNITY_EDITOR
+ // Make sure the directory exists
+ if (!Directory.Exists(defaultPatternSaveLocation))
+ {
+ Directory.CreateDirectory(defaultPatternSaveLocation);
+ AssetDatabase.Refresh();
+ }
+
+ // Make sure the directory exists
+ if (!Directory.Exists(defaultCurveSaveLocation))
+ {
+ Directory.CreateDirectory(defaultCurveSaveLocation);
+ AssetDatabase.Refresh();
+ }
+#endif
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs.meta
new file mode 100644
index 0000000..67580b5
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/ScriptableObjects/ScriptableHapticSettings.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e28766c9060caff42bd7a43852aadbec
+timeCreated: 1556137234
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization.meta
new file mode 100644
index 0000000..9855ad1
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e98d8c6cd383dfb4ba79718adff77d51
+folderAsset: yes
+timeCreated: 1555527446
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs
new file mode 100644
index 0000000..5415c7f
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs
@@ -0,0 +1,133 @@
+#if UNITY_EDITOR
+using System;
+using UnityEngine;
+using UnityEditor;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Works with the HapticPatternWindow class to work in the In-Scene UI for creating haptic
+ /// pattern. This class is responsible for listening for double clicks on the inflection
+ /// points for the pattern. If they are double clicked on, it will open up a menu that will
+ /// allow the developer to edit the values for the point.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public sealed class BodyHitListener : IDisposable
+ {
+ #region PrivateVariables
+ private BodyHitUI lastUIHit;
+ #endregion
+
+ #region BodyHitMethods
+ public BodyHitListener()
+ {
+ SceneView.onSceneGUIDelegate += GetMouseClicks;
+ }
+
+ public void Dispose()
+ {
+ CleanUp();
+ }
+
+ private void CleanUp()
+ {
+ SceneView.onSceneGUIDelegate -= GetMouseClicks;
+ }
+ #endregion
+
+ #region ListenerMethods
+ public void GetMouseClicks(SceneView sceneView)
+ {
+ // Only care about mouse down events
+ if (Event.current.type != EventType.MouseDown)
+ {
+ return;
+ }
+
+ // convert GUI coordinates to screen coordinates
+ Vector3 screenPosition = Event.current.mousePosition;
+ Vector3 cameraScreenPosition = screenPosition;
+ cameraScreenPosition.y = Camera.current.pixelHeight - cameraScreenPosition.y;
+
+ Ray ray = Camera.current.ScreenPointToRay(cameraScreenPosition);
+ RaycastHit hit;
+
+ // Wait for double clicks on left mouse
+ if (Event.current.clickCount == 2 && Event.current.button == 0)
+ {
+ // Cast ray into the scene
+ if (Physics.Raycast(ray, out hit))
+ {
+ Event.current.Use();
+
+ BodyCoordinate bodyPart = hit.collider.GetComponent();
+
+ if (bodyPart != null)
+ {
+ BodyCoordinateHit hitLocation = bodyPart.CalculateBodyCoordinateHitFromPosition(hit.point);
+
+ OnBodyPartHit(bodyPart, hitLocation, hit.point);
+
+ return;
+ }
+
+ BodyHitUI uiHit = hit.collider.GetComponent();
+
+ if (uiHit != null)
+ {
+ // Make sure that another UI is not already displaying
+ lastUIHit?.HideUI(screenPosition, true);
+
+ lastUIHit = uiHit;
+
+ lastUIHit.DisplayUI(screenPosition);
+ return;
+ }
+ }
+ }
+ else if (Event.current.clickCount == 1)
+ {
+ // Close the hitUI if they click outside of it
+ if (lastUIHit != null)
+ {
+ // Right/middle clicks will force close the UI
+ bool wasHidden = (Event.current.button != 0) ? lastUIHit.HideUI(screenPosition, true) : lastUIHit.HideUI(screenPosition);
+
+ if (wasHidden)
+ {
+ lastUIHit = null;
+ }
+ }
+ }
+ }
+ #endregion
+
+ #region Events
+ public event EventHandler BodyPartHit;
+
+ public void OnBodyPartHit(BodyCoordinate bodyCoordinate, BodyCoordinateHit hitInfo, Vector3 hitLocation)
+ {
+ if (BodyPartHit != null)
+ {
+ BodyPartHit(this, new HapticInformation(bodyCoordinate, hitInfo, hitLocation));
+ }
+ }
+
+ public class HapticInformation : EventArgs
+ {
+ public BodyCoordinate bodyPart;
+ public BodyCoordinateHit bodyHitInfo;
+ public Vector3 worldHitLocation;
+
+ public HapticInformation(BodyCoordinate bodyCoordinate, BodyCoordinateHit hitInfo, Vector3 hitLocation)
+ {
+ bodyPart = bodyCoordinate;
+ bodyHitInfo = hitInfo;
+ worldHitLocation = hitLocation;
+ }
+ }
+ #endregion
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs.meta
new file mode 100644
index 0000000..5fb713c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitListener.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: a2d7de4c9a423c346b192082a2b50e0b
+timeCreated: 1554905415
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs
new file mode 100644
index 0000000..0bc4a7d
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs
@@ -0,0 +1,219 @@
+using UnityEngine;
+using System;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// In-Scene UI for a keyframe in the Haptic Pattern. When the GameObject that holds the keyframe data is double
+ /// clicked in the scene, the UI generated in this class will appear. It allows a user to either remove the keyframe
+ /// or set a new height, angle, intensity, or timing information for the keyframe.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ {
+ #region PublicVariables
+ public float hitAngle;
+ public float hitHeight;
+ public float intensity;
+ public float timing;
+ public int keyFrameIndex;
+ // This is true when the Pattern UI has added the point but it has not been committed to the curve yet
+ public bool isTemporary = false;
+ #endregion
+
+ #region PrivateVariables
+ private ScriptableHapticCurve hapticCurve;
+ private int hapticCurveIndex;
+ private bool shouldDisplayUI = false;
+ private Vector3 lastScreenPosition;
+ private Rect uiRect;
+
+ private const int UI_WIDTH = 200;
+ private const int UI_HEIGHT = 400;
+ #endregion
+
+ #region PublicAPI
+ public void SetValues(float angle, float height, float intense, float time, int keyIndex, int curveIndex, ScriptableHapticCurve curve)
+ {
+ hitAngle = angle;
+ hitHeight = height;
+ intensity = intense;
+ timing = time;
+ keyFrameIndex = keyIndex;
+ hapticCurveIndex = curveIndex;
+ hapticCurve = curve;
+ }
+
+ ///
+ /// Shows the UI with the angle, height, timing, and intensity that the point has.
+ ///
+ /// The position on the screen where the UI was asked to be displayed
+ public void DisplayUI(Vector3 screenPosition)
+ {
+ lastScreenPosition = screenPosition;
+
+ shouldDisplayUI = true;
+ }
+
+ ///
+ /// Hides the UI when it is no longer needed. If the UI has focus, it cannot be hidden.
+ ///
+ /// The position on the screen where the mouse was clicked
+ /// True if the UI was hidden, otherwise false
+ public bool HideUI(Vector3 screenPosition, bool forceClose = false)
+ {
+ if (forceClose || !uiRect.Contains(screenPosition))
+ {
+ shouldDisplayUI = false;
+
+ lastScreenPosition = Vector3.zero;
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ #endregion
+
+ #region BodyHitMethods
+ private void UpdateCurve()
+ {
+ // Set the new keyframe in the curves
+ int newKey = hapticCurve.UpdateKey(keyFrameIndex, hitHeight, hitAngle, intensity, timing);
+
+#if UNITY_EDITOR
+ // If the new key is different, then all the other keys above it may different as well, update them here
+ if (newKey != keyFrameIndex)
+ {
+ FindObjectOfType().UpdateKeyIndices(hapticCurveIndex, keyFrameIndex, newKey);
+ }
+#endif
+
+ // Update GO position to match new location
+ transform.position = GetComponentInParent().CalculatePositionFromBodyCoordinateHit(new BodyCoordinateHit(hitHeight, hitAngle), true);
+ }
+
+ private void RemovePointOnCurve()
+ {
+ hapticCurve.RemoveKey(keyFrameIndex);
+
+#if UNITY_EDITOR
+ // Make sure that keys are updated since this index is now gone
+ FindObjectOfType().UpdateKeyIndices(hapticCurveIndex, keyFrameIndex);
+#endif
+
+ DestroyImmediate(gameObject);
+ }
+ #endregion
+
+ #region EventListener
+#if UNITY_EDITOR
+ public void RenderSceneGUI(SceneView sceneview)
+ {
+ if (shouldDisplayUI)
+ {
+ sceneview.Repaint();
+
+ Handles.BeginGUI();
+ uiRect = new Rect(lastScreenPosition.x, lastScreenPosition.y, UI_WIDTH, UI_HEIGHT);
+
+ GUILayout.BeginArea(uiRect);
+
+ // Make a gray, slightly transparent canvas
+ EditorGUI.DrawRect(uiRect, new Color(1.0f, 0.5f, 0.5f, 1.0f));
+
+ Rect rect = EditorGUILayout.BeginVertical();
+ GUI.Box(rect, GUIContent.none);
+
+ // Prompt and display angle
+ hitAngle = EditorGUILayout.FloatField("Angle: ", hitAngle);
+
+ // Sanitize
+ hitAngle = Mathf.Clamp(hitAngle, 0.0f, 360.0f);
+
+ // Prompt and display height
+ hitHeight = EditorGUILayout.FloatField("Height: ", hitHeight);
+
+ // Sanitize
+ hitHeight = Mathf.Clamp01(hitHeight);
+
+ // Prompt and display intensity
+ intensity = EditorGUILayout.FloatField("Intensity: ", intensity);
+
+ // Sanitize
+ intensity = Mathf.Clamp01(intensity);
+
+ // Prompt and display timing
+ timing = EditorGUILayout.FloatField("Timing: ", timing);
+
+ // Sanitize
+ if(timing < 0.0f)
+ {
+ timing = 0.0f;
+ }
+
+ // Display update button
+ if (GUILayout.Button("Update"))
+ {
+ UpdateCurve();
+ }
+
+ // Display remove point button
+ if (GUILayout.Button("Remove"))
+ {
+ RemovePointOnCurve();
+ }
+
+ EditorGUILayout.EndVertical();
+ GUILayout.EndArea();
+ Handles.EndGUI();
+ }
+ }
+#endif
+ #endregion
+
+ #region IComparableImplementation
+ public int CompareTo(BodyHitUI other)
+ {
+ if (other == null)
+ {
+ return 1;
+ }
+
+ if (this.keyFrameIndex > other.keyFrameIndex)
+ {
+ return 1;
+ }
+ else if (other.keyFrameIndex > this.keyFrameIndex)
+ {
+ return -1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+#if UNITY_EDITOR
+ private void OnEnable()
+ {
+ SceneView.onSceneGUIDelegate += RenderSceneGUI;
+ }
+
+ private void OnDisable()
+ {
+ SceneView.onSceneGUIDelegate -= RenderSceneGUI;
+ }
+#endif
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs.meta
new file mode 100644
index 0000000..832dea6
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/BodyHitUI.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 68547b836d856594492dc71ce6e4d9e8
+timeCreated: 1554232724
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs
new file mode 100644
index 0000000..e3492c8
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs
@@ -0,0 +1,30 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEditor.SceneManagement;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Single method class to add a menu item to create a new haptic pattern.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public static class CreateHapticPattern
+ {
+ [MenuItem("VIRTUOSO/Haptics/Create Haptic Pattern")]
+ public static void CreatePattern()
+ {
+ EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
+
+ string activeScene = EditorSceneManager.GetActiveScene().path;
+
+ // Set up the scene to edit the pattern
+ EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
+
+ HapticPatternWindow activePatternWindow = Camera.main.gameObject.AddComponent();
+ activePatternWindow.SetupCapsuleScene(activeScene);
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs.meta
new file mode 100644
index 0000000..bfb4e39
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/CreateHapticPattern.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 116691607af234f4e97ead0719ed29c4
+timeCreated: 1556568490
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs
new file mode 100644
index 0000000..e73842f
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs
@@ -0,0 +1,593 @@
+#if UNITY_EDITOR
+using System.Collections.Generic;
+using UnityEngine;
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using UnityEditor;
+using UnityEditor.SceneManagement;
+using CharlesRiverAnalytics.Virtuoso.Scriptable;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// A portion of the In-Scene UI for creating haptic patterns. This class is the one responsbile for the actual
+ /// haptic pattern and managing the state of information that is known about the pattern, such as keeping a reference
+ /// to all the GameObjects that refer to a specific keyframe in the curve. If a pattern has to be loaded or saved, it
+ /// is down through the script.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ [ExecuteInEditMode]
+ public class HapticPatternWindow : MonoBehaviour
+ {
+ #region PublicVariables
+ public GameObject hitLocationPrefab;
+ public Material activeHitMaterial;
+ public Material inactiveHitMaterial;
+ public Material capsuleMaterial;
+ public ScriptableLineRenderer lineRendererData;
+ #endregion
+
+ #region PrivateVariables
+ private string previousScene;
+ private GameObject capsuleGO;
+ private BodyHitListener hitListener;
+ private HapticSceneViewGUI hapticSceneView;
+ private BodyCoordinate capsuleBodyCoordinate;
+ private ScriptableHapticPattern currentPattern;
+ private bool setupComplete = false;
+ // When true, the scene is cleaning up and will stop a few process
+ private bool isClosing = false;
+ private int currentCurveIndex = 0;
+ private LineRenderer currentCurveLineRenderer;
+ private ScriptableHapticSettings hapticSettings;
+ // Stores the inflection points for each curve attached to the pattern
+ private Dictionary> bodyHitsPerCurve;
+ #endregion
+
+ #region PublicProperties
+ public int CurveIndex
+ {
+ get
+ {
+ return currentCurveIndex;
+ }
+ set
+ {
+ if (!isClosing)
+ {
+ // Since a new curve value is about to be set, update the visualization on the keyframe GO to inactive
+ UpdateCurveKeyFrameVisualization(currentCurveIndex, false);
+ }
+
+ currentCurveIndex = value;
+
+ if (!isClosing)
+ {
+ // A new value was set, now make these keyframes the active one
+ UpdateCurveKeyFrameVisualization(currentCurveIndex, true);
+
+ DrawCurrentCurvePath();
+ }
+ }
+ }
+
+ public ScriptableHapticPattern HapticPattern
+ {
+ get
+ {
+ return currentPattern;
+ }
+ }
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// Sets up a new scene for pattern creation. This method will set up a capsule with a body coordinate system, a line
+ /// renderer for the haptic points, and the GUI and listeners needed to manage the new pattern.
+ ///
+ /// The string of the scene that the user needs to return to when the leave this Scene UI
+ public void SetupCapsuleScene(string previousSceneName)
+ {
+ previousScene = previousSceneName;
+
+ // Don't allow playmode to be entered while in this scene
+ EditorApplication.playModeStateChanged += EditorApplication_playModeStateChanged;
+
+ // Hook into mouse events from the scene
+ hitListener = new BodyHitListener();
+ hitListener.BodyPartHit += HitListener_BodyPartHit;
+
+ // Set up the In-Scene GUI
+ hapticSceneView = new HapticSceneViewGUI
+ {
+ patternWindow = this
+ };
+
+ // Connect to the OnGUI event cycle
+ SceneView.onSceneGUIDelegate += OnGUIDelegate;
+
+ // Set up the capsule
+ capsuleGO = GameObject.CreatePrimitive(PrimitiveType.Capsule);
+ capsuleGO.GetComponent().material = capsuleMaterial;
+ capsuleGO.hideFlags = HideFlags.HideInInspector;
+ capsuleBodyCoordinate = capsuleGO.AddComponent();
+ capsuleBodyCoordinate.drawGizmoUnselected = true;
+
+ // Set up the line render for the active curve line
+ GameObject lineHolder = new GameObject("Line Holder", typeof(LineRenderer));
+ lineHolder.transform.parent = capsuleGO.transform;
+ lineHolder.hideFlags = HideFlags.HideInHierarchy;
+
+ currentCurveLineRenderer = lineHolder.GetComponent();
+
+ currentCurveLineRenderer.widthMultiplier = lineRendererData.widthMultiplier;
+ currentCurveLineRenderer.numCornerVertices = lineRendererData.numCornerVertices;
+ currentCurveLineRenderer.numCapVertices = lineRendererData.numCapVertices;
+ currentCurveLineRenderer.material = lineRendererData.lineMaterial;
+ currentCurveLineRenderer.receiveShadows = lineRendererData.receiveShadows;
+ currentCurveLineRenderer.allowOcclusionWhenDynamic = lineRendererData.allowOcclusionWhenDynamic;
+ currentCurveLineRenderer.startColor = lineRendererData.lineStartColor;
+ currentCurveLineRenderer.endColor = lineRendererData.lineEndColor;
+
+ // Start with 0 points in the line
+ currentCurveLineRenderer.positionCount = 0;
+
+ // Focus the camera on the capsule
+ Selection.activeGameObject = capsuleGO;
+ SceneView.lastActiveSceneView.FrameSelected();
+
+ // Start work on the haptic pattern
+ currentPattern = ScriptableObject.CreateInstance();
+ AddNewCurve("Default");
+
+ // Don't need the event listener for a new scene anymore, wait for when this scene closes
+ setupComplete = true;
+ }
+
+ ///
+ /// Saves the pattern that was being worked on to the set default location with the given file name.
+ ///
+ /// The string that represents the file name without the extension
+ public void SavePattern(string patternName, PatternCollisionResolution selectedCollisionResolution, int collisionResolutionIndex,
+ PlaybackTiming selectedPlaybackTiming, float customPlaybackTiming, OffsetUse selectedOffsetUse,
+ PatternOvershootResolution selectedHeightOvershoot, PatternOvershootResolution selectedAngleOvershoot)
+ {
+ isClosing = true;
+
+ // Save the various settings for the pattern
+ HapticPattern.collisionResolution = selectedCollisionResolution;
+ HapticPattern.curvePriorityIndex = collisionResolutionIndex;
+ HapticPattern.playbackTiming = selectedPlaybackTiming;
+ HapticPattern.customPlaybackTiming = customPlaybackTiming;
+ HapticPattern.offsetUse = selectedOffsetUse;
+ HapticPattern.heightOvershootResolution = selectedHeightOvershoot;
+ HapticPattern.angleOvershootResolution = selectedAngleOvershoot;
+
+ ScriptableObjectUtility.SaveScriptableObject(HapticPattern, hapticSettings.defaultPatternSaveLocation, patternName);
+
+ for (int n = 0; n < HapticPattern.curveList.Count; n++)
+ {
+ // Only rename curves that this pattern created
+ if (HapticPattern.curveList[n].temporaryCurve)
+ {
+ ScriptableObjectUtility.RenameScriptableObjectFile(HapticPattern.curveList[n], patternName + "_Curve" + n);
+
+ // This curve is no longer temporary and should be saved
+ HapticPattern.curveList[n].temporaryCurve = false;
+ }
+ }
+
+ ReturnToPreviousScene();
+ }
+
+ ///
+ /// Updates the key indices in the bodyHitCurve dictionary. Since the developer may remove
+ /// or update the ordering of the keys, the dictionary needs to be updated with the correct
+ /// key to make sure the GameObject that represents that keyframe is correct.
+ ///
+ /// The index of the curve on the pattern that this applies to
+ /// The index that was changed or removed
+ /// If a key was reordered, this is the new value for that key
+ public void UpdateKeyIndices(int curveIndex, int changedIndex, int changedTowardIndex = -1)
+ {
+ // Key was changed, update the rest
+ if (changedTowardIndex != -1)
+ {
+ if (changedIndex < changedTowardIndex)
+ {
+ for (int n = changedIndex; n <= changedTowardIndex; n++)
+ {
+ bodyHitsPerCurve[curveIndex][n].keyFrameIndex--;
+ }
+ }
+ else
+ {
+ for (int n = changedTowardIndex; n <= changedIndex; n++)
+ {
+ bodyHitsPerCurve[curveIndex][n].keyFrameIndex++;
+ }
+ }
+
+ // Set the key index for the changed one
+ bodyHitsPerCurve[curveIndex][changedIndex].keyFrameIndex = changedTowardIndex;
+ }
+ // Key was deleted, update the rest
+ else
+ {
+ for (int n = changedIndex; n < bodyHitsPerCurve[curveIndex].Count; n++)
+ {
+ // Only one point can be removed at a time so just decrement all the indices above the changed one
+ bodyHitsPerCurve[curveIndex][n].keyFrameIndex--;
+ }
+
+ // Remove the BodyHitUI from the list of known BodyHits
+ bodyHitsPerCurve[curveIndex].RemoveAt(changedIndex);
+ }
+
+ // Since an index and key values were changed, resort the list by the keyframe index
+ bodyHitsPerCurve[curveIndex].Sort();
+ }
+
+ ///
+ /// Removes any changes for the pattern and returns back to the prevoius scene. If a saved pattern
+ /// or curve was used, any temporary patterns or curves will be removed and their associated .asset
+ /// files will be deleted.
+ ///
+ public void DiscardChanges()
+ {
+ isClosing = true;
+
+ for (int n = HapticPattern.curveList.Count - 1; n >= 0; n--)
+ {
+ // Delete all curves attached to the pattern that are labeled as temporary
+ if (HapticPattern.curveList[n].temporaryCurve)
+ {
+ ScriptableObjectUtility.DeleteScriptableObject(HapticPattern.curveList[n]);
+
+ bodyHitsPerCurve.Remove(n);
+ }
+ // Otherwise, go through the curve and look for any temporary keyframes in the curve
+ else
+ {
+ for (int h = bodyHitsPerCurve[n].Count - 1; h >= 0; h--)
+ {
+ // Remove this keyframe from the curve
+ if (bodyHitsPerCurve[n][h].isTemporary)
+ {
+ HapticPattern.RemoveKey(n, bodyHitsPerCurve[n][h].keyFrameIndex);
+ }
+ }
+ }
+ }
+
+ ReturnToPreviousScene();
+ }
+
+ ///
+ /// Removes the active curve that is being worked on from the pattern. It will also remove any GameObjects
+ /// for the keyframes for that curve and update the dictionary of known keyframes per curve.
+ ///
+ public void RemoveCurrentCurve()
+ {
+ // Remove it from the pattern
+ HapticPattern.RemoveCurve(CurveIndex);
+
+ // Remove the GameObjects from the scene
+ for (int n = 0; n < bodyHitsPerCurve[CurveIndex].Count; n++)
+ {
+ DestroyImmediate(bodyHitsPerCurve[CurveIndex][n].gameObject);
+ }
+
+ // Any dictionary keys above the currentCurveIndex needs to go down by 1 since a key will be removed
+ for (int n = CurveIndex; n < bodyHitsPerCurve.Keys.Count - 1; n++)
+ {
+ bodyHitsPerCurve[n] = bodyHitsPerCurve[n + 1];
+ }
+
+ // Remove the last one since it is now a duplicate
+ bodyHitsPerCurve.Remove(bodyHitsPerCurve.Keys.Count - 1);
+
+ // If there are no curves left, re-add a default curve so the user is still able to add points
+ if (HapticPattern.curveList.Count == 0)
+ {
+ AddNewCurve("Default");
+
+ // Reset the line renderer to zero
+ currentCurveLineRenderer.positionCount = 0;
+ }
+
+ // Since the curve has been removed, start at 0 since there will always be a curve at 0
+ CurveIndex = 0;
+ }
+
+ ///
+ /// Adds an empty curve to the pattern. This will mark it as temporary so if changes are discarded,
+ /// the curve will be removed as well.
+ ///
+ public void AddNewCurve(string patternName)
+ {
+ CurveIndex = HapticPattern.AddNewCurve(hapticSettings.defaultCurveSaveLocation, patternName);
+
+ // Mark the curve as temporary so it can be deleted if not saved
+ HapticPattern.curveList[CurveIndex].temporaryCurve = true;
+
+ bodyHitsPerCurve.Add(CurveIndex, new List());
+ }
+
+ ///
+ /// Adds a curve that already has a .asset file associated with the curve
+ ///
+ /// The curve to add
+ public void AddSavedCurve(ScriptableHapticCurve hapticCurve)
+ {
+ // Add the curve info to the pattern
+ CurveIndex = HapticPattern.AddSavedCurve(hapticCurve);
+
+ // Start tracking the BodyHitUI for this new curve index
+ bodyHitsPerCurve.Add(CurveIndex, new List());
+
+ // Get all the curve info into the dictionary
+ AddCurveToDictionary(CurveIndex, hapticCurve);
+ }
+
+ ///
+ /// Updates the given curve's keyframe GameObjects to use either the active or inactive material, so that the developer
+ /// knows what keyframes they are editing.
+ ///
+ /// The curve index to update
+ /// If true, the material is set to the active material, otherwise the inactive material is used
+ public void UpdateCurveKeyFrameVisualization(int curveIndex, bool isActive)
+ {
+ if (bodyHitsPerCurve.ContainsKey(curveIndex))
+ {
+ for (int n = 0; n < bodyHitsPerCurve[curveIndex].Count; n++)
+ {
+ Collider collider = bodyHitsPerCurve[curveIndex][n].GetComponent();
+ collider.enabled = isActive;
+
+ Renderer renderer = bodyHitsPerCurve[curveIndex][n].GetComponent();
+ renderer.material = (isActive) ? activeHitMaterial : inactiveHitMaterial;
+ }
+ }
+ }
+
+ ///
+ /// Load a saved haptic pattern and set it to be the active pattern to work on
+ ///
+ /// The pattern to load
+ public void LoadPattern(ScriptableHapticPattern loadedPattern)
+ {
+ ResetPattern();
+
+ currentPattern = loadedPattern;
+
+ // Load each curve information from the pattern
+ for (int n = 0; n < loadedPattern.curveList.Count; n++)
+ {
+ bodyHitsPerCurve.Add(n, new List());
+
+ AddCurveToDictionary(n, loadedPattern.curveList[n]);
+
+ UpdateCurveKeyFrameVisualization(n, false);
+ }
+
+ // Make the first curve active
+ UpdateCurveKeyFrameVisualization(0, true);
+ }
+ #endregion
+
+ #region PatternManagementFunctions
+ private void ResetPattern()
+ {
+ // Go through each GameObject and destroy it
+ foreach (var bodyHitList in bodyHitsPerCurve)
+ {
+ for (int n = 0; n < bodyHitList.Value.Count; n++)
+ {
+ DestroyImmediate(bodyHitList.Value[n].gameObject);
+ }
+ }
+
+ // Empty the dictionary of all the values
+ bodyHitsPerCurve.Clear();
+
+ // Reset the index to 0
+ CurveIndex = 0;
+
+ currentPattern = null;
+ }
+
+ private void AddCurveToDictionary(int curveIndex, ScriptableHapticCurve curveToAdd)
+ {
+ if (curveToAdd != null)
+ {
+ // Go through each keyframe, save the value, and place the GO representation
+ for (int h = 0; h < curveToAdd.heightCurve.length; h++)
+ {
+ float hitHeight = curveToAdd.heightCurve[h].value;
+ float hitAngle = curveToAdd.angleCurve[h].value;
+
+ BodyHitUI currentHit = SpawnBodyHitGameObject(capsuleBodyCoordinate.CalculatePositionFromBodyCoordinateHit(new BodyCoordinateHit(hitHeight, hitAngle), true),
+ hitAngle,
+ hitHeight,
+ curveToAdd.heightCurve[h].time,
+ curveIndex,
+ curveToAdd.intensityCurve[h].value);
+
+ bodyHitsPerCurve[curveIndex].Add(currentHit);
+ }
+ }
+ }
+
+ private BodyHitUI SpawnBodyHitGameObject(Vector3 spawnPosition, float hitAngle, float hitHeight, float hitTime, int curveIndex, float intensity, bool isTemporary = false)
+ {
+ GameObject inflectionPoint = Instantiate(hitLocationPrefab, spawnPosition, Quaternion.identity, capsuleGO.transform);
+ inflectionPoint.hideFlags = HideFlags.HideInHierarchy;
+
+ BodyHitUI currentHit = inflectionPoint.GetComponent();
+ currentHit.SetValues(hitAngle,
+ hitHeight,
+ intensity,
+ hitTime,
+ HapticPattern.GetKeyCountForCurve(curveIndex) - 1,
+ curveIndex,
+ HapticPattern.curveList[curveIndex]);
+ currentHit.isTemporary = isTemporary;
+
+ return currentHit;
+ }
+
+ private void DrawCurrentCurvePath()
+ {
+ if (bodyHitsPerCurve.ContainsKey(CurveIndex))
+ {
+ if(bodyHitsPerCurve[CurveIndex].Count <= 1)
+ {
+ return;
+ }
+
+ // Reset the line for the current current
+ currentCurveLineRenderer.positionCount = 0;
+ currentCurveLineRenderer.positionCount = (bodyHitsPerCurve[CurveIndex].Count - 1) * hapticSettings.defaultCurveRenderingGranularity;
+
+ float endTime = currentPattern.curveList[CurveIndex].EndTime;
+ float timeSlice = endTime / currentCurveLineRenderer.positionCount;
+
+ // Use the curve itself to find the points around the collider
+ for (int n = 0; n < currentCurveLineRenderer.positionCount; n += hapticSettings.defaultCurveRenderingGranularity)
+ {
+ for(int h = 0; h < hapticSettings.defaultCurveRenderingGranularity; h++)
+ {
+ currentCurveLineRenderer.SetPosition(n+h, capsuleBodyCoordinate.CalculatePositionFromBodyCoordinateHit(currentPattern.curveList[CurveIndex].GetHitLocationAtTime((n+h) * timeSlice), true));
+ }
+ }
+
+ // Draw the final point
+ currentCurveLineRenderer.SetPosition(currentCurveLineRenderer.positionCount - 1, capsuleBodyCoordinate.CalculatePositionFromBodyCoordinateHit(currentPattern.curveList[CurveIndex].GetHitLocationAtTime(endTime), true));
+ }
+ }
+ #endregion
+
+ #region SceneManagement
+ private void OnGUIDelegate(SceneView sceneView)
+ {
+ // Keep the capsule selected and hide the transform gizmo
+ Selection.activeGameObject = capsuleGO;
+ Tools.current = Tool.None;
+ }
+
+ private void ReturnToPreviousScene()
+ {
+ if (!string.IsNullOrEmpty(previousScene))
+ {
+ EditorSceneManager.OpenScene(previousScene);
+ }
+ else
+ {
+ EditorApplication.delayCall += () =>
+ {
+ // If the previous scene was not a saved one, then return to a blank scene
+ EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
+ };
+ }
+ }
+
+ private void CleanUp()
+ {
+ if (setupComplete && isClosing)
+ {
+ SceneView.onSceneGUIDelegate -= OnGUIDelegate;
+ EditorApplication.playModeStateChanged -= EditorApplication_playModeStateChanged;
+
+ if (hapticSceneView != null)
+ {
+ hapticSceneView.Dispose();
+ hapticSceneView = null;
+ }
+
+ if (hitListener != null)
+ {
+ hitListener.BodyPartHit -= HitListener_BodyPartHit;
+ hitListener.Dispose();
+ hitListener = null;
+ }
+ }
+ }
+ #endregion
+
+ #region EventListeners
+ private void HitListener_BodyPartHit(object sender, BodyHitListener.HapticInformation e)
+ {
+ float hitTime;
+
+ if (HapticPattern.curveList[CurveIndex].heightCurve.length == 0)
+ {
+ hitTime = 0.0f;
+ }
+ else
+ {
+ hitTime = HapticPattern.GetCurveEndTime(CurveIndex) + hapticSettings.defaultTimeGranularity;
+ }
+
+ // Add the point to the pattern
+ HapticPattern.AddKey(CurveIndex, hitTime, e.bodyHitInfo, hapticSettings.defaultIntensity);
+
+ // Add BodyHit GO to the hit location so the user can interact with the point in the UI
+ BodyHitUI currentHit = SpawnBodyHitGameObject(e.worldHitLocation,
+ e.bodyHitInfo.hitAngle,
+ e.bodyHitInfo.hitHeight,
+ hitTime,
+ CurveIndex,
+ hapticSettings.defaultIntensity,
+ true);
+
+ bodyHitsPerCurve[CurveIndex].Add(currentHit);
+
+ // Update the line renderer
+ DrawCurrentCurvePath();
+ }
+
+ private void EditorApplication_playModeStateChanged(PlayModeStateChange state)
+ {
+ if (state == PlayModeStateChange.ExitingEditMode)
+ {
+ EditorApplication.isPlaying = false;
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+ private void Awake()
+ {
+ bodyHitsPerCurve = new Dictionary>();
+
+ // Don't allow Play Mode when this script is in the scene
+ if (EditorApplication.isPlaying)
+ {
+ EditorApplication.isPlaying = false;
+ }
+
+ hapticSettings = ScriptableHapticSettings.GetSettings();
+ }
+
+ private void Update()
+ {
+ if (setupComplete)
+ {
+ if (hapticSceneView == null)
+ {
+ Debug.LogError("Lost connection to the SceneView, please re-open the Haptic Pattern Creation window.", this);
+
+ isClosing = true;
+ }
+ }
+ }
+
+ private void OnDestroy()
+ {
+ CleanUp();
+ }
+ #endregion
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs.meta
new file mode 100644
index 0000000..144dfd9
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticPatternWindow.cs.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 8fb793e13bdc91540a307f89e5363cdf
+timeCreated: 1553805954
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences:
+ - hitLocationPrefab: {fileID: 1869474814193224, guid: d5a00861e7f46694596ab7fa221e9880,
+ type: 2}
+ - activeHitMaterial: {fileID: 2100000, guid: cfb9c0ad0f7cc3f489fe4a69ed117f38, type: 2}
+ - inactiveHitMaterial: {fileID: 2100000, guid: 5b923cd611d17a9419f5788d216210e3,
+ type: 2}
+ - capsuleMaterial: {fileID: 2100000, guid: 5969cc5b3b50cad4595ffacc3129c769, type: 2}
+ - lineRendererMaterial: {fileID: 2100000, guid: 8e0e7d5234ddbdc48829ca867689274d,
+ type: 2}
+ - lineRendererData: {fileID: 11400000, guid: 4b6ada9ca411ada48b621c9611310349, type: 2}
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs
new file mode 100644
index 0000000..d24bdd8
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs
@@ -0,0 +1,237 @@
+#if UNITY_EDITOR
+using UnityEngine;
+using UnityEditor;
+using UnityEditor.SceneManagement;
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Handles the In-Scene UI for creating a new pattern. Allows the user to load saved patterns or work on new ones.
+ /// From this class, the user is able to manage the curves that are attached to the pattern by either removing them,
+ /// adding a saved one, or starting on a new one. The class also passes the values that the user sets for the collision
+ /// resolution and timing information.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public sealed class HapticSceneViewGUI : IDisposable
+ {
+ #region PublicVariables
+ public HapticPatternWindow patternWindow;
+ #endregion
+
+ #region PrivateVariables
+ private string patternName;
+ private ScriptableHapticCurve curveToAdd;
+ private ScriptableHapticPattern patternToLoad;
+ private PatternCollisionResolution selectedCollisionResolution;
+ private int collisionResolutionIndex;
+ private PlaybackTiming selectedPlaybackTiming;
+ private float customPlaybackTiming;
+ private OffsetUse selectedOffsetUse;
+ private PatternOvershootResolution selectedHeightOvershoot;
+ private PatternOvershootResolution selectedAngleOvershoot;
+ private GUIStyle textLabelStyle;
+
+ private const float UI_SCREEN_WIDTH = 4.0f;
+ #endregion
+
+ #region HapticSceneMethods
+ public HapticSceneViewGUI()
+ {
+ SetUpRenderer();
+
+ CreateGUIStyles();
+ }
+
+ public void Dispose()
+ {
+ CleanUp();
+ }
+
+ public void SetUpRenderer()
+ {
+ // There should only be 1 delegate from this class at a time, so remove the event in case it already exists and this was called
+ SceneView.onSceneGUIDelegate -= RenderSceneGUI;
+
+ SceneView.onSceneGUIDelegate += RenderSceneGUI;
+ }
+
+ ///
+ /// Handles how to render the actual elements of the UI
+ ///
+ public void RenderSceneGUI(SceneView sceneview)
+ {
+ Handles.BeginGUI();
+
+ // Make a canvas that spans the entire height of the scene and a portion of the width
+ Rect canvasRect = new Rect(0, 0, Screen.width / UI_SCREEN_WIDTH, Screen.height);
+ GUILayout.BeginArea(canvasRect);
+
+ // Make the area behind the GUI a gray, slightly transparent canvas
+ EditorGUI.DrawRect(canvasRect, new Color(0.5f, 0.5f, 0.5f, 0.5f));
+
+ Rect verticleLayoutBox = EditorGUILayout.BeginVertical();
+ GUI.Box(verticleLayoutBox, GUIContent.none);
+
+ // Add header for loading/saving patterns
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox("Pattern Management", MessageType.None);
+
+ // Load a saved pattern
+ EditorGUILayout.LabelField("Load Saved Pattern:", textLabelStyle);
+ patternToLoad = EditorGUILayout.ObjectField(patternToLoad, typeof(ScriptableHapticPattern), false) as ScriptableHapticPattern;
+
+ if (patternToLoad != null)
+ {
+ if (GUILayout.Button("Load Pattern"))
+ {
+ LoadPattern();
+
+ patternToLoad = null;
+ }
+ }
+
+ // Save changes and return to previous scene
+ if (GUILayout.Button("Save and return"))
+ {
+ patternWindow.SavePattern(patternName, selectedCollisionResolution, collisionResolutionIndex, selectedPlaybackTiming, customPlaybackTiming, selectedOffsetUse, selectedHeightOvershoot, selectedAngleOvershoot);
+ }
+
+ // Save the background color to temporarily change the discard background to red to indicate the negative nature of the button
+ Color oldColor = GUI.backgroundColor;
+ GUI.backgroundColor = Color.red;
+
+ // Discard all the changes and return to previous scene
+ if (GUILayout.Button("Discard changes"))
+ {
+ bool discardResult = EditorUtility.DisplayDialog("Discard changes?",
+ "Are you sure you want to discard all changes made to this pattern?",
+ "Yes",
+ "Cancel");
+
+ if (discardResult)
+ {
+ patternWindow.DiscardChanges();
+ }
+ }
+
+ GUI.backgroundColor = oldColor;
+
+ // Add header for pattern settings
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox("Pattern Settings", MessageType.None);
+
+ // Prompt for pattern name which will become the file name
+ EditorGUILayout.LabelField("Pattern Name:", textLabelStyle);
+ patternName = EditorGUILayout.TextField(patternName);
+
+ // Prompt for how to handle intensity collisions
+ EditorGUILayout.LabelField("Collision Resolution:", textLabelStyle);
+ selectedCollisionResolution = (PatternCollisionResolution)EditorGUILayout.EnumPopup(selectedCollisionResolution);
+
+ // Prompt for the index of the curve to use if the resolution is set to CurvePriority
+ if (selectedCollisionResolution == PatternCollisionResolution.CurvePriority)
+ {
+ EditorGUILayout.LabelField("Curve Index:", textLabelStyle);
+ collisionResolutionIndex = EditorGUILayout.IntField(collisionResolutionIndex);
+ }
+
+ // Prompt for the playback timing on the pattern
+ EditorGUILayout.LabelField("Playback Timing:", textLabelStyle);
+ selectedPlaybackTiming = (PlaybackTiming)EditorGUILayout.EnumPopup(selectedPlaybackTiming);
+
+ // Prompt for custom playback timing if they have selected CustomPlayback as the option
+ if (selectedPlaybackTiming == PlaybackTiming.Custom)
+ {
+ EditorGUILayout.LabelField("Custom Playback Time:", textLabelStyle);
+ customPlaybackTiming = EditorGUILayout.FloatField(customPlaybackTiming);
+ }
+
+ // Prompt for offset use
+ EditorGUILayout.LabelField("Offset Use:", textLabelStyle);
+ selectedOffsetUse = (OffsetUse)EditorGUILayout.EnumPopup(selectedOffsetUse);
+
+ // Prompt for height overshoot
+ EditorGUILayout.LabelField("Height Overshoot Resolution:", textLabelStyle);
+ selectedHeightOvershoot = (PatternOvershootResolution)EditorGUILayout.EnumPopup(selectedHeightOvershoot);
+
+ // Prompt for angle overshoot
+ EditorGUILayout.LabelField("Angle Overshoot Resolution:", textLabelStyle);
+ selectedAngleOvershoot = (PatternOvershootResolution)EditorGUILayout.EnumPopup(selectedAngleOvershoot);
+
+ // Header for management curves
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox("Curve Management", MessageType.None);
+
+ // Build string list of attached curves
+ string[] curveNames = new string[patternWindow.HapticPattern.curveList.Count];
+
+ for (int n = 0; n < patternWindow.HapticPattern.curveList.Count; n++)
+ {
+ curveNames[n] = patternWindow.HapticPattern.curveList[n].ToString();
+ }
+
+ // Show list of curves on the pattern for the user to select
+ EditorGUILayout.LabelField("Current curve:", textLabelStyle);
+ patternWindow.CurveIndex = EditorGUILayout.Popup(patternWindow.CurveIndex, curveNames);
+
+ // Allow the user to add a new curve
+ if (GUILayout.Button("Add New Curve"))
+ {
+ patternWindow.AddNewCurve("Default");
+ }
+
+ if (GUILayout.Button("Remove Current Curve"))
+ {
+ patternWindow.RemoveCurrentCurve();
+ }
+
+ // Add selected curve to pattern button
+ EditorGUILayout.LabelField("Add Saved Curve:", textLabelStyle);
+ curveToAdd = EditorGUILayout.ObjectField(curveToAdd, typeof(ScriptableHapticCurve), false) as ScriptableHapticCurve;
+
+ if (curveToAdd != null)
+ {
+ if (GUILayout.Button("Add Curve"))
+ {
+ patternWindow.AddSavedCurve(curveToAdd);
+
+ curveToAdd = null;
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ GUILayout.EndArea();
+ Handles.EndGUI();
+ }
+
+ private void LoadPattern()
+ {
+ patternName = ScriptableObjectUtility.GetScriptableObjectFileName(patternToLoad);
+ selectedCollisionResolution = patternToLoad.collisionResolution;
+ collisionResolutionIndex = patternToLoad.curvePriorityIndex;
+ selectedPlaybackTiming = patternToLoad.playbackTiming;
+ customPlaybackTiming = patternToLoad.customPlaybackTiming;
+ selectedOffsetUse = patternToLoad.offsetUse;
+ selectedHeightOvershoot = patternToLoad.heightOvershootResolution;
+ selectedAngleOvershoot = patternToLoad.angleOvershootResolution;
+
+ patternWindow.LoadPattern(patternToLoad);
+ }
+
+ private void CreateGUIStyles()
+ {
+ textLabelStyle = new GUIStyle();
+ textLabelStyle.normal.textColor = Color.black;
+ }
+
+ private void CleanUp()
+ {
+ SceneView.onSceneGUIDelegate -= RenderSceneGUI;
+ }
+ #endregion
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs.meta
new file mode 100644
index 0000000..0879c8b
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticSceneViewGUI.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 658b9f4fc8ead2240b358d669ae12c5a
+timeCreated: 1554903371
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs
new file mode 100644
index 0000000..63826bb
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs
@@ -0,0 +1,77 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// Links to all the active Haptic Devices that are in the scene. When that haptic device plays, it will
+ /// display an indication of the location on the effected body part. This script assumes that the body
+ /// coordinates are located below it in the hierarchy.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public sealed class HapticVisualizer : MonoBehaviour
+ {
+ #region PublicVariables
+ public float timeToFadeOut = 1.0f;
+ public Mesh hapticPatternVisualMesh;
+ public Material hapticPatternVisualMaterial;
+ #endregion
+
+ #region PrivateVariables
+ private HapticManager manager;
+ private Dictionary bodyPartToCoordinate;
+
+ private const float MESH_SCALE = .05f;
+ #endregion
+
+ #region EventHandler
+ private void HapticDevice_HapticFeedbackPlayed(object sender, HapticFeedbackEventArgs e)
+ {
+ if (bodyPartToCoordinate.ContainsKey(e.bodyPart))
+ {
+ // Calculate the position of the hit
+ Vector3 hitPosition = bodyPartToCoordinate[e.bodyPart].CalculatePositionFromBodyCoordinateHit(e.hitLocation);
+
+ Matrix4x4 matrixTRS = new Matrix4x4();
+ matrixTRS.SetTRS(hitPosition, Quaternion.identity, new Vector3(MESH_SCALE, MESH_SCALE, MESH_SCALE));
+
+ Graphics.DrawMesh(hapticPatternVisualMesh, matrixTRS, hapticPatternVisualMaterial, 0);
+ }
+ }
+ #endregion
+
+ #region Unity Functions
+ void Start()
+ {
+ manager = FindObjectOfType();
+
+ // Hook into every device's event in the scene to know when they play a haptic pulse
+ foreach (HapticDevice hapticDevice in manager.GetSetOfActiveDevices())
+ {
+ hapticDevice.HapticFeedbackPlayed += HapticDevice_HapticFeedbackPlayed;
+ }
+
+ // Grab all the body coordinates below this script in the hierarchy and save a reference to it
+ bodyPartToCoordinate = new Dictionary();
+
+ foreach (BodyCoordinate bodyCoordinate in GetComponentsInChildren())
+ {
+ if(!bodyPartToCoordinate.ContainsKey(bodyCoordinate.attachedBody))
+ {
+ bodyPartToCoordinate.Add(bodyCoordinate.attachedBody, bodyCoordinate);
+ }
+ }
+ }
+
+ private void OnApplicationQuit()
+ {
+ foreach (HapticDevice hapticDevice in manager.GetSetOfActiveDevices())
+ {
+ hapticDevice.HapticFeedbackPlayed -= HapticDevice_HapticFeedbackPlayed;
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs.meta
new file mode 100644
index 0000000..6ee5d2f
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticVisualizer.cs.meta
@@ -0,0 +1,17 @@
+fileFormatVersion: 2
+guid: d5a4a905045b12a42a41413d4bef4b6c
+timeCreated: 1556032545
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences:
+ - hapticPatternVisualMesh: {fileID: 10207, guid: 0000000000000000e000000000000000,
+ type: 0}
+ - hapticPatternVisualMaterial: {fileID: 2100000, guid: 3d9809e611ea4f040aa4ba1c97679ff1,
+ type: 2}
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs
new file mode 100644
index 0000000..e4e9cd0
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs
@@ -0,0 +1,104 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace CharlesRiverAnalytics.Virtuoso.Haptic
+{
+ ///
+ /// In-Game UI overlay script for testing patterns. The developer must pass any haptic patterns they would like to
+ /// play to this script. When the game is played, the UI provides a list of body parts and a list of patterns and allows
+ /// for easy playing and testing of these patterns.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2019
+ ///
+ public class HapticsUI : MonoBehaviour
+ {
+ #region PublicVariables
+ public List availablePatterns;
+ public Dropdown patternDropdown;
+ public Dropdown bodyPartDropdown;
+ #endregion
+
+ #region PrivateVariables
+ private ScriptableHapticPattern selectedPattern;
+ private List bodyPartList;
+ private HumanBodyBones selectedBodyPart;
+ private HapticManager hapticManager;
+ #endregion
+
+ #region PublicAPI
+ ///
+ /// Updates the selected pattern from a dropdown menu
+ ///
+ /// The dropdown menu that has the list of available patterns
+ public void DropdownPatternSelection(Dropdown target)
+ {
+ selectedPattern = availablePatterns[target.value];
+ }
+
+ ///
+ /// Updates the selected body part from a downdown menu
+ ///
+ /// The dropdown menu that has a list of the body parts
+ public void DropdownBodyPartSelection(Dropdown target)
+ {
+ selectedBodyPart = bodyPartList[target.value];
+ }
+
+ ///
+ /// Plays the selected pattern on the selected body part.
+ ///
+ public void PlaySelectedPattern()
+ {
+ if(selectedPattern != null)
+ {
+ hapticManager?.PlayPattern(selectedBodyPart, selectedPattern);
+ }
+ }
+
+ ///
+ /// Plays the selected pattern on all body parts that are registered with the haptic manager.
+ ///
+ public void PlayOnAllBodyParts()
+ {
+ if(selectedPattern != null)
+ {
+ foreach(HumanBodyBones bodyPart in (HumanBodyBones[])Enum.GetValues(typeof(HumanBodyBones)))
+ {
+ hapticManager?.PlayPattern(bodyPart, selectedPattern);
+ }
+ }
+ }
+ #endregion
+
+ #region UIFunctions
+ private void SetDropdownOptions(Dropdown dropdown, List optionNames, bool clearDropdownFirst = false)
+ {
+ if(clearDropdownFirst)
+ {
+ dropdown.ClearOptions();
+ }
+
+ dropdown.AddOptions(optionNames);
+ }
+ #endregion
+
+ #region UnityFunctions
+ void Start()
+ {
+ hapticManager = FindObjectOfType();
+
+ bodyPartList = Enum.GetValues(typeof(HumanBodyBones)).Cast().ToList();
+
+ SetDropdownOptions(patternDropdown, availablePatterns.Select(P => P.name).ToList(), true);
+ SetDropdownOptions(bodyPartDropdown, bodyPartList.Select(P => P.ToString()).ToList(), true);
+
+ // Make sure the functions are invoked once so the pattern isnt' null
+ DropdownPatternSelection(patternDropdown);
+ DropdownBodyPartSelection(bodyPartDropdown);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs.meta b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs.meta
new file mode 100644
index 0000000..65b4226
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/HapticSDK/UI and Visualization/HapticsUI.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 41655ee12c386e54fa5b94ad661c26c4
+timeCreated: 1553197121
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas.meta b/Assets/VIRTUOSO/Scripts/InteractionAreas.meta
new file mode 100644
index 0000000..692d2dc
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 2a0fb7b95ec2e2d41935dbc6ae42668b
+folderAsset: yes
+timeCreated: 1527082463
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs b/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs
new file mode 100644
index 0000000..c4f56b7
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs
@@ -0,0 +1,216 @@
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// InteractionArea that requires the user to follow a path in 3D space. Like the multi-interaction area,
+ /// the children define the path that is needed to follow with the child ordering in the hierarchy determining
+ /// the real order. The children simply need to be InteractionAreas so that they are counted and can be 'checkpoints'
+ /// in the path.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class ChannelInteractionArea : MultiInteractionArea
+ {
+ #region PublicVariables
+ [Header("Channel Settings")]
+ [Tooltip("The ScriptableLineRenderer asset to define the visuals of the line. If left null, no line will be displayed.")]
+ public Scriptable.ScriptableLineRenderer lineRendererInfo;
+ [Tooltip("The radius of the path the user will have to follow.")]
+ public float pathRadius = 0.05f;
+ [Tooltip("The point on the game object that must remain in the channel interaction area at all times.")]
+ public Transform pointToCheck;
+ #endregion
+
+ #region ProtectedVariables
+ protected bool checkInsideCylinder;
+ protected float lengthSq;
+ protected float radiusSq;
+ protected GameObject interactableObject;
+ protected LineRenderer lineRender;
+ #endregion
+
+ #region UnityFunctions
+ protected override void Awake()
+ {
+ base.Awake();
+
+ enforceOrder = true;
+
+ radiusSq = Mathf.Pow(pathRadius, 2);
+ }
+
+ protected void OnEnable()
+ {
+ if(lineRendererInfo != null)
+ {
+ lineRender = gameObject.AddComponent();
+ lineRender.material = lineRendererInfo.lineMaterial;
+ lineRender.startWidth = lineRendererInfo.startLineWidth;
+ lineRender.endWidth = lineRendererInfo.endLineWidth;
+ lineRender.positionCount = childrenAreas.Count;
+
+ for(int n = 0; n < childrenAreas.Count; n++)
+ {
+ lineRender.SetPosition(n, childrenAreas[n].transform.position);
+ }
+ }
+
+ // Hook into enter events of the interaction areas
+ for (int n = 0; n < childrenAreas.Count; n++)
+ {
+ childrenAreas[n].ObjectEnteredInteractionArea += ChildEnterInteractionArea;
+ }
+
+ StartState();
+ }
+
+ protected void OnDisable()
+ {
+ if(lineRender != null)
+ {
+ Destroy(lineRender);
+ }
+
+ for (int n = 0; n < childrenAreas.Count; n++)
+ {
+ childrenAreas[n].ObjectEnteredInteractionArea -= ChildEnterInteractionArea;
+ }
+ }
+
+ protected override void Update()
+ {
+ base.Update();
+
+ // The user has started using the interaction area so it needs to keep checking to see if they are inside the path
+ if (checkInsideCylinder)
+ {
+ // If either of these statements are true, the user has left the channel interaction area, either they:
+ // a) left the interaction area and the current interaction object is null or
+ // b) the tracked point is outside of the cylinder
+ if (childrenAreas[completionCount].CurrentInteractionObject == null
+ && !PointInsideCylinder(childrenAreas[completionCount].transform.position,
+ childrenAreas[completionCount + 1].transform.position,
+ lengthSq,
+ radiusSq,
+ pointToCheck.position))
+ {
+ // No longer using the interaction area
+ checkInsideCylinder = false;
+
+ StartState();
+
+ OnObjectInterruptInteractionArea(SetInteractionAreaEvent(interactableObject));
+ }
+ }
+ }
+ #endregion
+
+ #region EventCalls
+ private void ChildEnterInteractionArea(object sender, InteractionAreaEventArgs interactionEvent)
+ {
+ checkInsideCylinder = true;
+
+ InteractionArea area = sender as InteractionArea;
+ interactableObject = interactionEvent.interactionObject;
+
+ // Keep track of which child you're on
+ completionCount = area.transform.GetSiblingIndex();
+ pointToCheck = interactableObject.transform.Find("Point");
+
+ // Start condition - Only want to send this once on the first visit
+ if (completionCount == 0)
+ {
+ MoveToNextCylinder();
+
+ OnObjectUsedInteractionArea(SetInteractionAreaEvent(interactableObject));
+ }
+ // End condition - Last IA in the children was reached
+ else if (completionCount == childrenAreas.Count - 1)
+ {
+ checkInsideCylinder = false;
+
+ StartState();
+
+ OnObjectFinishedInteractionArea(SetInteractionAreaEvent(interactableObject));
+ }
+ else
+ {
+ MoveToNextCylinder();
+ }
+ }
+ #endregion
+
+ #region ChannelFunctions
+ private void StartState()
+ {
+ SwitchChildren(0);
+ }
+
+ // Called when the user reaches the next interaction area in the list. Activates the next Interaction and gets the
+ // new distance between this interaction area and the next
+ private void MoveToNextCylinder()
+ {
+ // Activate next object so its interaction area can be triggered
+ SwitchChildren(completionCount + 1);
+
+ // Get the length of the next cylindrical section
+ lengthSq = Mathf.Pow(Vector3.Distance(childrenAreas[completionCount].transform.position, childrenAreas[completionCount + 1].transform.position), 2);
+ }
+
+ ///
+ /// Given some parameters of a cylinder and a test point, will return true if that given
+ /// point is inside the 3D space of the cylinder as defined by the two end points.
+ ///
+ /// Adopted from http://www.flipcode.com/archives/Fast_Point-In-Cylinder_Test.shtml
+ ///
+ /// First end point of the cylinder
+ /// Other end point of the cylinder
+ /// The squared length of the cylinder
+ /// The squared radius of the cylinder
+ /// The point to check if its inside the cylinder
+ ///
+ private bool PointInsideCylinder(Vector3 pt1, Vector3 pt2, float lengthsq, float radius_sq, Vector3 testpt)
+ {
+ // translate so pt1 is origin. Make vector from pt1 to pt2. Need for this is easily eliminated
+ Vector3 cylinderVector = pt2 - pt1;
+
+ // vector from pt1 to test point.
+ Vector3 vectorToPoint = testpt - pt1;
+
+ // Dot the d and pd vectors to see if point lies behind the cylinder cap at pt1.x, pt1.y, pt1.z
+ float dot = Vector3.Dot(cylinderVector, vectorToPoint);
+
+ // If dot is less than zero the point is behind the pt1 cap.
+ // If greater than the cylinder axis line segment length squared then the point is outside the other end cap at pt2.
+ if (dot < 0.0f || dot > lengthsq)
+ {
+ return false;
+ }
+ else
+ {
+ // Point lies within the parallel caps, so find distance squared from point to line, using the fact that
+ // sin ^2 + cos^2 = 1 the dot = cos() * |d||pd|, and cross*cross = sin^2 * |d|^2 * |pd|^2
+ // Careful: '*' means mult for scalars and dotproduct for vectors
+ // In short, where dist is pt distance to cyl axis:
+ // dist = sin( pd to d ) * |pd|
+ // distsq = dsq = (1 - cos^2( pd to d)) * |pd|^2
+ // dsq = ( 1 - (pd * d)^2 / (|pd|^2 * |d|^2) ) * |pd|^2
+ // dsq = pd * pd - dot * dot / lengthsq
+ // where lengthsq is d*d or |d|^2 that is passed into this function distance squared to the cylinder axis:
+
+ float dsq = Vector3.Dot(vectorToPoint, vectorToPoint) - dot * dot / lengthsq;
+
+ if (dsq > radius_sq)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs.meta b/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs.meta
new file mode 100644
index 0000000..0a8934c
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/ChannelInteractionArea.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 238dd7b23b107d1418bb8f524d38cd65
+timeCreated: 1533220858
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs b/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs
new file mode 100644
index 0000000..bf711e6
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs
@@ -0,0 +1,73 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// Interaction area that requires a given collider be completly consumed by the collider
+ /// this script is placed on. For example, a needle needs to be inserted into a person,
+ /// not just the tip of it, so you would use this script to verify they have completly
+ /// entered the correct zone.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class EngulfInteractionArea : InteractionArea
+ {
+ public Collider colliderToEngulf;
+
+ protected Collider myCollider;
+
+ #region UnityFunctions
+ protected override void Awake()
+ {
+ base.Awake();
+
+ myCollider = GetComponent();
+
+ if (colliderToEngulf == null)
+ {
+ Debug.LogWarning("No collider given to " + name + ". Disabling script");
+ enabled = false;
+ }
+ }
+
+ protected override void OnTriggerEnter(Collider collider)
+ {
+ base.OnTriggerEnter(collider);
+
+ if (currentInteractionObject != null && collider == colliderToEngulf)
+ {
+ // Use event
+ OnObjectUsedInteractionArea(SetInteractionAreaEvent(collider.gameObject));
+ }
+ }
+
+ protected override void OnTriggerStay(Collider collider)
+ {
+ base.OnTriggerStay(collider);
+
+ if (currentInteractionObject != null && collider == colliderToEngulf)
+ {
+ if (myCollider.bounds.Contains(colliderToEngulf.bounds.min) &&
+ myCollider.bounds.Contains(colliderToEngulf.bounds.max) &&
+ !currentInteractionObject.IsGrabbed())
+ {
+ // Finish event
+ OnObjectFinishedInteractionArea(SetInteractionAreaEvent(currentInteractionObject.gameObject));
+ }
+ }
+ }
+
+ protected override void OnTriggerExit(Collider collider)
+ {
+ if (currentInteractionObject != null)
+ {
+ OnObjectInterruptInteractionArea(SetInteractionAreaEvent(currentInteractionObject.gameObject));
+ }
+
+ base.OnTriggerExit(collider);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs.meta b/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs.meta
new file mode 100644
index 0000000..b387161
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/EngulfInteractionArea.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 9c6f15189dc6cc94b980d48e622917ed
+timeCreated: 1532552222
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs b/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs
new file mode 100644
index 0000000..2fbbc66
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs
@@ -0,0 +1,80 @@
+using System.Collections;
+using UnityEngine;
+using VRTK;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// InteractionArea that requires you to visit the area a given number of times. A visit could either be upon colliding it or
+ /// requiring the object to leave the area to count.
+ ///
+ /// When combined with the MultiInteractionArea and set to have a count of 1, this functions as a movement based interaction.
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public class EnterExitInteractionArea : InteractionArea
+ {
+ #region PublicVariables
+ [Tooltip("The number of times an object must enter and exit the interaction area.")]
+ public int enterExitCount = 1;
+ [Tooltip("When checked, the object counter will go up when the object is first entered. On uncheck, the object must leave the collider for it to increment.")]
+ public bool triggerOnEnter = true;
+ #endregion
+
+ #region PrivateVariables
+ private int interactionCounter = 0;
+ #endregion
+
+ #region InteractionAreaOverrides
+ public override void OnObjectEnteredInteractionArea(InteractionAreaEventArgs e)
+ {
+ base.OnObjectEnteredInteractionArea(e);
+
+ if (currentInteractionObject != null && e.interactionObject == currentInteractionObject.gameObject)
+ {
+ InteractionEnter(currentInteractionObject.gameObject);
+ }
+ }
+
+ public override void OnObjectExitedInteractionArea(InteractionAreaEventArgs e)
+ {
+ base.OnObjectExitedInteractionArea(e);
+
+ InteractionExit(e.interactionObject);
+ }
+ #endregion
+
+ #region EnterExitFunctions
+ private void InteractionEnter(GameObject objectEntered)
+ {
+ if (interactionCounter == 0)
+ {
+ OnObjectUsedInteractionArea(SetInteractionAreaEvent(objectEntered));
+ }
+
+ if (triggerOnEnter)
+ {
+ EnterExitCounter(objectEntered);
+ }
+ }
+
+ private void InteractionExit(GameObject objectExited)
+ {
+ if (!triggerOnEnter)
+ {
+ EnterExitCounter(objectExited);
+ }
+ }
+
+ private void EnterExitCounter(GameObject interactableObject)
+ {
+ interactionCounter++;
+
+ if (interactionCounter == enterExitCount)
+ {
+ OnObjectFinishedInteractionArea(SetInteractionAreaEvent(interactableObject));
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs.meta b/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs.meta
new file mode 100644
index 0000000..0705007
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/EnterExitInteractionArea.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 58ce9a8e4d7683c48911f82c55016a9c
+timeCreated: 1529082792
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs
new file mode 100644
index 0000000..45d07cb
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs
@@ -0,0 +1,307 @@
+using UnityEngine;
+using System.Collections.Generic;
+using VRTK;
+using System;
+using CharlesRiverAnalytics.Virtuoso.Utilities;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ #region EventPayload
+ // Event Payload
+ public delegate void InteractionAreaEventHandler(object sender, InteractionAreaEventArgs e);
+ #endregion
+
+ public enum InteractionTriggers
+ {
+ None,
+ OnEnter,
+ OnExit,
+ OnUse,
+ OnFinish,
+ OnInterrupt
+ }
+
+ ///
+ ///
+ /// Class that handles the interaction between the environment and a particular procedure. This class mainly handles the
+ /// general event handling and makes sure there is a valid GameObject to use the interaction area. No GameObject should
+ /// directly have this script, but use one of it's children since they implement the functionality for the
+ /// interaction type.
+ ///
+ /// For example, there can be an interaction area that requires an object be in the interaction area for a specific amount
+ /// of time.
+ ///
+ /// Based on VRTK_SnapDropZone
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ [System.Serializable]
+ public class InteractionArea : VirtuosoEvent
+ {
+ #region PublicVariables
+ [Tooltip("A specified VRTK_PolicyList to use to determine which interactable objects will be able to interact with this specific area.")]
+ public VRTK_PolicyList validObjectListPolicy;
+ #endregion
+
+ #region PublicProperties
+ public VRTK_InteractableObject CurrentInteractionObject
+ {
+ get
+ {
+ return currentInteractionObject;
+ }
+ }
+ #endregion
+
+ #region ProtectedVariables
+ protected List currentValidObjects = new List();
+ protected VRTK_InteractableObject currentInteractionObject = null;
+ protected bool interactionStarted = false;
+ #endregion
+
+ #region EventHandling
+ // Emitted when a valid interactable object enters the interaction area trigger collider.
+ public event InteractionAreaEventHandler ObjectEnteredInteractionArea;
+
+ // Emitted when a valid interactable object exists the interaction area trigger collider.
+ public event InteractionAreaEventHandler ObjectExitedInteractionArea;
+
+ // Emitted when an interactable object starts the interaction with the area.
+ public event InteractionAreaEventHandler ObjectUsedInteractionArea;
+
+ // Emitted when an interactable object finishes the interaction with the area.
+ public event InteractionAreaEventHandler ObjectFinishedInteractionArea;
+
+ // Emitted when an interactable object interrupts the user with the area
+ public event InteractionAreaEventHandler ObjectInterruptInteractionArea;
+
+ ///
+ /// Called when a valid object enters the collider for the InteractionArea.
+ ///
+ /// The event arguments that holds a reference to the InteractableObject.
+ public virtual void OnObjectEnteredInteractionArea(InteractionAreaEventArgs e)
+ {
+ if (ObjectEnteredInteractionArea != null)
+ {
+ ObjectEnteredInteractionArea(this, e);
+ }
+ }
+
+ ///
+ /// Called when the valid object leaves the InteractionArea.
+ ///
+ /// The event arguments that holds a reference to the InteractableObject.
+ public virtual void OnObjectExitedInteractionArea(InteractionAreaEventArgs e)
+ {
+ if (ObjectExitedInteractionArea != null)
+ {
+ ObjectExitedInteractionArea(this, e);
+ }
+ }
+
+ ///
+ /// Called when the interaction event has started in the InteractionArea.
+ ///
+ /// The event arguments that holds a reference to the InteractableObject.
+ public virtual void OnObjectUsedInteractionArea(InteractionAreaEventArgs e)
+ {
+ interactionStarted = true;
+
+ if (ObjectUsedInteractionArea != null)
+ {
+ ObjectUsedInteractionArea(this, e);
+ }
+ }
+
+ ///
+ /// Called at the end of the interaction event in the InteractionArea.
+ ///
+ /// The event arguments that holds a reference to the InteractableObject.
+ public virtual void OnObjectFinishedInteractionArea(InteractionAreaEventArgs e)
+ {
+ interactionStarted = false;
+
+ if (ObjectFinishedInteractionArea != null)
+ {
+ ObjectFinishedInteractionArea(this, e);
+ }
+ }
+
+ public virtual void OnObjectInterruptInteractionArea(InteractionAreaEventArgs e)
+ {
+ interactionStarted = false;
+
+ if (ObjectInterruptInteractionArea != null)
+ {
+ ObjectInterruptInteractionArea(this, e);
+ }
+ }
+
+ ///
+ /// Sets the given GameObject and returns the Arguments for an InteractableEvent. This method should be
+ /// called whenever using one of the 'On' Event Handleing methods.
+ ///
+ /// The GameObject that is triggering the event in the InteractionArea.
+ ///
+ public static InteractionAreaEventArgs SetInteractionAreaEvent(GameObject interactableObject)
+ {
+ VRTK_InteractableObject ioCheck = interactableObject.GetComponent();
+ bool interactableHasExtraArgs = false;
+
+ if (ioCheck != null)
+ {
+ interactableHasExtraArgs = ioCheck.HasExtraEventArgs;
+ }
+
+ InteractionAreaEventArgs e = new InteractionAreaEventArgs
+ {
+ interactionObject = interactableObject,
+ hasMoreReactionInfo = interactableHasExtraArgs
+ };
+
+ return e;
+ }
+
+ protected void SetUpInteractableObjectListener(VRTK_InteractableObject obj, bool state)
+ {
+ if (state)
+ {
+ ObjectEnteredInteractionArea += obj.InteractionAreaEntered;
+ ObjectExitedInteractionArea += obj.InteractionAreaExited;
+ ObjectUsedInteractionArea += obj.InteractionAreaUsed;
+ ObjectFinishedInteractionArea += obj.InteractionAreaFinished;
+ ObjectInterruptInteractionArea += obj.InteractionAreaInterrupted;
+ }
+ else
+ {
+ ObjectEnteredInteractionArea -= obj.InteractionAreaEntered;
+ ObjectExitedInteractionArea -= obj.InteractionAreaExited;
+ ObjectUsedInteractionArea -= obj.InteractionAreaUsed;
+ ObjectFinishedInteractionArea -= obj.InteractionAreaFinished;
+ ObjectInterruptInteractionArea -= obj.InteractionAreaInterrupted;
+ }
+ }
+ #endregion
+
+ #region UnityFunctions
+ // TODO Remove or refactor this code - allows for setting the goal area for the InteractionArea
+ /*protected virtual void OnEnable()
+ {
+ if (validObjectListPolicy && validObjectListPolicy.gameObjectList != null)
+ {
+ for (int n = 0; n < validObjectListPolicy.gameObjectList.Count; n++)
+ {
+ // TODO Fix when there are multiple IA for one object [VIRTUOSO-79]
+ if (validObjectListPolicy.gameObjectList[n] != null)
+ {
+ VRTK_InteractableObject interactable = validObjectListPolicy.gameObjectList[n].GetComponentInChildren();
+
+ if (interactable != null)
+ {
+ interactable.GoalInteractionArea = gameObject;
+ }
+ }
+ }
+ }
+ }*/
+
+ protected virtual void Awake()
+ {
+ // Check to make sure that the collider is set to be a trigger in order to recieve the right calls
+ if (GetComponent() != null)
+ {
+ GetComponent().isTrigger = true;
+ }
+ else
+ {
+ Debug.LogWarning("No collider found on " + name + ". Triggers will not be detected and events cannot be propogated.");
+ }
+ }
+
+ protected virtual void Update()
+ {
+ CheckCurrentValidObjectStillValid();
+ }
+
+ protected virtual void OnTriggerEnter(Collider collider)
+ {
+ VRTK_InteractableObject ioCheck = ValidInteractableObject(collider.gameObject);
+
+ if (ioCheck && ioCheck != currentInteractionObject)
+ {
+ currentInteractionObject = ioCheck;
+
+ SetUpInteractableObjectListener(ioCheck, true);
+
+ OnObjectEnteredInteractionArea(SetInteractionAreaEvent(currentInteractionObject.gameObject));
+ }
+ }
+
+ protected virtual void OnTriggerStay(Collider collider)
+ {
+ //Do sanity check to see if there should be an object
+ if (ValidInteractableObject(collider.gameObject))
+ {
+ AddCurrentValidObject(collider.gameObject);
+ }
+ }
+
+ protected virtual void OnTriggerExit(Collider collider)
+ {
+ VRTK_InteractableObject ioCheck = ValidInteractableObject(collider.gameObject);
+
+ if (ioCheck)
+ {
+ OnObjectExitedInteractionArea(SetInteractionAreaEvent(ioCheck.gameObject));
+
+ currentInteractionObject = null;
+
+ SetUpInteractableObjectListener(ioCheck, false);
+ }
+ }
+ #endregion
+
+ #region ObjectChecking
+ protected virtual VRTK_InteractableObject ValidInteractableObject(GameObject checkObject)
+ {
+ var currentInteractableObject = checkObject.GetComponentInParent();
+ return (currentInteractableObject != null && !VRTK_PolicyList.Check(currentInteractableObject.gameObject, validObjectListPolicy) ? currentInteractableObject : null);
+ }
+
+ protected virtual void CheckCurrentValidObjectStillValid()
+ {
+ //If there is a current valid snap object
+ for (int i = 0; i < currentValidObjects.Count; i++)
+ {
+ var currentIOCheck = currentValidObjects[i].GetComponentInParent();
+
+ if (currentIOCheck != null /*&& currentIOCheck.StoredInteractionArea != null && currentIOCheck.StoredInteractionArea != gameObject*/)
+ {
+ RemoveCurrentValidObject(currentValidObjects[i]);
+ }
+ }
+ }
+
+ protected virtual void AddCurrentValidObject(GameObject givenObject)
+ {
+ if (!currentValidObjects.Contains(givenObject))
+ {
+ currentValidObjects.Add(givenObject);
+ }
+ }
+
+ protected virtual void RemoveCurrentValidObject(GameObject givenObject)
+ {
+ if (currentValidObjects.Contains(givenObject))
+ {
+ currentValidObjects.Remove(givenObject);
+
+ if (currentValidObjects.Count == 0)
+ {
+ interactionStarted = false;
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs.meta b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs.meta
new file mode 100644
index 0000000..331d522
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 81be2159e26d1b847a5cfcb7d5dfa568
+timeCreated: 1526407568
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea_UnityEvents.cs b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea_UnityEvents.cs
new file mode 100644
index 0000000..e94e840
--- /dev/null
+++ b/Assets/VIRTUOSO/Scripts/InteractionAreas/InteractionArea_UnityEvents.cs
@@ -0,0 +1,77 @@
+using UnityEngine.Events;
+using VRTK.UnityEventHelper;
+using System;
+
+namespace CharlesRiverAnalytics.Virtuoso.InteractionAreas
+{
+ ///
+ /// Allows the user to specify event functions within the editor or use the AddListener function
+ /// to create reactions to InteractionArea events. This class must be attached to a GameObject
+ /// that also has the InteractionArea (or child)
+ /// attached to it.
+ ///
+ /// Based on VRTK_UnityEvents
+ ///
+ /// Written by: Nicolas Herrera (nherrera@cra.com), 2018
+ ///
+ public sealed class InteractionArea_UnityEvents : VRTK_UnityEvents
+ {
+ #region PublicVariables
+ [Serializable]
+ public sealed class InteractionAreaEvent : UnityEvent