35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
namespace Code.D.Cleaning
|
|
{
|
|
public class CleanableAsset : Cleanable
|
|
{
|
|
private Collider _dirtyCollider;
|
|
private static readonly int MaskMap = Shader.PropertyToID("_Mask");
|
|
[SerializeField] private float cleanCountPerFrame;
|
|
private Material _renderMaterial;
|
|
|
|
private void Awake()
|
|
{
|
|
_dirtyCollider = GetComponent<Collider>();
|
|
|
|
_renderMaterial = GetComponent<MeshRenderer>().material;
|
|
}
|
|
private void AssumedAsCleaned()
|
|
{
|
|
Cleaned.Value = true;
|
|
_dirtyCollider.enabled = false;
|
|
_renderMaterial.SetTexture(MaskMap, Texture2D.blackTexture);
|
|
}
|
|
|
|
public void Clean()
|
|
{
|
|
CleanProgress.Value += cleanCountPerFrame;
|
|
|
|
if(CleanProgress.CurrentValue >= 100)
|
|
AssumedAsCleaned();
|
|
|
|
Debug.Log($"{name} прогресс очистки: {CleanProgress.CurrentValue}");
|
|
}
|
|
}
|
|
} |