Adds better swimming/floating logic, Changes tail code logic

This commit is contained in:
2026-06-15 12:54:31 -04:00
parent efb326a186
commit 9e022dd562
105 changed files with 1284 additions and 907 deletions
@@ -11,7 +11,7 @@ public class Constants
public static final String MOD_NAME = "JurassicRevived"; public static final String MOD_NAME = "JurassicRevived";
public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME); public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME);
public static final boolean DEBUG_SIZES = true; public static final boolean DEBUG_SIZES = false;
public static ResourceLocation rl(String path) { public static ResourceLocation rl(String path) {
//? if >1.20.1 { //? if >1.20.1 {
@@ -353,15 +353,15 @@ public class ModEntities {
public static final RegistrySupplier<EntityType<CoelacanthEntity>> COELACANTH = public static final RegistrySupplier<EntityType<CoelacanthEntity>> COELACANTH =
ENTITIES.register("coelacanth", () -> EntityType.Builder.of(CoelacanthEntity::new, MobCategory.CREATURE) ENTITIES.register("coelacanth", () -> EntityType.Builder.of(CoelacanthEntity::new, MobCategory.CREATURE)
.sized(1.3f, 1.8f).build("coelacanth")); .sized(0.4f, 0.5f).build("coelacanth"));
public static final RegistrySupplier<EntityType<MawsoniaEntity>> MAWSONIA = public static final RegistrySupplier<EntityType<MawsoniaEntity>> MAWSONIA =
ENTITIES.register("mawsonia", () -> EntityType.Builder.of(MawsoniaEntity::new, MobCategory.CREATURE) ENTITIES.register("mawsonia", () -> EntityType.Builder.of(MawsoniaEntity::new, MobCategory.CREATURE)
.sized(1.3f, 1.8f).build("mawsonia")); .sized(0.9f, 1.4f).build("mawsonia"));
public static final RegistrySupplier<EntityType<AlligatorGarEntity>> ALLIGATOR_GAR = public static final RegistrySupplier<EntityType<AlligatorGarEntity>> ALLIGATOR_GAR =
ENTITIES.register("alligator_gar", () -> EntityType.Builder.of(AlligatorGarEntity::new, MobCategory.CREATURE) ENTITIES.register("alligator_gar", () -> EntityType.Builder.of(AlligatorGarEntity::new, MobCategory.CREATURE)
.sized(1.3f, 1.8f).build("alligator_gar")); .sized(0.4f, 0.6f).build("alligator_gar"));
public static void registerAttributes() { public static void registerAttributes() {
EntityAttributeRegistry.register(APATOSAURUS, ApatosaurusEntity::createAttributes); EntityAttributeRegistry.register(APATOSAURUS, ApatosaurusEntity::createAttributes);
@@ -125,6 +125,7 @@ public class DinoAIController {
if (homePos == null) homePos = dino.blockPosition(); if (homePos == null) homePos = dino.blockPosition();
handleFloating(); handleFloating();
handleWideHitboxJumping();
updateSensors(); updateSensors();
checkBreedingReadiness(); checkBreedingReadiness();
@@ -576,7 +577,7 @@ public class DinoAIController {
return handleAvianWaterHuntingMovement(target); return handleAvianWaterHuntingMovement(target);
} }
if (isGroundCreature()) { if (isGroundCreature() || dino.isAmphibious()) {
return handleTerrestrialWaterExitMovement(); return handleTerrestrialWaterExitMovement();
} }
@@ -735,10 +736,8 @@ public class DinoAIController {
return false; return false;
} }
double fluidHeight = dino.getFluidHeight(FluidTags.WATER); if (dino.horizontalCollision) {
Vec3 velocity = dino.getDeltaMovement(); Vec3 velocity = dino.getDeltaMovement();
if (fluidHeight > dino.getFluidJumpThreshold() * 0.6D || dino.horizontalCollision) {
dino.setDeltaMovement( dino.setDeltaMovement(
velocity.x, velocity.x,
Math.min(velocity.y + 0.06D, TERRESTRIAL_WATER_EXIT_BOOST), Math.min(velocity.y + 0.06D, TERRESTRIAL_WATER_EXIT_BOOST),
@@ -800,19 +799,15 @@ public class DinoAIController {
return; return;
} }
Vec3 normalized = direction.normalize(); // Instead of forcing the YRot and XRot instantly, tell the LookControl where to look.
// The 30.0F values dictate the maximum turn speed per tick (yaw and pitch).
float yaw = (float)(Mth.atan2(normalized.z, normalized.x) * Mth.RAD_TO_DEG) - 90.0F; dino.getLookControl().setLookAt(
float pitch = (float)(-(Mth.atan2(normalized.y, Math.sqrt(normalized.x * normalized.x + normalized.z * normalized.z)) * Mth.RAD_TO_DEG)); dino.getX() + direction.x,
dino.getY() + direction.y,
dino.setYRot(yaw); dino.getZ() + direction.z,
dino.yRotO = yaw; 30.0F,
dino.yBodyRot = yaw; 30.0F
dino.yBodyRotO = yaw; );
dino.yHeadRot = yaw;
dino.yHeadRotO = yaw;
dino.setXRot(Mth.clamp(pitch, -75.0F, 75.0F));
dino.xRotO = dino.getXRot();
} }
// --- STATE LOGIC --- // --- STATE LOGIC ---
@@ -1080,12 +1075,6 @@ public class DinoAIController {
return; return;
} }
boolean resumed = false;
if (roamTarget != null) {
resumed = dino.getNavigation().moveTo(roamTarget.x, roamTarget.y, roamTarget.z, getRoamSpeed());
}
if (!resumed) {
findAndSetRoamTarget(); findAndSetRoamTarget();
if (this.roamTarget == null) { if (this.roamTarget == null) {
if (dino instanceof FlyingAnimal && !dino.onGround()) { if (dino instanceof FlyingAnimal && !dino.onGround()) {
@@ -1096,7 +1085,6 @@ public class DinoAIController {
} }
} }
} }
}
private void findAndSetRoamTarget() { private void findAndSetRoamTarget() {
this.roamTarget = null; this.roamTarget = null;
@@ -1265,25 +1253,10 @@ public class DinoAIController {
transitionTo(State.IDLE); transitionTo(State.IDLE);
return; return;
} }
this.roamTarget = null;
boolean resumed = false;
if (roamTarget != null) {
resumed = dino.getNavigation().moveTo(
roamTarget.x,
roamTarget.y,
roamTarget.z,
getTerritorialRoamSpeed()
);
}
if (!resumed) {
findAndSetTerritorialTarget();
if (this.roamTarget == null) {
transitionTo(State.IDLE); transitionTo(State.IDLE);
} }
} }
}
}
private double getBaseRoamSpeed() { private double getBaseRoamSpeed() {
double speed = Math.max(dino.getAIConfig().walkSpeed(), MIN_ROAM_SPEED); double speed = Math.max(dino.getAIConfig().walkSpeed(), MIN_ROAM_SPEED);
@@ -1472,7 +1445,9 @@ public class DinoAIController {
boolean waterMovementHandled = handleWaterMovementHelper(attackTarget); boolean waterMovementHandled = handleWaterMovementHelper(attackTarget);
if (dino.distanceToSqr(attackTarget) > 1.0D) {
dino.getLookControl().setLookAt(attackTarget, 30.0F, 30.0F); dino.getLookControl().setLookAt(attackTarget, 30.0F, 30.0F);
}
double distSqr = dino.distanceToSqr(attackTarget); double distSqr = dino.distanceToSqr(attackTarget);
double reachMult = dino.getAIConfig().attackReach(); double reachMult = dino.getAIConfig().attackReach();
@@ -1509,12 +1484,11 @@ public class DinoAIController {
return; return;
} }
if (pathRecalcTimer-- <= 0 || dino.getNavigation().isDone()) { if (pathRecalcTimer-- <= 0) {
if (!dino.getNavigation().moveTo(attackTarget, dino.getAIConfig().runSpeed())) { if (!dino.getNavigation().moveTo(attackTarget, dino.getAIConfig().runSpeed())) {
pathRecalcTimer = 10; // Wait before retrying to prevent rapid failure loops pathRecalcTimer = 10;
failedPathfindingAttempts++; failedPathfindingAttempts++;
// Tolerance allows for temporary pathfinding failures (e.g., target inside hitbox)
if (failedPathfindingAttempts > 5) { if (failedPathfindingAttempts > 5) {
if (isAvianWaterHunter() && isUnderwaterTarget(attackTarget)) { if (isAvianWaterHunter() && isUnderwaterTarget(attackTarget)) {
failedPathfindingAttempts = 0; failedPathfindingAttempts = 0;
@@ -1539,7 +1513,9 @@ public class DinoAIController {
boolean waterMovementHandled = handleWaterMovementHelper(attackTarget); boolean waterMovementHandled = handleWaterMovementHelper(attackTarget);
if (dino.distanceToSqr(attackTarget) > 1.0D) {
dino.getLookControl().setLookAt(attackTarget, 30.0F, 30.0F); dino.getLookControl().setLookAt(attackTarget, 30.0F, 30.0F);
}
double distSqr = dino.distanceToSqr(attackTarget); double distSqr = dino.distanceToSqr(attackTarget);
double reachMult = dino.getAIConfig().attackReach(); double reachMult = dino.getAIConfig().attackReach();
@@ -1580,7 +1556,10 @@ public class DinoAIController {
} else if (isAvianWaterHunter() && avianDiveInProgress) { } else if (isAvianWaterHunter() && avianDiveInProgress) {
dino.getNavigation().stop(); dino.getNavigation().stop();
} else if (distSqr > stopDistSqr) { } else if (distSqr > stopDistSqr) {
if (pathRecalcTimer-- <= 0) {
dino.getNavigation().moveTo(attackTarget, dino.getAIConfig().runSpeed()); dino.getNavigation().moveTo(attackTarget, dino.getAIConfig().runSpeed());
pathRecalcTimer = 10;
}
} else { } else {
dino.getNavigation().stop(); dino.getNavigation().stop();
} }
@@ -1672,6 +1651,31 @@ public class DinoAIController {
} }
} }
private void handleWideHitboxJumping() {
// We only care about grounded entities that are bumping into something
if (!dino.onGround() || !dino.horizontalCollision) {
return;
}
// Vanilla jump logic works fine for small mobs, only intercept for wide ones
if (dino.getBbWidth() <= 1.0F) {
return;
}
Path path = dino.getNavigation().getPath();
if (path != null && !path.isDone()) {
Node nextNode = path.getNextNode();
if (nextNode != null) {
// If the path's next node is higher than the dinosaur's current block height,
// force it to jump, ignoring Vanilla's strict distance checks.
if (nextNode.y > dino.getBlockY()) {
dino.getJumpControl().jump();
}
}
}
}
private Vec3 getMarineRoamPos() { private Vec3 getMarineRoamPos() {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
BlockPos randomPos = dino.blockPosition().offset( BlockPos randomPos = dino.blockPosition().offset(
@@ -79,7 +79,7 @@ public class AchillobatorModel extends GeoModel<AchillobatorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class AlbertosaurusModel extends GeoModel<AlbertosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class AlligatorGarModel extends GeoModel<AlligatorGarEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -86,7 +86,7 @@ public class AllosaurusModel extends GeoModel<AllosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class AlvarezsaurusModel extends GeoModel<AlvarezsaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -86,7 +86,7 @@ public class AnkylosaurusModel extends GeoModel<AnkylosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class ApatosaurusModel extends GeoModel<ApatosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ArambourgianiaModel extends GeoModel<ArambourgianiaEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class BaryonyxModel extends GeoModel<BaryonyxEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class BrachiosaurusModel extends GeoModel<BrachiosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CarcharodontosaurusModel extends GeoModel<CarcharodontosaurusEntity
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CarnotaurusModel extends GeoModel<CarnotaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CearadactylusModel extends GeoModel<CearadactylusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CeratosaurusModel extends GeoModel<CeratosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ChasmosaurusModel extends GeoModel<ChasmosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class ChickenosaurusModel extends GeoModel<ChickenosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class ChilesaurusModel extends GeoModel<ChilesaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class CoelacanthModel extends GeoModel<CoelacanthEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class CoelophysisModel extends GeoModel<CoelophysisEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class CoelurusModel extends GeoModel<CoelurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CompsognathusModel extends GeoModel<CompsognathusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -79,7 +79,7 @@ public class ConcavenatorModel extends GeoModel<ConcavenatorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class CorythosaurusModel extends GeoModel<CorythosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class DeinonychusModel extends GeoModel<DeinonychusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -86,7 +86,7 @@ public class DilophosaurusModel extends GeoModel<DilophosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class DimorphodonModel extends GeoModel<DimorphodonEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class DiplodocusModel extends GeoModel<DiplodocusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class DistortusRexModel extends GeoModel<DistortusRexEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class DryosaurusModel extends GeoModel<DryosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class EdmontosaurusModel extends GeoModel<EdmontosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class FDuckModel extends GeoModel<FDuckEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class GallimimusModel extends GeoModel<GallimimusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -77,7 +77,7 @@ public class GeosternbergiaModel extends GeoModel<GeosternbergiaEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class GiganotosaurusModel extends GeoModel<GiganotosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class GuanlongModel extends GeoModel<GuanlongEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class GuidracoModel extends GeoModel<GuidracoEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class HadrosaurusModel extends GeoModel<HadrosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class HerrerasaurusModel extends GeoModel<HerrerasaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class HypsilophodonModel extends GeoModel<HypsilophodonEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class IndominusRexModel extends GeoModel<IndominusRexEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f };
@@ -79,7 +79,7 @@ public class IndoraptorModel extends GeoModel<IndoraptorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f };
@@ -79,7 +79,7 @@ public class InostranceviaModel extends GeoModel<InostranceviaEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class LambeosaurusModel extends GeoModel<LambeosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -86,7 +86,7 @@ public class LudodactylusModel extends GeoModel<LudodactylusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class MajungasaurusModel extends GeoModel<MajungasaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class MamenchisaurusModel extends GeoModel<MamenchisaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f, 0.08f, 0.06f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f, 0.08f, 0.06f };
@@ -79,7 +79,7 @@ public class MawsoniaModel extends GeoModel<MawsoniaEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -79,7 +79,7 @@ public class MetriacanthosaurusModel extends GeoModel<MetriacanthosaurusEntity>
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f };
@@ -79,7 +79,7 @@ public class MoganopterusModel extends GeoModel<MoganopterusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class MussasaurusModel extends GeoModel<MussasaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.10f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.10f };
@@ -79,7 +79,7 @@ public class NyctosaurusModel extends GeoModel<NyctosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class OrnitholestesModel extends GeoModel<OrnitholestesEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f}; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f};
@@ -79,7 +79,7 @@ public class OrnithomimusModel extends GeoModel<OrnithomimusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class OuranosaurusModel extends GeoModel<OuranosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class OviraptorModel extends GeoModel<OviraptorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -79,7 +79,7 @@ public class PachycephalosaurusModel extends GeoModel<PachycephalosaurusEntity>
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class ParasaurolophusModel extends GeoModel<ParasaurolophusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ProceratosaurusModel extends GeoModel<ProceratosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class ProcompsognathusModel extends GeoModel<ProcompsognathusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ProtoceratopsModel extends GeoModel<ProtoceratopsEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f };
@@ -79,7 +79,7 @@ public class PteranodonModel extends GeoModel<PteranodonEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class PterodaustroModel extends GeoModel<PterodaustroEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class QuetzalcoatlusModel extends GeoModel<QuetzalcoatlusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class RajasaurusModel extends GeoModel<RajasaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class RugopsModel extends GeoModel<RugopsEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class SegisaurusModel extends GeoModel<SegisaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f };
@@ -79,7 +79,7 @@ public class ShantungosaurusModel extends GeoModel<ShantungosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class SpinosaurusModel extends GeoModel<SpinosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class StegosaurusModel extends GeoModel<StegosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class StyracosaurusModel extends GeoModel<StyracosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class SuchomimusModel extends GeoModel<SuchomimusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class TapejaraModel extends GeoModel<TapejaraEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class TherizinosaurusModel extends GeoModel<TherizinosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ThescelosaurusModel extends GeoModel<ThescelosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f };
@@ -79,7 +79,7 @@ public class TitanosaurusModel extends GeoModel<TitanosaurusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f, 0.16f, 0.12f };
@@ -79,7 +79,7 @@ public class TriceratopsModel extends GeoModel<TriceratopsEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class TroodonModel extends GeoModel<TroodonEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class TropeognathusModel extends GeoModel<TropeognathusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -79,7 +79,7 @@ public class TupuxuaraModel extends GeoModel<TupuxuaraEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -93,7 +93,7 @@ public class TyrannosaurusRexModel extends GeoModel<TyrannosaurusRexEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class UtahraptorModel extends GeoModel<UtahraptorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -104,7 +104,7 @@ public class VelociraptorModel extends GeoModel<VelociraptorEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f };
@@ -79,7 +79,7 @@ public class ZhenyuanopterusModel extends GeoModel<ZhenyuanopterusEntity> {
// Direction: positive sway (left turn) -> tail swings right (negative yaw) // Direction: positive sway (left turn) -> tail swings right (negative yaw)
// Flip the sign here if the sway feels inverted // Flip the sign here if the sway feels inverted
float baseYaw = sway * maxYawDeg * deg2rad; float baseYaw = (sway * swayGain) * maxYawDeg * deg2rad;
float baseRoll = -baseYaw * rollFraction; float baseRoll = -baseYaw * rollFraction;
float[] weights = { 1.00f, 0.78f, 0.58f }; float[] weights = { 1.00f, 0.78f, 0.58f };
@@ -45,7 +45,7 @@ public class AlligatorGarEntity extends DinoEntityBase implements GeoEntity {
private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this); private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this);
public static final int BABY_TO_ADULT_AGE_TICKS = 28800; public static final int BABY_TO_ADULT_AGE_TICKS = 28800;
private static final float ANIMAL_SCALE = 1.0F; private static final float ANIMAL_SCALE = 1.4F;
private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE; private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE;
private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE; private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE;
@@ -164,9 +164,16 @@ public class BaryonyxEntity extends DinoEntityBase implements GeoEntity {
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { public void registerControllers(AnimatableManager.ControllerRegistrar controllers) {
controllers.add(new AnimationController<>(this, "Walk/Run/Idle", 5, state -> { controllers.add(new AnimationController<>(this, "MovementController", 5, state -> {
if (state.isMoving()) if (BaryonyxEntity.this.isWaterDeepEnoughToSwim()) {
return state.setAndContinue(BaryonyxEntity.this.isSprinting() ? RawAnimation.begin().then("anim.baryonyx.run", Animation.LoopType.LOOP) : RawAnimation.begin().then("anim.baryonyx.walk", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.baryonyx.swim", Animation.LoopType.LOOP));
}
if (state.isMoving()) {
return state.setAndContinue(BaryonyxEntity.this.isSprinting()
? RawAnimation.begin().then("anim.baryonyx.run", Animation.LoopType.LOOP)
: RawAnimation.begin().then("anim.baryonyx.walk", Animation.LoopType.LOOP));
}
return state.setAndContinue(RawAnimation.begin().then("anim.baryonyx.idle", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.baryonyx.idle", Animation.LoopType.LOOP));
})); }));
@@ -178,6 +185,10 @@ public class BaryonyxEntity extends DinoEntityBase implements GeoEntity {
.triggerableAnim("mouth", RawAnimation.begin().then("anim.baryonyx.mouth", Animation.LoopType.PLAY_ONCE))); .triggerableAnim("mouth", RawAnimation.begin().then("anim.baryonyx.mouth", Animation.LoopType.PLAY_ONCE)));
} }
private boolean isWaterDeepEnoughToSwim() {
return this.isInWater() && this.level().getBlockState(this.blockPosition().below()).getFluidState().isSource();
}
private float getSignedTurnDelta() { private float getSignedTurnDelta() {
// Only consider the body (torso) rotation so head look does not affect tail sway // Only consider the body (torso) rotation so head look does not affect tail sway
return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO);
@@ -51,7 +51,7 @@ public class CoelacanthEntity extends DinoEntityBase implements GeoEntity {
private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this); private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this);
public static final int BABY_TO_ADULT_AGE_TICKS = 28800; public static final int BABY_TO_ADULT_AGE_TICKS = 28800;
private static final float ANIMAL_SCALE = 1.0F; private static final float ANIMAL_SCALE = 1.5F;
private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE; private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE;
private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE; private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE;
@@ -45,7 +45,7 @@ public class MawsoniaEntity extends DinoEntityBase implements GeoEntity {
private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this); private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this);
public static final int BABY_TO_ADULT_AGE_TICKS = 28800; public static final int BABY_TO_ADULT_AGE_TICKS = 28800;
private static final float ANIMAL_SCALE = 1.0F; private static final float ANIMAL_SCALE = 1.8F;
private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE; private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE;
private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE; private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE;
@@ -166,9 +166,16 @@ public class SpinosaurusEntity extends DinoEntityBase implements GeoEntity {
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { public void registerControllers(AnimatableManager.ControllerRegistrar controllers) {
controllers.add(new AnimationController<>(this, "Walk/Run/Idle", 5, state -> { controllers.add(new AnimationController<>(this, "MovementController", 5, state -> {
if (state.isMoving()) if (SpinosaurusEntity.this.isWaterDeepEnoughToSwim()) {
return state.setAndContinue(SpinosaurusEntity.this.isSprinting() ? RawAnimation.begin().then("anim.spinosaurus.run", Animation.LoopType.LOOP) : RawAnimation.begin().then("anim.spinosaurus.walk", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.spinosaurus.swim", Animation.LoopType.LOOP));
}
if (state.isMoving()) {
return state.setAndContinue(SpinosaurusEntity.this.isSprinting()
? RawAnimation.begin().then("anim.spinosaurus.run", Animation.LoopType.LOOP)
: RawAnimation.begin().then("anim.spinosaurus.walk", Animation.LoopType.LOOP));
}
return state.setAndContinue(RawAnimation.begin().then("anim.spinosaurus.idle", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.spinosaurus.idle", Animation.LoopType.LOOP));
})); }));
@@ -180,6 +187,10 @@ public class SpinosaurusEntity extends DinoEntityBase implements GeoEntity {
.triggerableAnim("mouth", RawAnimation.begin().then("anim.spinosaurus.mouth", Animation.LoopType.PLAY_ONCE))); .triggerableAnim("mouth", RawAnimation.begin().then("anim.spinosaurus.mouth", Animation.LoopType.PLAY_ONCE)));
} }
private boolean isWaterDeepEnoughToSwim() {
return this.isInWater() && this.level().getBlockState(this.blockPosition().below()).getFluidState().isSource();
}
private float getSignedTurnDelta() { private float getSignedTurnDelta() {
// Only consider the body (torso) rotation so head look does not affect tail sway // Only consider the body (torso) rotation so head look does not affect tail sway
return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO);
@@ -156,9 +156,16 @@ public class SuchomimusEntity extends DinoEntityBase implements GeoEntity {
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { public void registerControllers(AnimatableManager.ControllerRegistrar controllers) {
controllers.add(new AnimationController<>(this, "Walk/Run/Idle", 5, state -> { controllers.add(new AnimationController<>(this, "MovementController", 5, state -> {
if (state.isMoving()) if (SuchomimusEntity.this.isWaterDeepEnoughToSwim()) {
return state.setAndContinue(SuchomimusEntity.this.isSprinting() ? RawAnimation.begin().then("anim.suchomimus.run", Animation.LoopType.LOOP) : RawAnimation.begin().then("anim.suchomimus.walk", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.suchomimus.swim", Animation.LoopType.LOOP));
}
if (state.isMoving()) {
return state.setAndContinue(SuchomimusEntity.this.isSprinting()
? RawAnimation.begin().then("anim.suchomimus.run", Animation.LoopType.LOOP)
: RawAnimation.begin().then("anim.suchomimus.walk", Animation.LoopType.LOOP));
}
return state.setAndContinue(RawAnimation.begin().then("anim.suchomimus.idle", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.suchomimus.idle", Animation.LoopType.LOOP));
})); }));
@@ -170,6 +177,10 @@ public class SuchomimusEntity extends DinoEntityBase implements GeoEntity {
.triggerableAnim("mouth", RawAnimation.begin().then("anim.suchomimus.mouth", Animation.LoopType.PLAY_ONCE))); .triggerableAnim("mouth", RawAnimation.begin().then("anim.suchomimus.mouth", Animation.LoopType.PLAY_ONCE)));
} }
private boolean isWaterDeepEnoughToSwim() {
return this.isInWater() && this.level().getBlockState(this.blockPosition().below()).getFluidState().isSource();
}
private float getSignedTurnDelta() { private float getSignedTurnDelta() {
// Only consider the body (torso) rotation so head look does not affect tail sway // Only consider the body (torso) rotation so head look does not affect tail sway
return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO);
@@ -167,9 +167,16 @@ public class TyrannosaurusRexEntity extends DinoEntityBase implements GeoEntity
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { public void registerControllers(AnimatableManager.ControllerRegistrar controllers) {
controllers.add(new AnimationController<>(this, "Walk/Run/Idle", 5, state -> { controllers.add(new AnimationController<>(this, "MovementController", 5, state -> {
if (state.isMoving()) if (TyrannosaurusRexEntity.this.isWaterDeepEnoughToSwim()) {
return state.setAndContinue(TyrannosaurusRexEntity.this.isSprinting() ? RawAnimation.begin().then("anim.tyrannosaurus_rex.run", Animation.LoopType.LOOP) : RawAnimation.begin().then("anim.tyrannosaurus_rex.walk", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.tyrannosaurus_rex.swim", Animation.LoopType.LOOP));
}
if (state.isMoving()) {
return state.setAndContinue(TyrannosaurusRexEntity.this.isSprinting()
? RawAnimation.begin().then("anim.tyrannosaurus_rex.run", Animation.LoopType.LOOP)
: RawAnimation.begin().then("anim.tyrannosaurus_rex.walk", Animation.LoopType.LOOP));
}
return state.setAndContinue(RawAnimation.begin().then("anim.tyrannosaurus_rex.idle", Animation.LoopType.LOOP)); return state.setAndContinue(RawAnimation.begin().then("anim.tyrannosaurus_rex.idle", Animation.LoopType.LOOP));
})); }));
@@ -181,6 +188,10 @@ public class TyrannosaurusRexEntity extends DinoEntityBase implements GeoEntity
.triggerableAnim("mouth", RawAnimation.begin().then("anim.tyrannosaurus_rex.mouth", Animation.LoopType.PLAY_ONCE))); .triggerableAnim("mouth", RawAnimation.begin().then("anim.tyrannosaurus_rex.mouth", Animation.LoopType.PLAY_ONCE)));
} }
private boolean isWaterDeepEnoughToSwim() {
return this.isInWater() && this.level().getBlockState(this.blockPosition().below()).getFluidState().isSource();
}
private float getSignedTurnDelta() { private float getSignedTurnDelta() {
// Only consider the body (torso) rotation so head look does not affect tail sway // Only consider the body (torso) rotation so head look does not affect tail sway
return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO);
@@ -487,106 +487,6 @@
} }
} }
}, },
"anim.alligator_gar.mouth": {
"loop": "hold_on_last_frame",
"animation_length": 1.25,
"bones": {
"Jaw": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Lowerjawfront": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.5": {
"vector": [40, 0, 0]
},
"1.25": {
"vector": [0, 0, 0]
}
}
},
"root": {
"position": {
"vector": [0, 0, -20]
}
},
"Lowerjawrear": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.625": {
"post": {
"vector": [12.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Lowerjawtop": {
"rotation": {
"0.0": {
"post": {
"vector": [-10, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [-10, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Neck": {
"rotation": {
"0.0": {
"vector": [15, 0, 0]
},
"1.25": {
"vector": [15, 0, 0]
}
}
}
}
},
"anim.alligator_gar.flop": { "anim.alligator_gar.flop": {
"loop": true, "loop": true,
"animation_length": 0.5, "animation_length": 0.5,
@@ -727,13 +627,13 @@
"root": { "root": {
"position": { "position": {
"0.0": { "0.0": {
"vector": [4, -16, -17] "vector": [4, 4, -17]
}, },
"0.1667": { "0.1667": {
"vector": [4, -17, -16] "vector": [4, 1, -17]
}, },
"0.5": { "0.5": {
"vector": [4, -16, -17] "vector": [4, 4, -17]
} }
} }
}, },
@@ -3725,7 +3725,137 @@
} }
} }
} }
},
"anim.baryonyx.swim": {
"loop": true,
"animation_length": 3.25,
"bones": {
"Neck6": {
"rotation": {
"vector": [-7.5, 0, 0]
} }
}, },
"geckolib_format_version": 2 "root": {
"rotation": {
"vector": [2.5, 0, 0]
},
"position": {
"vector": ["-math.sin(q.anim_time*90*1.25)*-1.5", -1, 0]
}
},
"RightThigh": {
"rotation": {
"vector": ["32.5+math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"RightCalf1": {
"rotation": {
"vector": ["math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootRight": {
"rotation": {
"vector": ["17.5+math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
},
"Body1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*7.5", "math.sin(q.anim_time*90*1.25)*-0.5"]
}
},
"Tail1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*12.5", 0]
}
},
"Tail2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-20", 0]
}
},
"Tail3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-17.5", 0]
}
},
"Tail4": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-12.5", 0]
}
},
"Tail5": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-20", 0]
}
},
"Body2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-7.5", 0]
}
},
"Body3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-10", 0]
}
},
"Neck_under2": {
"rotation": {
"vector": [15, 0, 0]
},
"position": {
"vector": [0, 2, 0]
}
},
"Neck3": {
"rotation": {
"vector": [-12.5, "-math.sin(q.anim_time*90*1.25)*12.5", "math.sin(q.anim_time*90*1.25)*0.5"]
}
},
"Neck2": {
"rotation": {
"vector": [-5, "-math.sin(q.anim_time*90*1.25)*7.5", 0]
}
},
"Neck1": {
"rotation": {
"vector": [-2.5, "-math.sin(q.anim_time*90*1.25+60)*-7.5", 0]
}
},
"Head": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-5", 0]
}
},
"Neck_under1": {
"rotation": {
"vector": [-30, "-math.sin(q.anim_time*90*1.25)*-5", 0]
},
"position": {
"vector": [0, 1.7, -0.9]
}
},
"LeftThigh": {
"rotation": {
"vector": ["32.5-math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"LeftCalf1": {
"rotation": {
"vector": ["-math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootLeft": {
"rotation": {
"vector": ["17.5-math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
}
}
}
}
} }
@@ -735,62 +735,6 @@
} }
} }
}, },
"anim.coelacanth.mouth": {
"loop": "hold_on_last_frame",
"animation_length": 1.25,
"bones": {
"Jaw": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Lowerjawfront": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [40, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
}
}
},
"anim.coelacanth.flop": { "anim.coelacanth.flop": {
"loop": true, "loop": true,
"animation_length": 0.5, "animation_length": 0.5,
@@ -1019,25 +963,28 @@
}, },
"position": { "position": {
"0.0": { "0.0": {
"vector": [0, -2, 0] "post": {
"vector": [0, 12, 0]
},
"lerp_mode": "catmullrom"
}, },
"0.125": { "0.125": {
"pre": {
"vector": [0, 0, 0]
},
"post": { "post": {
"vector": [0, 0, 0] "vector": [0, 14, 0]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
"0.375": { "0.375": {
"post": { "post": {
"vector": [0, -4, 0] "vector": [0, 14, 0]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
"0.5": { "0.5": {
"vector": [0, -2, 0] "post": {
"vector": [0, 12, 0]
},
"lerp_mode": "catmullrom"
} }
} }
}, },
@@ -1037,106 +1037,6 @@
} }
} }
} }
},
"anim.mawsonia.mouth": {
"loop": "hold_on_last_frame",
"animation_length": 1.25,
"bones": {
"Jaw": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Lowerjawfront": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [40, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"shape6": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [40, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Lowerjawforward2": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [40, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
}
}
} }
} }
} }
@@ -3424,7 +3424,121 @@
} }
} }
} }
},
"anim.spinosaurus.swim": {
"loop": true,
"animation_length": 3.25,
"bones": {
"Neck6": {
"rotation": {
"vector": [-7.5, 0, 0]
} }
}, },
"geckolib_format_version": 2 "root": {
"rotation": {
"vector": [-5, 0, 0]
},
"position": {
"vector": ["-math.sin(q.anim_time*90*1.25)*-1.5", 1, 0]
}
},
"RightThigh": {
"rotation": {
"vector": ["32.5+math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"RightCalf1": {
"rotation": {
"vector": ["math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootRight": {
"rotation": {
"vector": ["17.5+math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
},
"Body1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*7.5", "math.sin(q.anim_time*90*1.25)*-0.5"]
}
},
"Tail1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*12.5", 0]
}
},
"Tail2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-20", 0]
}
},
"Tail3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-17.5", 0]
}
},
"Tail4": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-12.5", 0]
}
},
"Tail5": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-20", 0]
}
},
"Body2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-7.5", 0]
}
},
"Body3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-10", 0]
}
},
"Neck1": {
"rotation": {
"vector": [15, "-math.sin(q.anim_time*90*1.25+60)*-7.5", 0]
}
},
"Neck2": {
"rotation": {
"vector": [7.5, "-math.sin(q.anim_time*90*1.25)*7.5", 0]
}
},
"Neck3": {
"rotation": {
"vector": [-12.5, "-math.sin(q.anim_time*90*1.25)*12.5", "math.sin(q.anim_time*90*1.25)*0.5"]
}
},
"Head": {
"rotation": {
"vector": [-10, "-math.sin(q.anim_time*90*1.25)*-5", 0]
}
},
"LeftThigh": {
"rotation": {
"vector": ["32.5-math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"LeftCalf1": {
"rotation": {
"vector": ["-math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootLeft": {
"rotation": {
"vector": ["17.5-math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
}
}
}
}
} }
@@ -7082,6 +7082,229 @@
} }
} }
} }
},
"anim.suchomimus.swim": {
"loop": true,
"animation_length": 3.25,
"bones": {
"Neck6": {
"rotation": {
"vector": [-7.5, 0, 0]
}
},
"root": {
"rotation": {
"vector": [2.5, 0, 0]
},
"position": {
"vector": ["-math.sin(q.anim_time*90*1.25)*-1.5", -31, 0]
}
},
"RightThigh": {
"rotation": {
"vector": ["32.5+math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"RightCalf1": {
"rotation": {
"vector": ["math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootRight": {
"rotation": {
"vector": ["17.5+math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
},
"Body1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*7.5", "math.sin(q.anim_time*90*1.25)*-0.5"]
}
},
"Tail1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*12.5", 0]
}
},
"Tail2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-20", 0]
}
},
"Tail3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-17.5", 0]
}
},
"Tail4": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-12.5", 0]
}
},
"Tail5": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-20", 0]
}
},
"Body2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-7.5", 0]
}
},
"Body3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-10", 0]
}
},
"Neck_under2": {
"rotation": {
"vector": [15, 0, 0]
},
"position": {
"vector": [0, 2, 0]
}
},
"Neck3": {
"rotation": {
"vector": [-12.5, "-math.sin(q.anim_time*90*1.25)*12.5", "math.sin(q.anim_time*90*1.25)*0.5"]
}
},
"Neck2": {
"rotation": {
"vector": [-5, "-math.sin(q.anim_time*90*1.25)*7.5", 0]
}
},
"Neck1": {
"rotation": {
"vector": [-2.5, "-math.sin(q.anim_time*90*1.25+60)*-7.5", 0]
}
},
"Neck_under1": {
"rotation": {
"vector": [-30, "-math.sin(q.anim_time*90*1.25)*-5", 0]
},
"position": {
"vector": [0, 1.7, -0.9]
}
},
"LeftThigh": {
"rotation": {
"vector": ["32.5-math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 3, 0]
}
},
"LeftCalf1": {
"rotation": {
"vector": ["-math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"FootLeft": {
"rotation": {
"vector": ["17.5-math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
},
"Right Thigh": {
"rotation": {
"vector": ["32.5+math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 0, 0]
}
},
"Right Calf 1": {
"rotation": {
"vector": ["-math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"Foot Right": {
"rotation": {
"vector": ["17.5-math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
},
"Body 1": {
"rotation": {
"vector": [2.5, "-math.sin(q.anim_time*90*1.25+60)*7.5", "math.sin(q.anim_time*90*1.25)*-0.5"]
},
"position": {
"vector": [0, 1, 0]
}
},
"Tail 1": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*12.5", 0]
}
},
"Tail 2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-20", 0]
}
},
"Tail 3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-17.5", 0]
}
},
"Tail 4": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-12.5", 0]
}
},
"Tail 5": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-20", 0]
}
},
"Body 2": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-7.5", 0]
}
},
"Body 3": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25+60)*-10", 0]
}
},
"Neck 1": {
"rotation": {
"vector": [7.5, "-math.sin(q.anim_time*90*1.25)*7.5", 0]
}
},
"Neck 2": {
"rotation": {
"vector": [-12.5, "-math.sin(q.anim_time*90*1.25)*12.5", "math.sin(q.anim_time*90*1.25)*0.5"]
},
"position": {
"vector": [0, 0, 1]
}
},
"Head": {
"rotation": {
"vector": [0, "-math.sin(q.anim_time*90*1.25)*-5", 0]
}
},
"Left Thigh": {
"rotation": {
"vector": ["32.5+math.sin(q.anim_time*90*1.25)*-7.5", 0, 0]
},
"position": {
"vector": [0, 0, 0]
}
},
"Left Calf 1": {
"rotation": {
"vector": ["math.sin(q.anim_time*90*1.25+60)*7.5", 0, 0]
}
},
"Foot Left": {
"rotation": {
"vector": ["17.5+math.sin(q.anim_time*90*1.25+60)*20", 0, 0]
}
}
}
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More