From 62c314a490567d50d9bb043817cef3852ba845ae Mon Sep 17 00:00:00 2001 From: Lukas Van Rossem Date: Wed, 8 Mar 2023 23:08:26 +0000 Subject: [PATCH] Resolve WES-62 "Spellingbee webcam" --- Assets/SpellingBee/Scenes/Game.unity | 149 +++++++++++++++++- .../SpellingBee/Scripts/SpellingBeeWebcam.cs | 77 +++++++++ .../Scripts/SpellingBeeWebcam.cs.meta | 11 ++ 3 files changed, 231 insertions(+), 6 deletions(-) create mode 100644 Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs create mode 100644 Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs.meta diff --git a/Assets/SpellingBee/Scenes/Game.unity b/Assets/SpellingBee/Scenes/Game.unity index b11e504..e957db6 100644 --- a/Assets/SpellingBee/Scenes/Game.unity +++ b/Assets/SpellingBee/Scenes/Game.unity @@ -275,6 +275,80 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &588634505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 588634506} + - component: {fileID: 588634508} + - component: {fileID: 588634507} + m_Layer: 5 + m_Name: Webcam-bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &588634506 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588634505} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1537631144} + m_Father: {fileID: 906197777} + 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: -689, y: 82} + m_SizeDelta: {x: 464.2643, y: 449.3374} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &588634507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588634505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 60bb0835fc4bbb043b9b3d8ef48f96a8, type: 2} + m_UVRect: + serializedVersion: 2 + x: 1 + y: 0 + width: -1 + height: 1 +--- !u!222 &588634508 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588634505} + m_CullTransparentMesh: 1 --- !u!1001 &667202412 PrefabInstance: m_ObjectHideFlags: 0 @@ -282,6 +356,22 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 906197777} m_Modifications: + - target: {fileID: 8299246693487308512, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 8299246693487308512, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1537631145} + - target: {fileID: 8299246693487308512, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: LoadScene + objectReference: {fileID: 0} + - target: {fileID: 8299246693487308512, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: SpellingBeeWebcam, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 8299246693487308512, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument value: SpellingBee/Scenes/ThemeSelection @@ -300,7 +390,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8299246693487308515, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} propertyPath: m_RootOrder - value: 5 + value: 6 objectReference: {fileID: 0} - target: {fileID: 8299246693487308515, guid: 3bccdf365a4fbea4d8fa1aa461d3dc5c, type: 3} propertyPath: m_AnchorMax.x @@ -416,7 +506,7 @@ RectTransform: - {fileID: 978093275} - {fileID: 1346891277} m_Father: {fileID: 906197777} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -647,6 +737,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 588634506} - {fileID: 1338727893} - {fileID: 1346005056} - {fileID: 2029045140} @@ -1217,7 +1308,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 906197777} - m_RootOrder: 0 + 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} @@ -1254,7 +1345,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 906197777} - m_RootOrder: 1 + 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} @@ -1554,6 +1645,52 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1502459768} m_CullTransparentMesh: 1 +--- !u!1 &1537631143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1537631144} + - component: {fileID: 1537631145} + m_Layer: 0 + m_Name: Webcam-controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1537631144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537631143} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -271, y: -622, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 588634506} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1537631145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537631143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 98f2ddd1188ed310e8733106251729b6, type: 3} + m_Name: + m_EditorClassIdentifier: + display: {fileID: 588634507} + dynamic: {fileID: 0} --- !u!1 &1768150802 GameObject: m_ObjectHideFlags: 0 @@ -1943,7 +2080,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 906197777} - m_RootOrder: 3 + 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} @@ -2134,7 +2271,7 @@ RectTransform: m_Children: - {fileID: 1926745378} m_Father: {fileID: 906197777} - m_RootOrder: 2 + 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} diff --git a/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs b/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs new file mode 100644 index 0000000..b2964ce --- /dev/null +++ b/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; +using TMPro; + +public class SpellingBeeWebcam : MonoBehaviour +{ + int camdex = 0; + WebCamTexture tex; + + public RawImage display; + public TextMeshProUGUI dynamic; + + void Awake(){ + //popup.SetActive(false); + + WebCamDevice device = WebCamTexture.devices[camdex]; + tex = new WebCamTexture(device.name); + display.texture = tex; + + tex.Play(); + } + + public void SwapCam() + { + if (WebCamTexture.devices.Length > 0) + { + // Stop the old camera + display.texture = null; + tex.Stop(); + tex = null; + + // Find the new camera + camdex += 1; + camdex %= WebCamTexture.devices.Length; + + // Start the new camera + WebCamDevice device = WebCamTexture.devices[camdex]; + tex = new WebCamTexture(device.name); + display.texture = tex; + + tex.Play(); + } + } + + // Scene changing is implemented here to avoid problems with webcam + public void LoadScene(string sceneName) + { + display.texture = null; + tex.Stop(); + tex = null; + + SceneManager.LoadScene(sceneName); + } + /* + public void Show_feedback(){ + if(popup.activeSelf){ + dynamic.text = ""; + popup.SetActive(false); + return; + } + double index = UnityEngine.Random.value; + if(index < 0.5){ + dynamic.text = "Poor"; + } + else if(index > 0.8){ + dynamic.text = "Excellent"; + } + else{ + dynamic.text = "Good"; + } + popup.SetActive(true); + } + */ +} diff --git a/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs.meta b/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs.meta new file mode 100644 index 0000000..386d1bf --- /dev/null +++ b/Assets/SpellingBee/Scripts/SpellingBeeWebcam.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98f2ddd1188ed310e8733106251729b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: