internal AnimatedObject Clone() {
AnimatedObject Result = new AnimatedObject();
Result.States = new AnimatedObjectState[this.States.Length];
for (int i = 0; i < this.States.Length; i++) {
Result.States[i].Position = this.States[i].Position;
Result.States[i].Object = CloneObject(this.States[i].Object);
}
Result.StateFunction = this.StateFunction == null ? null : this.StateFunction.Clone();
Result.CurrentState = this.CurrentState;
Result.TranslateZDirection = this.TranslateZDirection;
Result.TranslateYDirection = this.TranslateYDirection;
Result.TranslateXDirection = this.TranslateXDirection;
Result.TranslateXFunction = this.TranslateXFunction == null ? null : this.TranslateXFunction.Clone();
Result.TranslateYFunction = this.TranslateYFunction == null ? null : this.TranslateYFunction.Clone();
Result.TranslateZFunction = this.TranslateZFunction == null ? null : this.TranslateZFunction.Clone();
Result.RotateXDirection = this.RotateXDirection;
Result.RotateYDirection = this.RotateYDirection;
Result.RotateZDirection = this.RotateZDirection;
Result.RotateXFunction = this.RotateXFunction == null ? null : this.RotateXFunction.Clone();
Result.RotateXDamping = this.RotateXDamping == null ? null : this.RotateXDamping.Clone();
Result.RotateYFunction = this.RotateYFunction == null ? null : this.RotateYFunction.Clone();
Result.RotateYDamping = this.RotateYDamping == null ? null : this.RotateYDamping.Clone();
Result.RotateZFunction = this.RotateZFunction == null ? null : this.RotateZFunction.Clone();
Result.RotateZDamping = this.RotateZDamping == null ? null : this.RotateZDamping.Clone();
Result.TextureShiftXDirection = this.TextureShiftXDirection;
Result.TextureShiftYDirection = this.TextureShiftYDirection;
Result.TextureShiftXFunction = this.TextureShiftXFunction == null ? null : this.TextureShiftXFunction.Clone();
Result.TextureShiftYFunction = this.TextureShiftYFunction == null ? null : this.TextureShiftYFunction.Clone();
Result.LEDClockwiseWinding = this.LEDClockwiseWinding;
Result.LEDInitialAngle = this.LEDInitialAngle;
Result.LEDLastAngle = this.LEDLastAngle;
if (this.LEDVectors != null) {
Result.LEDVectors = new World.Vector3D[this.LEDVectors.Length];
for (int i = 0; i < this.LEDVectors.Length; i++) {
Result.LEDVectors[i] = this.LEDVectors[i];
}
} else {
Result.LEDVectors = null;
}
Result.LEDFunction = this.LEDFunction == null ? null : this.LEDFunction.Clone();
Result.RefreshRate = this.RefreshRate;
Result.CurrentTrackZOffset = 0.0;
Result.SecondsSinceLastUpdate = 0.0;
Result.ObjectIndex = -1;
return Result;
}
}