public static Transform ReadTransform(this Stream stream, bool reverse = false) { Single2 translation = ReadSingle2(stream, reverse); Single2x2 rotation = ReadSingle2x2(stream, reverse); return(new Transform(translation, rotation)); }
public static void WriteSingle2x2(this Stream stream, Single2x2 value, bool reverse = false) { stream.WriteSingle(value.XX, reverse); stream.WriteSingle(value.XY, reverse); stream.WriteSingle(value.YX, reverse); stream.WriteSingle(value.YY, reverse); }
// ---------------------------------------------------------------------------------------- #region BaseObject protected override void CopyFrom(object o) { base.CopyFrom(o); Moveable value = o as Moveable ?? throw new InvalidTypeException(o, nameof(Moveable), 508235); Position = value.Position; Rotation = value.Rotation; }
// ---------------------------------------------------------------------------------------- #region Segment public override void UpdateTransforms() // Zet ze 2 aan 2 naast elkaar { base.UpdateTransforms(); float w2 = 0.5f * Width; float pi2 = (float)(0.5d * PI); int count = Count; for (int i = 0; i < count; i++) { Visual visual = this[i]; Leg leg = visual as Leg ?? throw new VarNullException(nameof(leg), 896174); float sgn = i % 2 == 0 ? 1 : -1; float x = (1 + 2 * (i / 2)) * Length / count; visual.Transform = new Transform( new Single2(x, sgn * w2), Single2x2.Rotation(sgn * (pi2 + leg.Angle)) ); } }
public Moveable(Stream stream, BinarySerializer serializer) : base(stream, serializer) { Position = stream.ReadSingle2(); Rotation = stream.ReadSingle2x2(); }
// ---------------------------------------------------------------------------------------- #region Constructors public Transform(Single2 position, Single2x2 rotation) { Translation = position; Rotation = rotation; }