// Path: src/main/java/craftedcart/smblevelworkshop/util/MathUtils.java
// public class MathUtils {
// 
//     public static double lerp(double a, double b, double f) {
//         return a + f * (b - a);
//     }
// 
//     /**
//      * Linearly interpolates between two {@link UIColor}s
//      *
//      * @param a The starting {@link UIColor}
//      * @param b The ending {@link UIColor}
//      * @param f The percentage between the two {@link UIColor}
//      * @return The {@link UIColor} which if f% between a and b
//      */
//     public static UIColor lerpUIColor(UIColor a, UIColor b, float f) {
//         return new UIColor(a.r * 255 + f * (b.r * 255 - a.r * 255),
//                 a.g * 255 + f * (b.g * 255 - a.g * 255),
//                 a.b * 255 + f * (b.b * 255 - a.b * 255),
//                 a.a * 255 + f * (b.a * 255 - a.a * 255));
//     }
// 
//     public static double clamp(double val, double min, double max) {
//         return Math.max(min, Math.min(max, val));
//     }
// 
//     public static PosXYZ normalizeRotation(PosXYZ rot) {
//         while (rot.x >= 360) {
//             rot.x -= 360;
//         }
// 
//         while (rot.y >= 360) {
//             rot.y -= 360;
//         }
// 
//         while (rot.z >= 360) {
//             rot.z -= 360;
//         }
// 
//         while (rot.x < 0) {
//             rot.x += 360;
//         }
// 
//         while (rot.y < 0) {
//             rot.y += 360;
//         }
// 
//         while (rot.z < 0) {
//             rot.z += 360;
//         }
// 
//         return rot;
//     }
// 
//     public static boolean isInRange(double val, double min, double max) {
//         return val >= min && val <= max;
//     }
// 
//     public static float snapTo(float val, float snapTo) {
//         float roundMultiplier = 1.0f / snapTo;
//         return Math.round(val * roundMultiplier) / roundMultiplier;
//     }
// 
//     /**
//      * @param t A value from 0 to 1
//      * @return Quadratic interpolated value between 0 and 1
//      */
//     public static float cubicEaseInOut(float t) {
//         return t < 0.5f ? 4 * t * t * t : (t - 1f) * (2f * t - 2f) * (2f * t - 2f) + 1f;
//     }
// 
// }
// 
// Path: src/main/java/craftedcart/smblevelworkshop/util/PosXYZ.java
// public class PosXYZ {
// 
//     public double x;
//     public double y;
//     public double z;
// 
//     public PosXYZ() {}
// 
//     public PosXYZ(double x, double y, double z) {
//         this.x = x;
//         this.y = y;
//         this.z = z;
//     }
// 
//     public PosXYZ(craftedcart.smbworkshopexporter.util.Vec3f vec3f) {
//         this.x = vec3f.x;
//         this.y = vec3f.y;
//         this.z = vec3f.z;
//     }
// 
//     public PosXYZ add(PosXYZ pos) {
//         return new PosXYZ(this.x + pos.x, this.y + pos.y, this.z + pos.z);
//     }
// 
//     public PosXYZ add(double x, double y, double z) {
//         return new PosXYZ(this.x + x, this.y + y, this.z + z);
//     }
// 
//     public PosXYZ subtract(PosXYZ pos) {
//         return new PosXYZ(this.x - pos.x, this.y - pos.y, this.z - pos.z);
//     }
// 
//     public PosXYZ subtract(double x, double y, double z) {
//         return new PosXYZ(this.x - x, this.y - y, this.z - z);
//     }
// 
//     public PosXYZ multiply(double factor) {
//         return new PosXYZ(x * factor, y * factor, z * factor);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (obj instanceof PosXYZ) {
//             PosXYZ posObj = (PosXYZ) obj;
//             return posObj.x == x && posObj.y == y && posObj.z == z;
//         } else {
//             return false;
//         }
//     }
// 
//     public PosXYZ getCopy() {
//         return new PosXYZ(x, y, z);
//     }
// 
// }
// 
// Path: src/main/java/craftedcart/smblevelworkshop/util/QuickMapEntry.java
// public class QuickMapEntry<K, V> implements Map.Entry<K, V> {
// 
//     private K key;
//     private V value;
// 
//     public QuickMapEntry(K key, V value) {
//         this.key = key;
//         this.value = value;
//     }
// 
//     @Override
//     public K getKey() {
//         return key;
//     }
// 
//     @Override
//     public V getValue() {
//         return value;
//     }
// 
//     @Override
//     public V setValue(V value) {
//         return null;
//     }
// 
// }


import craftedcart.smblevelworkshop.util.MathUtils;
import craftedcart.smblevelworkshop.util.PosXYZ;
import craftedcart.smblevelworkshop.util.QuickMapEntry;
import craftedcart.smbworkshopexporter.ConfigAnimData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
package craftedcart.smblevelworkshop.animation;



/**
 * @author CraftedCart
 *         Created on 30/10/2016 (DD/MM/YYYY)
 */
