Files
MicrosoftIris/UIX.RenderApi/Microsoft/Iris/Render/AnimationInput.cs
T

88 lines
3.3 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Render.AnimationInput
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
using Microsoft.Iris.Render.Common;
using System;
namespace Microsoft.Iris.Render
{
public abstract class AnimationInput
{
private AnimationInputType m_sourceType;
private AnimationInputType m_inputType;
private AnimationTypeMask m_sourceMask;
protected void CommonCreate(AnimationInputType sourceType, AnimationTypeMask sourceMask)
{
Debug2.Validate(sourceMask.CanMapFromType(sourceType), typeof(ArgumentException), nameof(sourceMask));
AnimationInputType animationInputType;
switch (sourceMask.ChannelCount)
{
case 0:
animationInputType = sourceType;
break;
case 1:
animationInputType = AnimationInputType.Float;
break;
case 2:
animationInputType = AnimationInputType.Vector2;
break;
case 3:
animationInputType = AnimationInputType.Vector3;
break;
case 4:
animationInputType = AnimationInputType.Vector4;
break;
default:
Debug2.Throw(false, "Masking is limited to four channels");
animationInputType = sourceType;
break;
}
this.m_sourceType = sourceType;
this.m_sourceMask = sourceMask;
this.m_inputType = animationInputType;
}
public AnimationInputType InputType => this.m_inputType;
// Public read accessor so an out-of-assembly animation engine can evaluate
// keyframe values without reaching internal state. Only constant inputs carry a
// directly-readable value; expression/object inputs return false (a consumer can
// still walk BinaryOperation's public operands, and read the leaves this way).
public virtual bool TryGetConstantValue(out object value)
{
value = null;
return false;
}
internal AnimationInputType SourceType => this.m_sourceType;
internal AnimationTypeMask SourceMask => this.m_sourceMask;
internal virtual void RegisterUsage(object user)
{
}
internal virtual void UnregisterUsage(object user)
{
}
public static AnimationInput operator +(AnimationInput left, AnimationInput right)
{
Debug2.Validate(left != null, typeof(ArgumentNullException), nameof(left));
Debug2.Validate(right != null, typeof(ArgumentNullException), nameof(right));
return new BinaryOperation(BinaryOpCode.Add, left, right);
}
public static AnimationInput operator *(AnimationInput left, AnimationInput right)
{
Debug2.Validate(left != null, typeof(ArgumentNullException), nameof(left));
Debug2.Validate(right != null, typeof(ArgumentNullException), nameof(right));
return new BinaryOperation(BinaryOpCode.Multiply, left, right);
}
}
}