private static IAnimatedBehavior OfSimple(MassiveBlendManifest manifest, Permutation currentPermutation) { var zero = manifest.EquatedManifests[0].Poses[currentPermutation]; var one = manifest.EquatedManifests[1].Poses[currentPermutation]; return(SimpleMassiveBlendAnimatedBehavior.Maybe(zero, one, manifest.SimpleParameterName)); }
public void Populate() { foreach (var entry in _intermediateToCombo) { var behavior = entry.Key; var transitionConditions = entry.Value; switch (behavior.Nature()) { case AnimatedBehaviorNature.Single: var sab = (SingleAnimatedBehavior)behavior; ForSingle(sab, transitionConditions); break; case AnimatedBehaviorNature.Analog: AnalogAnimatedBehavior aab = (AnalogAnimatedBehavior)behavior; ForAnalog(transitionConditions, aab.Squeezing.Clip, aab.Resting.Clip, aab.HandSide); break; case AnimatedBehaviorNature.PuppetToAnalog: PuppetToAnalogAnimatedBehavior ptaab = (PuppetToAnalogAnimatedBehavior)behavior; ForAnalog(transitionConditions, ptaab.Squeezing.Clip, ptaab.Resting, ptaab.HandSide); break; case AnimatedBehaviorNature.DualAnalog: DualAnalogAnimatedBehavior daab = (DualAnalogAnimatedBehavior)behavior; ForDualAnalog(transitionConditions, daab.BothSqueezing.Clip, daab.Resting.Clip, daab.LeftSqueezing.Clip, daab.RightSqueezing.Clip); break; case AnimatedBehaviorNature.PuppetToDualAnalog: PuppetToDualAnalogAnimatedBehavior ptdaab = (PuppetToDualAnalogAnimatedBehavior)behavior; ForDualAnalog(transitionConditions, ptdaab.BothSqueezing.Clip, ptdaab.Resting, ptdaab.LeftSqueezing.Clip, ptdaab.RightSqueezing.Clip); break; case AnimatedBehaviorNature.Puppet: var pab = (PuppetAnimatedBehavior)behavior; ForPuppet(transitionConditions, pab); break; case AnimatedBehaviorNature.SimpleMassiveBlend: SimpleMassiveBlendAnimatedBehavior smbab = (SimpleMassiveBlendAnimatedBehavior)behavior; ForSimpleMassiveBlend(transitionConditions, smbab.Zero, smbab.One, smbab.ParameterName); break; case AnimatedBehaviorNature.TwoDirectionsMassiveBlend: TwoDirectionsMassiveBlendAnimatedBehavior tdmb = (TwoDirectionsMassiveBlendAnimatedBehavior)behavior; ForTwoDirectionsMassiveBlend(transitionConditions, tdmb.Zero, tdmb.One, tdmb.MinusOne, tdmb.ParameterName); break; case AnimatedBehaviorNature.ComplexMassiveBlend: ComplexMassiveBlendAnimatedBehavior cbtmbab = (ComplexMassiveBlendAnimatedBehavior)behavior; ForComplexMassiveBlend(transitionConditions, cbtmbab.Behaviors, cbtmbab.OriginalBlendTreeTemplate); break; default: throw new ArgumentOutOfRangeException(); } } }