void Awake() { uitTimer = transform.Find("UITimer_Text").GetComponent <TextMeshProUGUI>(); tmpSodas = transform.Find("TMPSodas_Text").GetComponent <TextMeshProUGUI>(); sodasKeycap = transform.Find("TMPSodas_Text/SodaKeycap").GetComponent <Keycap>(); tmpTowels = transform.Find("TMPTowels_Text").GetComponent <TextMeshProUGUI>(); towelsKeycap = transform.Find("TMPTowels_Text/TowelKeycap").GetComponent <Keycap>(); warpKeycap = transform.Find("TMPWarp_Text/WarpKeycap").GetComponent <Keycap>(); }
void Update() { float currentVelocity = Vector3.Distance(ourTransform.position, previousPos); //If object is moving fast enough to possibly clip through objects if (currentVelocity > minimumVelocity) { Vector3 center = ourTransform.position + colliderOffset; Vector3 previousCenter = previousPos + colliderOffset; //For each edge, draw a ray between previous edge pos and current edge pos foreach (var edgeOffset in colliderEdgeOffsets) { Vector3 edge = center + edgeOffset; Vector3 previousEdge = previousCenter + edgeOffset; bool hitKeycap = false; RaycastHit[] hits = Physics.RaycastAll(previousEdge, edge - previousEdge, Vector3.Distance(edge, previousEdge)); foreach (var hit in hits) { //Find keycap component Keycap keycap = hit.collider.GetComponent <Keycap>(); if (keycap == null) { continue; } Transform keycapTransform = keycap.transform; //Update keycap position keycapTransform.position = ourTransform.position + keycapTransform.TransformDirection(new Vector3(0, -colliderRadius)) + keycapTransform.TransformVector(new Vector3(0, -keycap.ColliderValidationOffset, 0)); keycapTransform.localPosition = new Vector3(0, keycapTransform.localPosition.y, 0); hitKeycap = true; break; } if (hitKeycap) { break; } } } previousPos = transform.position; }
void Awake() { //Find and cache keycap transform foreach (Transform child in transform) { Keycap keycap = child.GetComponent <Keycap>(); if (keycap != null) { keycapTransform = keycap.transform; } } UpdateListeners(); }
public void TestKeycap() { var keys = new HashSet <byte>(new[] { (byte)'*', (byte)'#', (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', (byte)'6', (byte)'7', (byte)'8', (byte)'9', }); var count = 0; foreach (var s in Data.RgiEmojiSequenceList) { if (Keycap.Create(s) is { Value: not 0 } key) { ++count; Assert.Contains(key.Value, keys); } } Assert.Equal(12, count); }