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(string id) { await DataManager.Instance.WaitUntilInitialized(); EnvironmentData environmentData = DataManager.Instance.EnvironmentDataSo.GetDataById(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; Vector2 randomPos = new Vector2( Random.Range(-10f, 10f), Random.Range(10f, 20f) ); transform.position = new Vector3(randomPos.x, 0f, randomPos.y); transform.localScale = Vector3.one * environmentData.Size; } } }