using SimplestarGame.WaterParticle;
using UnityEngine;
// using Valve.VR;
namespace SimplestarGame.Wave
{
///
/// If collision object has WaveSimulator, Add wave at the ClosestPoint with its velocity.
///
[RequireComponent(typeof(Rigidbody))]
public class WaterInterferer : MonoBehaviour
{
[SerializeField] PeriodicEffector waterDrop;
[SerializeField] PeriodicEffector waterSplash;
//public void SetPosition(SteamVR_Behaviour_Pose pose, SteamVR_Input_Sources sources)
//{
// this.transform.position = pose.transform.position;
// this.transform.rotation = Quaternion.identity;
//}
void Start()
{
this.lastPoint = transform.position;
}
void FixedUpdate()
{
// For reading the delta time it is recommended to use Time.deltaTime instead.
// Because it automatically returns the right delta time if you are inside a FixedUpdate function or Update function.
this.velocity = (this.transform.position - this.lastPoint) / Time.deltaTime;
this.lastPoint = transform.position;
}
void OnTriggerEnter(Collider other)
{
var waveComputer = other.gameObject.GetComponent();
if (null == waveComputer)
{
return;
}
waveComputer.AddWave(other.ClosestPoint(transform.position), this.velocity);
if (null != this.waterSplash)
{
this.waterSplash.transform.position = new Vector3(transform.position.x, other.transform.position.y + 0.051f, transform.position.z);
this.waterSplash.StartPowerEffect(0.2f, this.velocity);
}
}
void OnTriggerExit(Collider other)
{
var waveComputer = other.gameObject.GetComponent();
if (null == waveComputer)
{
return;
}
waveComputer.AddWave(other.ClosestPoint(transform.position), this.velocity);
if (null != this.waterDrop)
{
this.waterDrop.StartEffect(0.2f);
}
}
Vector3 velocity;
Vector3 lastPoint;
}
}