|
|
|
|
@ -10,9 +10,23 @@ namespace UltraCombos.Frozen |
|
|
|
|
float alpha = 0.0f; |
|
|
|
|
float smooth = 0.025f; |
|
|
|
|
|
|
|
|
|
DShowMoviePlayer player; |
|
|
|
|
|
|
|
|
|
[SerializeField] |
|
|
|
|
KinectOpticalFlowMath kinect; |
|
|
|
|
|
|
|
|
|
[SerializeField] |
|
|
|
|
float triggerRadius = 1.5f; |
|
|
|
|
|
|
|
|
|
[SerializeField] |
|
|
|
|
float cooldown = 2.0f; |
|
|
|
|
|
|
|
|
|
private void Start() |
|
|
|
|
{ |
|
|
|
|
material = GetComponent<MeshRenderer>().material; |
|
|
|
|
material = GetComponent<MeshRenderer>().sharedMaterial; |
|
|
|
|
player = GetComponent<DShowMoviePlayer>(); |
|
|
|
|
|
|
|
|
|
StartCoroutine(Flow()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void FixedUpdate() |
|
|
|
|
@ -27,6 +41,65 @@ namespace UltraCombos.Frozen |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
material.color = new Color(1.0f, 1.0f, 1.0f, alpha); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void OnDrawGizmosSelected() |
|
|
|
|
{ |
|
|
|
|
var pos = kinect.averagePositinon; |
|
|
|
|
Gizmos.DrawWireSphere(pos, 0.5f); |
|
|
|
|
if (new Vector2(pos.x - transform.position.x, pos.z - transform.position.z).magnitude < triggerRadius) |
|
|
|
|
{ |
|
|
|
|
Gizmos.color = Color.red; |
|
|
|
|
} |
|
|
|
|
Gizmos.DrawWireSphere(transform.position, triggerRadius); |
|
|
|
|
|
|
|
|
|
Gizmos.color = Color.white; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[SerializeField, Range(0, 1)] |
|
|
|
|
float breakProgress = 0.1f; |
|
|
|
|
|
|
|
|
|
IEnumerator Flow() |
|
|
|
|
{ |
|
|
|
|
float video_stamp = 0.0f; |
|
|
|
|
float progress = 0.0f; |
|
|
|
|
while (true) |
|
|
|
|
{ |
|
|
|
|
video_stamp = Time.time; |
|
|
|
|
progress = 0.0f; |
|
|
|
|
player.Pause(); |
|
|
|
|
player.Frame = 0; |
|
|
|
|
Debug.Log("Begin"); |
|
|
|
|
while (progress < breakProgress) |
|
|
|
|
{ |
|
|
|
|
var pos = kinect.averagePositinon; |
|
|
|
|
float dist = new Vector2(pos.x - transform.position.x, pos.z - transform.position.z).magnitude; |
|
|
|
|
|
|
|
|
|
if (dist < triggerRadius) |
|
|
|
|
{ |
|
|
|
|
//Debug.Log("OK"); |
|
|
|
|
progress += 0.001f; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
progress = Mathf.Max(progress - 0.001f, 0.0f); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
player.Frame = (uint)(player.TotalNumFrames * progress); |
|
|
|
|
yield return null; |
|
|
|
|
} |
|
|
|
|
Debug.Log("Play the rest"); |
|
|
|
|
player.Play(); |
|
|
|
|
while (player.IsFinished == false) |
|
|
|
|
{ |
|
|
|
|
yield return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
yield return new WaitForSeconds(cooldown); |
|
|
|
|
Debug.Log("Flow done"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|