This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
Gestus/src/main/java/com/thebrokenrail/gestus/emote/EmoteFrame.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;
}
}