Adds better swimming/floating logic, Changes tail code logic
This commit is contained in:
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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 };
|
||||||
|
|||||||
+1
-1
@@ -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);
|
||||||
|
|||||||
+14
-3
@@ -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);
|
||||||
|
|||||||
+3
-103
@@ -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]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+131
-1
@@ -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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+10
-63
@@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+115
-1
@@ -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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+223
@@ -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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+365
-250
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user