using System.Collections.Generic; using UnityEditor; using UnityEngine; [RequireComponent(typeof(BoxCollider))] [ExecuteAlways] public class FragmentRequire : MonoBehaviour { public List requiredScenes = new(); private BoxCollider _boxCollider; private void Awake() { _boxCollider = GetComponent(); _boxCollider.isTrigger = true; } private void OnTriggerEnter(Collider other) { Debug.Log("Sync!"); var sceneName = new List(); foreach (SceneAsset sceneAsset in requiredScenes) sceneName.Add(sceneAsset.name); FragmentManager.UpdateSceneRequirements(sceneName); } private void Update() { _boxCollider.size = Vector3.one; } private void OnDrawGizmos() { if (_boxCollider == null) return; var cs = _boxCollider.size; var ts = Vector3.one; var size = new Vector3(cs.x * ts.x, cs.y * ts.y, cs.z * ts.z); Gizmos.matrix = transform.localToWorldMatrix; Gizmos.color = new Color(1f, 0.18f, 0.29f); Gizmos.DrawWireCube(_boxCollider.center, size); } private void OnDrawGizmosSelected() { if (_boxCollider == null) return; var cs = _boxCollider.size; var ts = Vector3.one; var size = new Vector3(cs.x * ts.x, cs.y * ts.y, cs.z * ts.z); Gizmos.matrix = transform.localToWorldMatrix; Gizmos.color = new Color(1f, 0.18f, 0.29f, 0.4f); Gizmos.DrawCube(_boxCollider.center, size); } }