@Deprecated
public class AnimData {

// Path: src/main/java/craftedcart/smblevelworkshop/util/MathUtils.java
// public class MathUtils {
// 
//     public static double lerp(double a, double b, double f) {
//         return a + f * (b - a);
//     }
// 
//     /**
//      * Linearly interpolates between two {@link UIColor}s
//      *
//      * @param a The starting {@link UIColor}
//      * @param b The ending {@link UIColor}
//      * @param f The percentage between the two {@link UIColor}
//      * @return The {@link UIColor} which if f% between a and b
//      */
//     public static UIColor lerpUIColor(UIColor a, UIColor b, float f) {
//         return new UIColor(a.r * 255 + f * (b.r * 255 - a.r * 255),
//                 a.g * 255 + f * (b.g * 255 - a.g * 255),
//                 a.b * 255 + f * (b.b * 255 - a.b * 255),
//                 a.a * 255 + f * (b.a * 255 - a.a * 255));
//     }
// 
//     public static double clamp(double val, double min, double max) {
//         return Math.max(min, Math.min(max, val));
//     }
// 
//     public static PosXYZ normalizeRotation(PosXYZ rot) {
//         while (rot.x >= 360) {
//             rot.x -= 360;
//         }
// 
//         while (rot.y >= 360) {
//             rot.y -= 360;
//         }
// 
//         while (rot.z >= 360) {
//             rot.z -= 360;
//         }
// 
//         while (rot.x < 0) {
//             rot.x += 360;
//         }
// 
//         while (rot.y < 0) {
//             rot.y += 360;
//         }
// 
//         while (rot.z < 0) {
//             rot.z += 360;
//         }
// 
//         return rot;
//     }
// 
//     public static boolean isInRange(double val, double min, double max) {
//         return val >= min && val <= max;
//     }
// 
//     public static float snapTo(float val, float snapTo) {
//         float roundMultiplier = 1.0f / snapTo;
//         return Math.round(val * roundMultiplier) / roundMultiplier;
//     }
// 
//     /**
//      * @param t A value from 0 to 1
//      * @return Quadratic interpolated value between 0 and 1
//      */
//     public static float cubicEaseInOut(float t) {
//         return t < 0.5f ? 4 * t * t * t : (t - 1f) * (2f * t - 2f) * (2f * t - 2f) + 1f;
//     }
// 
// }
// 
// Path: src/main/java/craftedcart/smblevelworkshop/util/PosXYZ.java
// public class PosXYZ {
// 
//     public double x;
//     public double y;
//     public double z;
// 
//     public PosXYZ() {}
// 
//     public PosXYZ(double x, double y, double z) {
//         this.x = x;
//         this.y = y;
//         this.z = z;
//     }
// 
//     public PosXYZ(craftedcart.smbworkshopexporter.util.Vec3f vec3f) {
//         this.x = vec3f.x;
//         this.y = vec3f.y;
//         this.z = vec3f.z;
//     }
// 
//     public PosXYZ add(PosXYZ pos) {
//         return new PosXYZ(this.x + pos.x, this.y + pos.y, this.z + pos.z);
//     }
// 
//     public PosXYZ add(double x, double y, double z) {
//         return new PosXYZ(this.x + x, this.y + y, this.z + z);
//     }
// 
//     public PosXYZ subtract(PosXYZ pos) {
//         return new PosXYZ(this.x - pos.x, this.y - pos.y, this.z - pos.z);
//     }
// 
//     public PosXYZ subtract(double x, double y, double z) {
//         return new PosXYZ(this.x - x, this.y - y, this.z - z);
//     }
// 
//     public PosXYZ multiply(double factor) {
//         return new PosXYZ(x * factor, y * factor, z * factor);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (obj instanceof PosXYZ) {
//             PosXYZ posObj = (PosXYZ) obj;
//             return posObj.x == x && posObj.y == y && posObj.z == z;
//         } else {
//             return false;
//         }
//     }
// 
//     public PosXYZ getCopy() {
//         return new PosXYZ(x, y, z);
//     }
// 
// }
// 
// Path: src/main/java/craftedcart/smblevelworkshop/util/QuickMapEntry.java
// public class QuickMapEntry<K, V> implements Map.Entry<K, V> {
// 
//     private K key;
//     private V value;
// 
//     public QuickMapEntry(K key, V value) {
//         this.key = key;
//         this.value = value;
//     }
// 
//     @Override
//     public K getKey() {
//         return key;
//     }
// 
//     @Override
//     public V getValue() {
//         return value;
//     }
// 
//     @Override
//     public V setValue(V value) {
//         return null;
//     }
// 
// }


// Path: src/main/java/craftedcart/smblevelworkshop/animation/AnimData.java
import craftedcart.smblevelworkshop.util.MathUtils;
import craftedcart.smblevelworkshop.util.PosXYZ;
import craftedcart.smblevelworkshop.util.QuickMapEntry;
import craftedcart.smbworkshopexporter.ConfigAnimData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;

package craftedcart.smblevelworkshop.animation;



/**
 * @author CraftedCart
 *         Created on 30/10/2016 (DD/MM/YYYY)
 */
@Deprecated
public class AnimData {

    @NotNull protected PosXYZ rotationCenter = new PosXYZ();