Newer
Older
CGTrack / Assets / Oculus / LipSync / Scenes / Scripts / EnableSwitch.cs
using UnityEngine;

public class EnableSwitch : MonoBehaviour
{
    public GameObject[] SwitchTargets;

    /// <summary>
    /// Sets the active GameObject
    /// </summary>
    /// <returns><c>true</c>, if active was set, <c>false</c> otherwise.</returns>
    /// <param name="target">Target.</param>
    public bool SetActive<T>(int target) where T : MonoBehaviour
    {
        if((target < 0) || (target >= SwitchTargets.Length))
            return false;

        for (int i = 0; i < SwitchTargets.Length; i++)
        {
            SwitchTargets[i].SetActive(false);

            // Disable texture flip or morph target
            OVRLipSyncContextMorphTarget lipsyncContextMorph =
                   SwitchTargets[i].GetComponent<OVRLipSyncContextMorphTarget>();
            if (lipsyncContextMorph)
                lipsyncContextMorph.enabled = false;
            OVRLipSyncContextTextureFlip lipsyncContextTexture =
                   SwitchTargets[i].GetComponent<OVRLipSyncContextTextureFlip>();
            if (lipsyncContextTexture)
                lipsyncContextTexture.enabled = false;
        }

        SwitchTargets[target].SetActive(true);
        MonoBehaviour lipsyncContext = SwitchTargets[target].GetComponent<T>();
        if (lipsyncContext != null)
        {
            lipsyncContext.enabled = true;
        }

        return true;
    }
}