173 lines
7.8 KiB
C#
173 lines
7.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace UniversalEditor.ObjectModels.Multimedia3D.Motion
|
|
{
|
|
public abstract class MotionAction : ICloneable
|
|
{
|
|
public class MotionActionCollection
|
|
: System.Collections.ObjectModel.Collection<MotionAction>
|
|
{
|
|
}
|
|
|
|
public abstract object Clone();
|
|
}
|
|
/// <summary>
|
|
/// Repositions the specified face on the current model.
|
|
/// </summary>
|
|
public class MotionFaceRepositionAction : MotionAction
|
|
{
|
|
private string mvarFaceName = String.Empty;
|
|
/// <summary>
|
|
/// The name of the face to which this action is applied.
|
|
/// </summary>
|
|
public string FaceName { get { return mvarFaceName; } set { mvarFaceName = value; } }
|
|
|
|
private float mvarWeight = 0.0f;
|
|
/// <summary>
|
|
/// The weight of the face.
|
|
/// </summary>
|
|
public float Weight { get { return mvarWeight; } set { mvarWeight = value; } }
|
|
|
|
public override object Clone()
|
|
{
|
|
MotionFaceRepositionAction clone = new MotionFaceRepositionAction();
|
|
clone.FaceName = (mvarFaceName.Clone() as string);
|
|
clone.Weight = mvarWeight;
|
|
return clone;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Repositions the specified bone on the current model.
|
|
/// </summary>
|
|
public class MotionBoneRepositionAction : MotionAction
|
|
{
|
|
private string mvarBoneName = String.Empty;
|
|
/// <summary>
|
|
/// The name of the bone to which this action is applied.
|
|
/// </summary>
|
|
public string BoneName { get { return mvarBoneName; } set { mvarBoneName = value; } }
|
|
|
|
private PositionVector3 mvarPosition = new PositionVector3();
|
|
public PositionVector3 Position { get { return mvarPosition; } set { mvarPosition = value; } }
|
|
|
|
private PositionVector4 mvarRotation = new PositionVector4();
|
|
public PositionVector4 Rotation { get { return mvarRotation; } set { mvarRotation = value; } }
|
|
|
|
private MotionInterpolationData mvarInterpolation = new MotionInterpolationData();
|
|
public MotionInterpolationData Interpolation { get { return mvarInterpolation; } }
|
|
|
|
private MotionInterpolationData mvarInterpolation2 = new MotionInterpolationData();
|
|
public MotionInterpolationData Interpolation2 { get { return mvarInterpolation2; } }
|
|
|
|
private MotionInterpolationData mvarInterpolation3 = new MotionInterpolationData();
|
|
public MotionInterpolationData Interpolation3 { get { return mvarInterpolation3; } }
|
|
|
|
private MotionInterpolationData mvarInterpolation4 = new MotionInterpolationData();
|
|
public MotionInterpolationData Interpolation4 { get { return mvarInterpolation4; } }
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("Reposition: ");
|
|
sb.Append(" bone \"");
|
|
sb.Append(mvarBoneName);
|
|
sb.Append("\" @ pos ");
|
|
sb.Append(mvarPosition.ToString());
|
|
sb.Append("; rot ");
|
|
sb.Append(mvarRotation.ToString());
|
|
return sb.ToString();
|
|
}
|
|
|
|
public override object Clone()
|
|
{
|
|
MotionBoneRepositionAction clone = new MotionBoneRepositionAction();
|
|
clone.BoneName = (mvarBoneName.Clone() as string);
|
|
|
|
clone.Interpolation.Rotation.X1 = mvarInterpolation.Rotation.X1;
|
|
clone.Interpolation.Rotation.X2 = mvarInterpolation.Rotation.X2;
|
|
clone.Interpolation.Rotation.Y1 = mvarInterpolation.Rotation.Y1;
|
|
clone.Interpolation.Rotation.Y2 = mvarInterpolation.Rotation.Y2;
|
|
clone.Interpolation.XAxis.X1 = mvarInterpolation.XAxis.X1;
|
|
clone.Interpolation.XAxis.X2 = mvarInterpolation.XAxis.X2;
|
|
clone.Interpolation.XAxis.Y1 = mvarInterpolation.XAxis.Y1;
|
|
clone.Interpolation.XAxis.Y2 = mvarInterpolation.XAxis.Y2;
|
|
clone.Interpolation.YAxis.X1 = mvarInterpolation.YAxis.X1;
|
|
clone.Interpolation.YAxis.X2 = mvarInterpolation.YAxis.X2;
|
|
clone.Interpolation.YAxis.Y1 = mvarInterpolation.YAxis.Y1;
|
|
clone.Interpolation.YAxis.Y2 = mvarInterpolation.YAxis.Y2;
|
|
clone.Interpolation.ZAxis.X1 = mvarInterpolation.ZAxis.X1;
|
|
clone.Interpolation.ZAxis.X2 = mvarInterpolation.ZAxis.X2;
|
|
clone.Interpolation.ZAxis.Y1 = mvarInterpolation.ZAxis.Y1;
|
|
clone.Interpolation.ZAxis.Y2 = mvarInterpolation.ZAxis.Y2;
|
|
|
|
clone.Interpolation2.Rotation.X1 = mvarInterpolation2.Rotation.X1;
|
|
clone.Interpolation2.Rotation.X2 = mvarInterpolation2.Rotation.X2;
|
|
clone.Interpolation2.Rotation.Y1 = mvarInterpolation2.Rotation.Y1;
|
|
clone.Interpolation2.Rotation.Y2 = mvarInterpolation2.Rotation.Y2;
|
|
clone.Interpolation2.XAxis.X1 = mvarInterpolation2.XAxis.X1;
|
|
clone.Interpolation2.XAxis.X2 = mvarInterpolation2.XAxis.X2;
|
|
clone.Interpolation2.XAxis.Y1 = mvarInterpolation2.XAxis.Y1;
|
|
clone.Interpolation2.XAxis.Y2 = mvarInterpolation2.XAxis.Y2;
|
|
clone.Interpolation2.YAxis.X1 = mvarInterpolation2.YAxis.X1;
|
|
clone.Interpolation2.YAxis.X2 = mvarInterpolation2.YAxis.X2;
|
|
clone.Interpolation2.YAxis.Y1 = mvarInterpolation2.YAxis.Y1;
|
|
clone.Interpolation2.YAxis.Y2 = mvarInterpolation2.YAxis.Y2;
|
|
clone.Interpolation2.ZAxis.X1 = mvarInterpolation2.ZAxis.X1;
|
|
clone.Interpolation2.ZAxis.X2 = mvarInterpolation2.ZAxis.X2;
|
|
clone.Interpolation2.ZAxis.Y1 = mvarInterpolation2.ZAxis.Y1;
|
|
clone.Interpolation2.ZAxis.Y2 = mvarInterpolation2.ZAxis.Y2;
|
|
|
|
clone.Interpolation3.Rotation.X1 = mvarInterpolation3.Rotation.X1;
|
|
clone.Interpolation3.Rotation.X2 = mvarInterpolation3.Rotation.X2;
|
|
clone.Interpolation3.Rotation.Y1 = mvarInterpolation3.Rotation.Y1;
|
|
clone.Interpolation3.Rotation.Y2 = mvarInterpolation3.Rotation.Y2;
|
|
clone.Interpolation3.XAxis.X1 = mvarInterpolation3.XAxis.X1;
|
|
clone.Interpolation3.XAxis.X2 = mvarInterpolation3.XAxis.X2;
|
|
clone.Interpolation3.XAxis.Y1 = mvarInterpolation3.XAxis.Y1;
|
|
clone.Interpolation3.XAxis.Y2 = mvarInterpolation3.XAxis.Y2;
|
|
clone.Interpolation3.YAxis.X1 = mvarInterpolation3.YAxis.X1;
|
|
clone.Interpolation3.YAxis.X2 = mvarInterpolation3.YAxis.X2;
|
|
clone.Interpolation3.YAxis.Y1 = mvarInterpolation3.YAxis.Y1;
|
|
clone.Interpolation3.YAxis.Y2 = mvarInterpolation3.YAxis.Y2;
|
|
clone.Interpolation3.ZAxis.X1 = mvarInterpolation3.ZAxis.X1;
|
|
clone.Interpolation3.ZAxis.X2 = mvarInterpolation3.ZAxis.X2;
|
|
clone.Interpolation3.ZAxis.Y1 = mvarInterpolation3.ZAxis.Y1;
|
|
clone.Interpolation3.ZAxis.Y2 = mvarInterpolation3.ZAxis.Y2;
|
|
|
|
clone.Interpolation4.Rotation.X1 = mvarInterpolation4.Rotation.X1;
|
|
clone.Interpolation4.Rotation.X2 = mvarInterpolation4.Rotation.X2;
|
|
clone.Interpolation4.Rotation.Y1 = mvarInterpolation4.Rotation.Y1;
|
|
clone.Interpolation4.Rotation.Y2 = mvarInterpolation4.Rotation.Y2;
|
|
clone.Interpolation4.XAxis.X1 = mvarInterpolation4.XAxis.X1;
|
|
clone.Interpolation4.XAxis.X2 = mvarInterpolation4.XAxis.X2;
|
|
clone.Interpolation4.XAxis.Y1 = mvarInterpolation4.XAxis.Y1;
|
|
clone.Interpolation4.XAxis.Y2 = mvarInterpolation4.XAxis.Y2;
|
|
clone.Interpolation4.YAxis.X1 = mvarInterpolation4.YAxis.X1;
|
|
clone.Interpolation4.YAxis.X2 = mvarInterpolation4.YAxis.X2;
|
|
clone.Interpolation4.YAxis.Y1 = mvarInterpolation4.YAxis.Y1;
|
|
clone.Interpolation4.YAxis.Y2 = mvarInterpolation4.YAxis.Y2;
|
|
clone.Interpolation4.ZAxis.X1 = mvarInterpolation4.ZAxis.X1;
|
|
clone.Interpolation4.ZAxis.X2 = mvarInterpolation4.ZAxis.X2;
|
|
clone.Interpolation4.ZAxis.Y1 = mvarInterpolation4.ZAxis.Y1;
|
|
clone.Interpolation4.ZAxis.Y2 = mvarInterpolation4.ZAxis.Y2;
|
|
|
|
clone.Position = ((PositionVector3)mvarPosition.Clone());
|
|
clone.Rotation = ((PositionVector4)mvarRotation.Clone());
|
|
return clone;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Updates the texture on the specified material.
|
|
/// </summary>
|
|
public class MotionTextureUpdateAction : MotionAction
|
|
{
|
|
public override object Clone()
|
|
{
|
|
return this.MemberwiseClone();
|
|
}
|
|
}
|
|
}
|