using System.Collections.Generic;
using UnityEngine;
public enum PlaneAxis
{
XZ = 0, // Horizontal plane (Y = 0)
XY = 1, // Front plane (Z = 0)
YZ = 2 // Side plane (X = 0)
}
[System.Serializable]
public class VirtualPlane
{
public PlaneAxis planeAxis;
public GameObject canvasGrid; // The Canvas with grid visual
[HideInInspector]
public GameObject colliderObject; // The collider (generated dynamically)
}
public class CanvasVirtualPlatformManager : MonoBehaviour
{
private static CanvasVirtualPlatformManager instance;
[Header("Plane Configurations")]
[SerializeField] private VirtualPlane[] virtualPlanes;
[Header("Collider Settings")]
[SerializeField] private float colliderThickness = 0.1f;
[SerializeField] private string colliderLayer = "World";
[Header("Settings")]
[SerializeField] private PlaneAxis currentPlane = PlaneAxis.XZ;
[SerializeField] private bool platformVisible = true;
private void Awake()
{
if (instance == null) instance = this;
else Destroy(this.gameObject);
}
public static CanvasVirtualPlatformManager getInstance() => instance;
private void Start()
{
GenerateColliders();
UpdatePlaneVisibility();
}
///
/// Generate colliders for all planes based on their canvas sizes
///
private void GenerateColliders()
{
foreach (var plane in virtualPlanes)
{
if (plane.canvasGrid == null) continue;
// Get the canvas component
Canvas canvas = plane.canvasGrid.GetComponent