39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
package com.thebrokenrail.gestus.emote;
|
|
|
|
import net.minecraft.util.math.EulerAngle;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class EmoteFrame {
|
|
public final Map<EmotePart, EulerAngle> rightHanded;
|
|
public final Map<EmotePart, EulerAngle> leftHanded;
|
|
|
|
public EmoteFrame(Map<EmotePart, EulerAngle> data) {
|
|
rightHanded = resolve(data, false);
|
|
leftHanded = resolve(data, true);
|
|
}
|
|
|
|
private static Map<EmotePart, EulerAngle> resolve(Map<EmotePart, EulerAngle> data, boolean leftHanded) {
|
|
Map<EmotePart, EulerAngle> result = new HashMap<>();
|
|
for (Map.Entry<EmotePart, EulerAngle> entry : data.entrySet()) {
|
|
if (entry.getKey() == EmotePart.MAIN_ARM) {
|
|
if (leftHanded) {
|
|
result.put(EmotePart.LEFT_ARM, new EulerAngle(entry.getValue().getPitch(), -entry.getValue().getYaw(), -entry.getValue().getRoll()));
|
|
} else {
|
|
result.put(EmotePart.RIGHT_ARM, entry.getValue());
|
|
}
|
|
} else if (entry.getKey() == EmotePart.OFF_ARM) {
|
|
if (leftHanded) {
|
|
result.put(EmotePart.RIGHT_ARM, new EulerAngle(entry.getValue().getPitch(), -entry.getValue().getYaw(), -entry.getValue().getRoll()));
|
|
} else {
|
|
result.put(EmotePart.LEFT_ARM, entry.getValue());
|
|
}
|
|
} else {
|
|
result.put(entry.getKey(), entry.getValue());
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
}
|