WXMC/.svn/pristine/ed/edf7f8ca789cdc7aab5bfdc58f97b630d3c2c6f1.svn-base
2024-12-04 16:18:46 +08:00

48 lines
1.3 KiB
Plaintext

//----------------------------------------------
// Koreographer
// Copyright © 2014-2019 Sonic Bloom, LLC
//----------------------------------------------
using UnityEngine;
namespace SonicBloom.Koreo.Demos
{
[AddComponentMenu("Koreographer/Demos/Cube Scaler")]
public class CubeScaler : MonoBehaviour
{
[EventID]
public string eventID;
public float minScale = 0.5f;
public float maxScale = 1.5f;
void Start()
{
// Register for Koreography Events. This sets up the callback.
Koreographer.Instance.RegisterForEventsWithTime(eventID, AdjustScale);
}
void OnDestroy()
{
// Sometimes the Koreographer Instance gets cleaned up before hand.
// No need to worry in that case.
if (Koreographer.Instance != null)
{
Koreographer.Instance.UnregisterForAllEvents(this);
}
}
void AdjustScale(KoreographyEvent evt, int sampleTime, int sampleDelta, DeltaSlice deltaSlice)
{
if (evt.HasCurvePayload())
{
// Get the value of the curve at the current audio position. This will be a
// value between [0, 1] and will be used, below, to interpolate between
// minScale and maxScale.
float curveValue = evt.GetValueOfCurveAtTime(sampleTime);
transform.localScale = Vector3.one * Mathf.Lerp(minScale, maxScale, curveValue);
}
}
}
}