BITFALL/Assets/Artists/Scripts/Props/Scope/Prop_ScopeMeshRenderer.cs

53 lines
1.5 KiB
C#
Raw Normal View History

2023-12-15 00:08:02 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using BITFALL.Player.Equip;
using BITKit;
using BITKit.Entities;
using UnityEngine;
namespace BITFALL.Props
{
public class Prop_ScopeMeshRenderer : EntityBehavior
{
[SerializeField] private bool isDisableRenderer;
[SerializeField] private new Renderer renderer;
private Material _material;
[SerializeField] private Shader _shader;
2024-01-27 04:09:57 +08:00
[SerializeField] private Optional<float> threshold;
2023-12-15 00:08:02 +08:00
[Inject] private IEquipService _equipService;
2024-01-27 04:09:57 +08:00
2023-12-15 00:08:02 +08:00
private static readonly int Clip = Shader.PropertyToID("_Clip");
public override void OnStart()
{
base.OnStart();
try
{
_material = renderer.material;
_material.shader = _shader;
renderer.material = _material;
}
catch (Exception e)
{
Debug.LogWarning(transform.name);
throw;
}
}
public override void OnUpdate(float deltaTime)
{
if (gameObject.activeInHierarchy is false) return;
base.OnUpdate(deltaTime);
2024-01-27 04:09:57 +08:00
var disableRenderer = _equipService.Aim > threshold.IfNotAllow(0.9f);
2023-12-15 00:08:02 +08:00
if (isDisableRenderer)
{
2024-01-27 04:09:57 +08:00
renderer.enabled = !disableRenderer;
2023-12-15 00:08:02 +08:00
}
else
{
2024-01-27 04:09:57 +08:00
_material.SetInt(Clip,disableRenderer? 1 : 0);
2023-12-15 00:08:02 +08:00
}
}
}
}