private static void ConfigEmoterSettings(QueueProcessor qp) { emoter = selectedObject.GetComponent <Emoter>(); if (emoter == null) { emoter = selectedObject.AddComponent <Emoter>(); } if (salsa != null) { salsa.emoter = emoter; } emoter.queueProcessor = qp; emoter.lipsyncEmphasisChance = emphasisChance; emoter.useRandomEmotes = useRandomEmotes; emoter.isChancePerEmote = isChancePerEmote; emoter.NumRandomEmotesPerCycle = numRandomEmotesPerCycle; emoter.randomEmoteMinTimer = randomEmoteMinTimer; emoter.randomEmoteMaxTimer = randomEmoteMaxTimer; emoter.randomChance = randomChance; emoter.useRandomFrac = useRandomFrac; emoter.randomFracBias = randomFracBias; emoter.useRandomHoldDuration = useRandomHoldDuration; emoter.randomHoldDurationMin = randomHoldDurationMin; emoter.randomHoldDurationMax = randomHoldDurationMax; emoter.emotes.Clear(); }
/// <summary> /// Ensure all Suite references are linked. Requires an LOD to be active. /// </summary> /// <param name="lodLevel"></param> /// <param name="clip"></param> private void SetReferences(int lodLevel, AudioClip clip = null) { salsa = GetComponent <Salsa>(); emoter = GetComponent <Emoter>(); eyes = GetComponent <Eyes>(); if (salsa == null || emoter == null) { OneClickAutodeskCG.Setup(gameObject, clip, lodLevel); salsa = GetComponent <Salsa>(); emoter = GetComponent <Emoter>(); } if (eyes == null) { OneClickAutodeskCgEyes.Setup(gameObject, lodLevel); eyes = GetComponent <Eyes>(); } }
protected static void DoOneClickiness(GameObject go, AudioClip clip) { selectedObject = go; // setup QueueProcessor var qp = selectedObject.GetComponent <QueueProcessor>(); // get QueueProcessor on current object -- we no longer look in-scene. if (qp == null) { qp = selectedObject.AddComponent <QueueProcessor>(); } // if there is a uepProxy, get reference to it. uepProxy = go.GetComponent <UmaUepProxy>(); foreach (var configuration in oneClickConfigurations) { // module-specific configuraiton requirements:: switch (configuration.type) { #region salsa-specific setup case OneClickConfiguration.ConfigType.Salsa: salsa = selectedObject.GetComponent <Salsa>(); if (salsa == null) { salsa = selectedObject.AddComponent <Salsa>(); } // configure AudioSource for demonstration var audSrc = selectedObject.GetComponent <AudioSource>(); if (audSrc == null) { audSrc = selectedObject.AddComponent <AudioSource>(); } audSrc.playOnAwake = true; audSrc.loop = false; if (clip != null) { audSrc.clip = clip; } salsa.audioSrc = audSrc; salsa.queueProcessor = qp; // adjust salsa settings // - data analysis settings salsa.autoAdjustAnalysis = autoAdjustAnalysis; salsa.autoAdjustMicrophone = autoAdjustMicrophone; // - advanced dynamics salsa.loCutoff = loCutoff; salsa.hiCutoff = hiCutoff; salsa.useAdvDyn = useAdvDyn; salsa.advDynPrimaryBias = advDynPrimaryBias; salsa.useAdvDynJitter = useAdvDynJitter; salsa.advDynJitterAmount = advDynJitterAmount; salsa.advDynJitterProb = advDynJitterProb; salsa.advDynSecondaryMix = advDynSecondaryMix; salsa.emphasizerTrigger = emphasizerTrigger; break; #endregion #region emoter-specific setup case OneClickConfiguration.ConfigType.Emoter: emoter = selectedObject.GetComponent <Emoter>(); if (emoter == null) { emoter = selectedObject.AddComponent <Emoter>(); } salsa.emoter = emoter; emoter.queueProcessor = qp; emoter.useRandomEmotes = useRandomEmotes; emoter.isChancePerEmote = isChancePerEmote; emoter.NumRandomEmotesPerCycle = numRandomEmotesPerCycle; emoter.randomEmoteMinTimer = randomEmoteMinTimer; emoter.randomEmoteMaxTimer = randomEmoteMaxTimer; emoter.randomChance = randomChance; emoter.useRandomFrac = useRandomFrac; emoter.randomFracBias = randomFracBias; emoter.useRandomHoldDuration = useRandomHoldDuration; emoter.randomHoldDurationMin = randomHoldDurationMin; emoter.randomHoldDurationMax = randomHoldDurationMax; break; #endregion } #region Skinned Mesh Renderer search for shape component creation. if (configuration.smrSearches.Count > 0) { var allSmrs = selectedObject.GetComponentsInChildren <SkinnedMeshRenderer>(); // quick test to see if this object has the necessary stuff if (allSmrs == null || allSmrs.Length == 0) { Debug.LogError("This object does not have the required components. No Skinned Mesh Renderers found. Ensure this one-click script was applied to the root of the model prefab in the scene hierarchy."); return; } // Find the necessary SMR's foreach (var smr in allSmrs) { foreach (var smrSearch in configuration.smrSearches) { if (Regex.IsMatch(smr.name, smrSearch, RegexOptions.IgnoreCase)) { requiredSmrs.Add(smr); } } } if (requiredSmrs.Count == 0) { Debug.LogError("This object does not have the required components. Could not find the referenced SMRs. Ensure the appropriate one-click was used for your model type and generation."); return; } } #endregion // Skinned Mesh Renderer search for shape component creation. ConfigureModule(configuration); ResetForNextConfiguration(); } }