using Spine.Unity; using Unity.VisualScripting; using UnityEngine; namespace DDD { public class RestaurantEnvironment : MonoBehaviour { private RestaurantEnvironmentData _restaurantEnvironmentData; private Collider _collider; private Transform _visualLook; private Renderer _renderer; public async void Initialize(RestaurantEnvironmentData data) { await DataManager.Instance.WaitUntilInitialized(); EnvironmentData environmentData = DataManager.Instance.EnvironmentDataSo.GetDataById(data.Id); _collider = GetComponent(); _visualLook = transform.Find(CommonConstants.VisualLook); if (environmentData == null) { Debug.Assert(false, "environmentData is null"); } if (environmentData.RendererType == RendererType.Sprite) { var spriteRenderer = _visualLook.AddComponent(); _renderer = spriteRenderer; spriteRenderer.sprite = DataManager.Instance.GetSprite(environmentData.SpriteKey); spriteRenderer.sortingOrder = 5; Material material = await AssetManager.LoadAsset(DataConstants.BasePropSpriteMaterial); spriteRenderer.material = new Material(material); } else if (environmentData.RendererType == RendererType.Spine) { var skeletonAnimation = _visualLook.AddComponent(); var skeletonDataAsset = await AssetManager.LoadAsset(environmentData.SkeletonDataName); skeletonAnimation.skeletonDataAsset = skeletonDataAsset; var spineController = transform.AddComponent(); spineController.SetSkin(environmentData.SkinName); spineController.PlayAnimation(environmentData.DefaultAnimationName, true); _renderer = _visualLook.GetComponent(); } _collider.isTrigger = environmentData.IsTrigger == 1; transform.position = new Vector3(data.Position.x, 0f, data.Position.y); transform.localScale = Vector3.one * environmentData.Size; } } }