From 776c68736d84e8faf212cd7002eb3091a4a80e17 Mon Sep 17 00:00:00 2001 From: Ranno Samuel Adson Date: Wed, 15 Jan 2025 21:44:46 +0200 Subject: [PATCH] constructed entryway for skywalk --- .../Menu Sprites/YouAreHere-Circle.png | 3 + .../Menu Sprites/YouAreHere-Circle.png.meta | 148 +++++ .../Prefabs/Menu Sprites/YouAreHere-Cone.png | 3 + .../Menu Sprites/YouAreHere-Cone.png.meta | 148 +++++ .../Scripts/Floor Button Visualizer.cs | 33 +- .../Prefabs/Scripts/Menu Reference.cs | 19 + .../Prefabs/Scripts/Menu Reference.cs.meta | 11 + .../Prefabs/Scripts/Menu Teleport Button.cs | 48 +- .../NewHandPresence/Prefabs/Scripts/Menu.cs | 150 ++++- .../Scripts/Teleport Location Collider.cs | 48 ++ .../Teleport Location Collider.cs.meta | 11 + .../Prefabs/Teleport Button.prefab | 5 +- .../NewHandPresence/Prefabs/XR Origin.prefab | 593 ++++++++++++++++-- .../_PROJECT/Scenes/DeltaBuilding_base.unity | 4 +- 14 files changed, 1136 insertions(+), 88 deletions(-) create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png.meta create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png.meta create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs.meta create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Teleport Location Collider.cs create mode 100644 Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Teleport Location Collider.cs.meta diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png new file mode 100644 index 00000000..a8cef087 --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78bafd0c84c67a6469b185978bec56cf0cb375c8008f664bb26c55f517f19fea +size 4867 diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png.meta b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png.meta new file mode 100644 index 00000000..38624919 --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Circle.png.meta @@ -0,0 +1,148 @@ +fileFormatVersion: 2 +guid: b3d75537053a96f4299df3da167c81e2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png new file mode 100644 index 00000000..fbfe368f --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6099e828e2d3f8846658001aba491948928f840a0c2a7ad5fd5cd84200c4125 +size 12345 diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png.meta b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png.meta new file mode 100644 index 00000000..111f66f8 --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Menu Sprites/YouAreHere-Cone.png.meta @@ -0,0 +1,148 @@ +fileFormatVersion: 2 +guid: 93f5777f7ea9ea848b00266cb1468b7d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs index 4b32cbc3..7d950e43 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs @@ -7,9 +7,7 @@ public class FloorButtonVisualizer : MonoBehaviour { public Sprite InactiveSprite; public Sprite ActiveSprite; - public float FloorUpperCoordiantes; - public float FloorLowerCoordiantes; - private bool activeState = true; + public bool ActiveState; private Image buttonImage; // Start is called before the first frame update void Start() @@ -17,25 +15,16 @@ public class FloorButtonVisualizer : MonoBehaviour buttonImage = gameObject.GetComponent(); } - // Update is called once per frame - void Update() + public void Activate() { - float height = gameObject.transform.position.y; - if (height < FloorUpperCoordiantes && height > FloorLowerCoordiantes) - { - if (!activeState) { - activeState = true; - buttonImage.sprite = ActiveSprite; - } - - } - else - { - if (activeState) - { - activeState = false; - buttonImage.sprite = InactiveSprite; - } - } + this.ActiveState = true; + buttonImage.sprite = ActiveSprite; + //Debug.Log("Floorbutton of " + gameObject.name + " activated"); + } + public void Deactivate() + { + this.ActiveState = false; + buttonImage.sprite = InactiveSprite; + //Debug.Log("Floorbutton of " + gameObject.name + " deactivated"); } } diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs new file mode 100644 index 00000000..9aafd001 --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MenuReference : MonoBehaviour +{ + public List buttons; + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs.meta b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs.meta new file mode 100644 index 00000000..d1825e9f --- /dev/null +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Reference.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10d4b92fb83665e409f8d654c0a3295c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs index 68914aee..f5b96d97 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using Unity.XR.CoreUtils; using UnityEngine; +using UnityEngine.Rendering; using UnityEngine.UI; using UnityEngine.XR.Interaction.Toolkit; @@ -25,34 +26,63 @@ public class MenuTeleportButton : MonoBehaviour button.onClick.AddListener(TeleportPlayer); TeleportLocation[] locations = FindObjectsOfType(); // Fetches all teleport locations from scene. - Debug.Log("The amount of teleport locations is " + locations.Length); + //Debug.Log("The amount of teleport locations is " + locations.Length); foreach (TeleportLocation location in locations) // Finds the target. { if (location.Name.Equals(TargetName)) { target = location; - Debug.Log("Teleport target of " + target.Name + " found."); + //Debug.Log("Teleport target of " + target.Name + " found."); + } + } + if (target == null) Debug.Log("Teleport target of " + TargetName + " not found."); + } + + public void SetStateSelected() + { + if (button != null) + { + if (HoverSprite != null) + { + button.targetGraphic.GetComponent().sprite = HoverSprite; } } } - - void Update() + public void SetStateDefault() { - + // Refresh the button state. + button.interactable = false; + button.interactable = true; + if (NormalSprite != null) + { + button.targetGraphic.GetComponent().sprite = NormalSprite; + } + } - private void TeleportPlayer() { - Debug.Log("Teleport button clicked"); + //Debug.Log("Teleport button clicked"); + if (target != null && Player != null && Player.Camera != null) { - // Teleport the XR Origin to the specified coordinates. Player.transform.position = target.transform.position; - Player.Camera.transform.rotation = target.transform.rotation; + // Calculate the rotation offset needed for the player + Vector3 targetEulerAngles = target.transform.rotation.eulerAngles; + Vector3 currentCameraEulerAngles = Player.Camera.transform.rotation.eulerAngles; + + // Determine the rotation delta around the Y-axis + float rotationDeltaY = targetEulerAngles.y - currentCameraEulerAngles.y; + + // Apply the rotation delta to the XR Origin + Player.transform.Rotate(0, rotationDeltaY, 0, Space.World); + + // Refresh the button state. + button.interactable = false; + button.interactable = true; } } } diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu.cs index 3c286b52..de59612d 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; +using UnityEngine.InputSystem.LowLevel; using UnityEngine.UI; public class Menu : MonoBehaviour @@ -10,19 +11,29 @@ public class Menu : MonoBehaviour public GameObject MenuRotator; public GameObject Floor1Panel; public GameObject Floor2Panel; - public Button Floor1Button; - public Button Floor2Button; + public FloorButtonVisualizer Floor1Button; + public FloorButtonVisualizer Floor2Button; public Camera Camera; - public Image Playericon; + public Image PlayericonFloor1; + public Image PlayericonFloor2; + public GameObject PlayericonFloor1Parent; + public GameObject PlayericonFloor2Parent; + public InputActionReference openMenuAction; private Canvas canvas; - public Vector2 rotatedPlayerPos = new Vector2(); - public float worldToMapAngle = 130.0f; - public Vector2 VR_P1 = new Vector2(-77.4f, 10.1f); // - 71.2f (alumine punkt) - public Vector2 VR_P2 = new Vector2(95.7f, -82.8f); - public Vector2 IMG_P1 = new Vector2(-387.2f, 193.1f); // - public Vector2 IMG_P2 = new Vector2(389.7f, -221.4f); // + // Values for setting the position of the player marker. Do not touch them without great cause. + private Vector2 rotatedPlayerPos = new Vector2(); + private float worldToMapAngle = 130.0f; + private Vector2 VR_P1 = new Vector2(-77.4f, 10.1f); // - 71.2f (alumine punkt) + private Vector2 VR_P2 = new Vector2(95.7f, -82.8f); + private Vector2 IMG_P1 = new Vector2(-387.2f, 193.1f); // + private Vector2 IMG_P2 = new Vector2(389.7f, -221.4f); // + + protected static float cameraToMapIconRotationOffset = -50; + private float floor2UpperLimit = 9; + private float floorsMidpointLimit = 2.5f; + private float floor1LowerLimit = -5; private void Awake() { @@ -52,8 +63,8 @@ public class Menu : MonoBehaviour // Start is called before the first frame update void Start() { - Floor1Button.onClick.AddListener(DisplayFloor1); - Floor2Button.onClick.AddListener(DisplayFloor2); + Floor1Button.GetComponent