Files
decay-grid/Assets/Scripts/Infrastructure/Unity/OrbViewAdapter.cs

43 lines
1.3 KiB
C#

using System;
using KBCore.Refs;
using UnityEngine;
namespace Infrastructure.Unity
{
public class OrbViewAdapter : MonoBehaviour
{
[SerializeField] private ParticleSystem pickupVfx;
[Self][SerializeField] private MeshRenderer meshRenderer;
public event Action OnCollected;
private MaterialPropertyBlock _propBlock;
private static readonly int ColorProperty = Shader.PropertyToID("_BaseColor");
private void Awake()
{
_propBlock = new MaterialPropertyBlock();
}
private void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent<PlayerController>(out var player))
{
if (pickupVfx)
{
var vfx = Instantiate(pickupVfx, transform.position, Quaternion.identity);
var main = vfx.main;
meshRenderer.GetPropertyBlock(_propBlock);
var currentColor = _propBlock.GetColor(ColorProperty);
main.startColor = currentColor;
Destroy(vfx.gameObject, 2f);
}
OnCollected?.Invoke();
Destroy(gameObject);
}
}
}
}