using Simulator.Data; using Simulator.Model; using Unity.VisualScripting; using UnityEngine; using UnityEngine.EventSystems; using UVC.Data.Core; public enum ComponentType { Source, Sink, Rack, Queue, ASRS, RobotArm } public class ComponentBase : MonoBehaviour,IPointerClickHandler { protected ComponentDataBase data; protected ModelDataBase modelData; public ComponentType componentType; public void SetPosition() { transform.position = new Vector3(data.physical.position.x, data.physical.position.z, -data.physical.position.y); } public virtual void GetModelData(DataObject modelData) { } public virtual void DecreaseEntity(Entity entity) { } protected void FitCollider() { var renderers = GetComponentsInChildren(); if (renderers.Length == 0) return; Bounds bounds = renderers[0].bounds; foreach (var r in renderers) bounds.Encapsulate(r.bounds); BoxCollider collider = GetComponent(); if (!collider) collider = gameObject.AddComponent(); collider.center = transform.InverseTransformPoint(bounds.center); collider.size = transform.InverseTransformVector(bounds.size); collider.size = new Vector3(Mathf.Abs(collider.size.x), Mathf.Abs(collider.size.y), Mathf.Abs(collider.size.z)); collider.isTrigger = true; } public void OnPointerClick(PointerEventData eventData) { Debug.Log(componentType); } }