Завершить state machine персонажа

This commit is contained in:
2026-08-19 03:20:24 +03:00
parent 0943caa3cc
commit 62ee6877f9
12 changed files with 463 additions and 8 deletions
@@ -84,4 +84,32 @@ public final class VolunteerRigTest {
assertEquals(VolunteerRig.Motion.DEAD,
VolunteerRig.bodyMotion(false, false, false));
}
@Test
public void everyLivingCharacterStateHasAnExplicitAnimationMotion() {
for (CharacterStateMachine.State state : CharacterStateMachine.State.values()) {
assertEquals(state.name(), VolunteerRig.motionFor(state).name());
}
}
@Test
public void transientCharacterStatesHaveNonColorPoseSignals() {
VolunteerRig.Skin skin = VolunteerRig.Skin.BRASS_SCOUT;
VolunteerRig.Pose idle = VolunteerRig.pose(skin, VolunteerRig.Motion.IDLE, 0.25f, 1);
VolunteerRig.Pose turn = VolunteerRig.pose(skin, VolunteerRig.Motion.TURN, 0.25f, 1);
VolunteerRig.Pose land = VolunteerRig.pose(skin, VolunteerRig.Motion.LAND, 0.25f, 1);
VolunteerRig.Pose interact = VolunteerRig.pose(
skin, VolunteerRig.Motion.INTERACT, 0.25f, 1);
VolunteerRig.Pose stunned = VolunteerRig.pose(
skin, VolunteerRig.Motion.STUNNED, 0.25f, 1);
assertNotEquals(idle.x(VolunteerRig.Joint.LEFT_HAND),
turn.x(VolunteerRig.Joint.LEFT_HAND), 0.001f);
assertNotEquals(idle.y(VolunteerRig.Joint.ROOT),
land.y(VolunteerRig.Joint.ROOT), 0.001f);
assertNotEquals(idle.x(VolunteerRig.Joint.RIGHT_HAND),
interact.x(VolunteerRig.Joint.RIGHT_HAND), 0.001f);
assertNotEquals(idle.y(VolunteerRig.Joint.LEFT_HAND),
stunned.y(VolunteerRig.Joint.LEFT_HAND), 0.001f);
}
}