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.
TheBrokenRail a967ba2952
All checks were successful
Gestus/pipeline/head This commit looks good
1.0.0
2020-08-11 17:00:26 -04:00

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;
}
}