You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
namespace Autohand{
//This script is used to hide rigidbody physics instabilitites by
//putting the hand where it visually should be on prerender
//and putting it where it physically should be on post render
[DefaultExecutionOrder(-5)]
public class HandStabilizer : MonoBehaviour{
public HandBase hand = null;
void Start(){
if (!GetComponent<Camera>().enabled || hand == null)
enabled = false;
}
void OnEnable(){
if(GraphicsSettings.renderPipelineAsset != null){
RenderPipelineManager.beginCameraRendering += OnPreRender;
RenderPipelineManager.endCameraRendering += OnPostRender;
}
}
void OnDisable(){
if(GraphicsSettings.renderPipelineAsset != null){
RenderPipelineManager.beginCameraRendering -= OnPreRender;
RenderPipelineManager.endCameraRendering -= OnPostRender;
}
}
private void Update() {
if(hand == null)
enabled = false;
}
private void OnPreRender() {
if (hand.gameObject.activeInHierarchy)
hand.OnPreRender();
}
private void OnPostRender() {
if(hand.gameObject.activeInHierarchy)
hand.OnPostRender();
}
private void OnPreRender(ScriptableRenderContext src, Camera cam) {
if (hand.gameObject.activeInHierarchy)
hand.OnPreRender();
}
private void OnPostRender(ScriptableRenderContext src, Camera cam) {
if (hand.gameObject.activeInHierarchy)
hand.OnPostRender();
}
}
}