projectEli/Assets/NeoFPS/Core/Utilities/AnimStateObjectSwapperTarget.cs
2022-11-06 20:28:33 -05:00

40 lines
1.3 KiB
C#

using System;
using UnityEngine;
namespace NeoFPS
{
[HelpURL("https://docs.neofps.com/manual/utilitiesref-mb-animstateobjectswappertarget.html")]
[RequireComponent (typeof (Rigidbody))]
public class AnimStateObjectSwapperTarget : MonoBehaviour
{
[SerializeField, Tooltip("The object to swap.")]
Transform m_TargetTransform = null;
[SerializeField, Tooltip("The pooled object to swap the target object with.")]
PooledObject m_PooledObject = null;
[SerializeField, Tooltip("The velocity to spawn the physics object at relative to the target object rotation.")]
Vector3 m_SpawnVelocity = new Vector3 (0f, 1f, 0f);
[SerializeField, Tooltip("The angular velocity of the spawned physics object.")]
Vector3 m_SpawnAngularVelocity = new Vector3 (90f, 0f, 0f);
public void Swap ()
{
Rigidbody leverRb = PoolManager.GetPooledObject<Rigidbody> (m_PooledObject, m_TargetTransform.position, m_TargetTransform.rotation);
if (leverRb != null)
{
leverRb.velocity = m_TargetTransform.rotation * m_SpawnVelocity;
leverRb.angularVelocity = m_SpawnAngularVelocity * Mathf.Deg2Rad;
m_TargetTransform.gameObject.SetActive (false);
}
}
public void Reset ()
{
gameObject.SetActive (true);
}
}
}