ProjectDDD/Assets/_DDD/_Scripts/RestaurantEnvironment/RestaurantEnvironment.cs

60 lines
2.4 KiB
C#
Raw Normal View History

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<Collider>();
_visualLook = transform.Find(CommonConstants.VisualLook);
if (environmentData == null)
{
Debug.Assert(false, "environmentData is null");
}
if (environmentData.RendererType == RendererType.Sprite)
{
var spriteRenderer = _visualLook.AddComponent<SpriteRenderer>();
_renderer = spriteRenderer;
spriteRenderer.sprite = DataManager.Instance.GetSprite(environmentData.SpriteKey);
spriteRenderer.sortingOrder = 5;
Material material = await AssetManager.LoadAsset<Material>(DataConstants.BasePropSpriteMaterial);
spriteRenderer.material = new Material(material);
}
else if (environmentData.RendererType == RendererType.Spine)
{
var skeletonAnimation = _visualLook.AddComponent<SkeletonAnimation>();
var skeletonDataAsset = await AssetManager.LoadAsset<SkeletonDataAsset>(environmentData.SkeletonDataName);
skeletonAnimation.skeletonDataAsset = skeletonDataAsset;
var spineController = transform.AddComponent<SpineController>();
spineController.SetSkin(environmentData.SkinName);
spineController.PlayAnimation(environmentData.DefaultAnimationName, true);
_renderer = _visualLook.GetComponent<MeshRenderer>();
}
_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;
}
}
}