fix: sync the prototype

This commit is contained in:
Pierre Ryssen
2026-03-30 18:01:33 +02:00
parent 175162fccf
commit fcb0f813dd
19 changed files with 156845 additions and 14766 deletions

View File

@@ -55,7 +55,8 @@ public class ButtonSequenceDoorPuzzle : MonoBehaviour
if (button == null)
continue;
UnityAction action = () => OnButtonPressed(i);
int buttonIndex = i;
UnityAction action = () => OnButtonPressed(buttonIndex);
m_cachedListeners[i] = action;
button.OnInteract.AddListener(action);
}

View File

@@ -20,7 +20,6 @@ public class PressurePlateButton : MonoBehaviour
public UnityEvent OnReleased;
private readonly HashSet<Collider> m_validCollidersOnPlate = new HashSet<Collider>();
private readonly HashSet<Collider> m_stayedThisPhysicsFrame = new HashSet<Collider>();
private bool m_isPressed;
private void Reset()
@@ -43,16 +42,8 @@ public class PressurePlateButton : MonoBehaviour
}
}
private void OnTriggerStay(Collider other)
{
if (IsValidActivator(other))
m_stayedThisPhysicsFrame.Add(other);
}
private void OnTriggerExit(Collider other)
{
m_stayedThisPhysicsFrame.Remove(other);
if (!m_validCollidersOnPlate.Remove(other))
return;
@@ -63,26 +54,6 @@ public class PressurePlateButton : MonoBehaviour
}
}
private void FixedUpdate()
{
if (m_validCollidersOnPlate.Count == 0)
{
m_stayedThisPhysicsFrame.Clear();
return;
}
m_validCollidersOnPlate.RemoveWhere(c => c == null || !c.enabled || !c.gameObject.activeInHierarchy);
m_validCollidersOnPlate.IntersectWith(m_stayedThisPhysicsFrame);
m_stayedThisPhysicsFrame.Clear();
if (m_validCollidersOnPlate.Count == 0 && m_isPressed)
{
m_isPressed = false;
OnReleased?.Invoke();
}
}
private bool IsValidActivator(Collider other)
{
if (((1 << other.gameObject.layer) & detectionMask) == 0)

View File

@@ -7,7 +7,7 @@ public class SlidingDoor : MonoBehaviour
public enum SlideDirection { Positive = 1, Negative = -1 }
[Header("Slide Settings")]
[Tooltip("Axis in parent space (or world space if no parent) the door slides along.")]
[Tooltip("Local axis the door slides along.")]
[SerializeField] private SlideAxis axis = SlideAxis.X;
[Tooltip("Which way along the axis the door opens.")]
@@ -36,7 +36,7 @@ public class SlidingDoor : MonoBehaviour
private void Awake()
{
m_closedPos = transform.localPosition;
m_openPos = m_closedPos + GetParentSpaceSlideVector() * slideDistance;
m_openPos = m_closedPos + GetSlideVector() * slideDistance;
if (startOpen)
{
@@ -86,7 +86,7 @@ public class SlidingDoor : MonoBehaviour
Open();
}
private Vector3 GetParentSpaceSlideVector()
private Vector3 GetSlideVector()
{
float sign = (float)direction;
return axis switch
@@ -98,19 +98,14 @@ public class SlidingDoor : MonoBehaviour
};
}
private Vector3 GetWorldSpaceSlideVector()
{
return transform.parent != null
? transform.parent.TransformDirection(GetParentSpaceSlideVector()).normalized
: GetParentSpaceSlideVector().normalized;
}
#if UNITY_EDITOR
private void OnDrawGizmos()
{
Vector3 worldClosed = transform.position;
Vector3 worldClosed = transform.parent != null
? transform.parent.TransformPoint(transform.localPosition)
: transform.position;
Vector3 slideVec = GetWorldSpaceSlideVector() * slideDistance;
Vector3 slideVec = transform.TransformDirection(GetSlideVector()) * slideDistance;
Gizmos.color = Color.cyan;
Gizmos.DrawLine(worldClosed, worldClosed + slideVec);
Gizmos.DrawWireSphere(worldClosed + slideVec, 0.08f);