Bumpy road

- Bump flywheel build
- Directly rotate the last pose and normal matrix in SBB
This commit is contained in:
Jozufozu 2024-07-27 17:43:24 -07:00
parent b3aba93665
commit 5be92fcde8
43 changed files with 124 additions and 123 deletions

View file

@ -23,7 +23,7 @@ use_parchment = true
# dependency versions
registrate_version = MC1.20-1.3.3
flywheel_minecraft_version = 1.20.1
flywheel_version = 1.0.0-beta-98
flywheel_version = 1.0.0-beta-103
jei_minecraft_version = 1.20.1
jei_version = 15.2.0.22
curios_minecraft_version = 1.20.1

View file

@ -219,11 +219,11 @@ public class AllPartialModels {
}
private static PartialModel block(String path) {
return new PartialModel(Create.asResource("block/" + path));
return PartialModel.of(Create.asResource("block/" + path));
}
private static PartialModel entity(String path) {
return new PartialModel(Create.asResource("entity/" + path));
return PartialModel.of(Create.asResource("entity/" + path));
}
public static void init() {

View file

@ -83,7 +83,7 @@ public class HarvesterActorVisual extends ActorVisual {
@Override
public void beginFrame() {
harvester.loadIdentity()
harvester.setIdentityTransform()
.translate(context.localPos)
.center()
.rotateYDegrees(horizontalAngle)

View file

@ -42,14 +42,14 @@ public class PIInstance {
}
public void beginFrame(float progress) {
middle.loadIdentity()
middle.setIdentityTransform()
.translate(instancePos)
.center()
.rotateYDegrees(angleY)
.rotateXDegrees(angleX)
.uncenter();
top.loadIdentity()
top.setIdentityTransform()
.translate(instancePos)
.center()
.rotateYDegrees(angleY)

View file

@ -27,7 +27,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
@Override
public void beginFrame() {
harvester.loadIdentity()
harvester.setIdentityTransform()
.translate(context.localPos)
.center()
.rotateYDegrees(horizontalAngle)
@ -38,7 +38,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
.rotateYDegrees(90)
.setChanged();
frame.loadIdentity()
frame.setIdentityTransform()
.translate(context.localPos)
.center()
.rotateYDegrees(horizontalAngle + 180)

View file

@ -41,8 +41,8 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
topInstance = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(top))
.createInstance();
topInstance.setPosition(getVisualPosition())
.setRotation(blockOrientation)
topInstance.position(getVisualPosition())
.rotation(blockOrientation)
.setChanged();
}
@ -53,7 +53,7 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
rot.mul(blockOrientation);
topInstance.setRotation(rot)
topInstance.rotation(rot)
.setChanged();
}

View file

@ -42,8 +42,8 @@ public class StabilizedBearingVisual extends ActorVisual {
.createInstance();
int blockLight = localBlockLight();
topInstance.setPosition(movementContext.localPos)
.setRotation(blockOrientation)
topInstance.position(movementContext.localPos)
.rotation(blockOrientation)
.light(blockLight, 0);
shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite()))
@ -62,7 +62,7 @@ public class StabilizedBearingVisual extends ActorVisual {
rotation.mul(blockOrientation);
topInstance.setRotation(rotation);
topInstance.rotation(rotation);
}
@Override

View file

@ -11,7 +11,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -70,7 +70,7 @@ public class StickerBlockEntity extends SmartBlockEntity {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> playSound(false));
piston.chase(target, .4f, Chaser.LINEAR);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
}
public boolean isAttachedToBlock() {

View file

@ -54,7 +54,7 @@ public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity>
}
private void animateHead(float offset) {
head.loadIdentity()
head.setIdentityTransform()
.translate(getVisualPosition())
.nudge(blockEntity.hashCode())
.center()

View file

@ -64,7 +64,7 @@ public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity>
}
private void animateCogs(float cogAngle) {
gantryCogs.loadIdentity()
gantryCogs.setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotateYDegrees(AngleHelper.horizontalAngle(facing))

View file

@ -47,7 +47,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
rotationAxis = Axis.of(rotatingAbout.step());
coil = getCoilModel().createInstance()
.setPosition(getVisualPosition());
.position(getVisualPosition());
coil.setChanged();
magnet = new SelectInstance<>(this::getMagnetModelIndex);
@ -77,7 +77,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
@Override
public void beginFrame(DynamicVisual.Context ctx) {
updateOffset(ctx.partialTick());
coil.setRotation(rotationAxis.rotationDegrees(offset * 180))
coil.rotation(rotationAxis.rotationDegrees(offset * 180))
.setChanged();
int neededRopeCount = getNeededRopeCount();
@ -88,8 +88,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
.ifPresent(data -> {
int i = Math.max(0, Mth.floor(offset));
int light = lightCache.getPackedLight(i);
data.setPosition(getVisualPosition())
.nudgePosition(0, -offset, 0)
data.position(getVisualPosition())
.translatePosition(0, -offset, 0)
.light(light)
.setChanged();
});
@ -101,8 +101,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
float halfRopeNudge = f > .75f ? f - 1 : f;
int light = lightCache.getPackedLight(0);
rope1.setPosition(getVisualPosition())
.nudgePosition(0, -halfRopeNudge, 0)
rope1.position(getVisualPosition())
.translatePosition(0, -halfRopeNudge, 0)
.light(light)
.setChanged();
});
@ -113,8 +113,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
int light = lightCache.getPackedLight(size - 1 - i);
rope.get(i)
.setPosition(getVisualPosition())
.nudgePosition(0, -offset + i + 1, 0)
.position(getVisualPosition())
.translatePosition(0, -offset + i + 1, 0)
.light(light)
.setChanged();
}

View file

@ -38,6 +38,7 @@ import it.unimi.dsi.fastutil.longs.LongArraySet;
import it.unimi.dsi.fastutil.longs.LongSet;
import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos;
import net.minecraft.core.Vec3i;
import net.minecraft.util.Mth;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.Level;
@ -65,7 +66,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
public ContraptionVisual(VisualizationContext ctx, E entity, float partialTick) {
super(ctx, entity, partialTick);
embedding = ctx.createEmbedding();
embedding = ctx.createEmbedding(Vec3i.ZERO);
init(partialTick);
}
@ -258,10 +259,6 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
actors.forEach(ActorVisual::delete);
if (model != null) {
model.delete();
}
if (structure != null) {
structure.delete();
}

View file

@ -18,11 +18,11 @@ import net.minecraft.world.phys.Vec3;
public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel COG = new PartialModel(Create.asResource("item/extendo_grip/cog"));
protected static final PartialModel THIN_SHORT = new PartialModel(Create.asResource("item/extendo_grip/thin_short"));
protected static final PartialModel WIDE_SHORT = new PartialModel(Create.asResource("item/extendo_grip/wide_short"));
protected static final PartialModel THIN_LONG = new PartialModel(Create.asResource("item/extendo_grip/thin_long"));
protected static final PartialModel WIDE_LONG = new PartialModel(Create.asResource("item/extendo_grip/wide_long"));
protected static final PartialModel COG = PartialModel.of(Create.asResource("item/extendo_grip/cog"));
protected static final PartialModel THIN_SHORT = PartialModel.of(Create.asResource("item/extendo_grip/thin_short"));
protected static final PartialModel WIDE_SHORT = PartialModel.of(Create.asResource("item/extendo_grip/wide_short"));
protected static final PartialModel THIN_LONG = PartialModel.of(Create.asResource("item/extendo_grip/thin_long"));
protected static final PartialModel WIDE_LONG = PartialModel.of(Create.asResource("item/extendo_grip/wide_long"));
private static final Vec3 ROTATION_OFFSET = new Vec3(0, 1 / 2f, 1 / 2f);
private static final Vec3 COG_ROTATION_OFFSET = new Vec3(0, 1 / 16f, 0);

View file

@ -23,7 +23,7 @@ import net.minecraft.world.item.ItemStack;
public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel COG = new PartialModel(Create.asResource("item/potato_cannon/cog"));
protected static final PartialModel COG = PartialModel.of(Create.asResource("item/potato_cannon/cog"));
@Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer,

View file

@ -17,9 +17,9 @@ import net.minecraft.world.item.ItemStack;
public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel BITS = new PartialModel(Create.asResource("item/wand_of_symmetry/bits"));
protected static final PartialModel CORE = new PartialModel(Create.asResource("item/wand_of_symmetry/core"));
protected static final PartialModel CORE_GLOW = new PartialModel(Create.asResource("item/wand_of_symmetry/core_glow"));
protected static final PartialModel BITS = PartialModel.of(Create.asResource("item/wand_of_symmetry/bits"));
protected static final PartialModel CORE = PartialModel.of(Create.asResource("item/wand_of_symmetry/core"));
protected static final PartialModel CORE_GLOW = PartialModel.of(Create.asResource("item/wand_of_symmetry/core_glow"));
@Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -51,7 +51,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
float lidAngle = blockEntity.lid.getValue(partialTicks);
float drawerOffset = blockEntity.drawers.getValue(partialTicks);
lid.loadIdentity()
lid.setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotateYDegrees(-facing.toYRot())
@ -62,7 +62,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
.setChanged();
for (int offset : Iterate.zeroAndOne) {
drawers[offset].loadIdentity()
drawers[offset].setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotateYDegrees(-facing.toYRot())

View file

@ -16,7 +16,7 @@ import net.minecraft.world.item.ItemStack;
public class WrenchItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel GEAR = new PartialModel(Create.asResource("item/wrench/gear"));
protected static final PartialModel GEAR = PartialModel.of(Create.asResource("item/wrench/gear"));
@Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -22,9 +22,9 @@ import net.minecraft.world.item.ItemStack;
public class WorldshaperItemRenderer extends ZapperItemRenderer {
protected static final PartialModel CORE = new PartialModel(Create.asResource("item/handheld_worldshaper/core"));
protected static final PartialModel CORE_GLOW = new PartialModel(Create.asResource("item/handheld_worldshaper/core_glow"));
protected static final PartialModel ACCELERATOR = new PartialModel(Create.asResource("item/handheld_worldshaper/accelerator"));
protected static final PartialModel CORE = PartialModel.of(Create.asResource("item/handheld_worldshaper/core"));
protected static final PartialModel CORE_GLOW = PartialModel.of(Create.asResource("item/handheld_worldshaper/core_glow"));
protected static final PartialModel ACCELERATOR = PartialModel.of(Create.asResource("item/handheld_worldshaper/accelerator"));
@Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -59,7 +59,7 @@ public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> impleme
float pointerRotation = Mth.lerp(value, 0, -90);
settled = (value == 0 || value == 1) && blockEntity.pointer.settled();
pointer.loadIdentity()
pointer.setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotateYDegrees((float) yRot)

View file

@ -27,7 +27,7 @@ import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.ChatFormatting;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
@ -265,7 +265,7 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
effects.triggerOverStressedEffect();
if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
}
public float getGeneratedSpeed() {
@ -578,7 +578,7 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
public void requestModelDataUpdate() {
super.requestModelDataUpdate();
if (!this.remove)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
}
@OnlyIn(Dist.CLIENT)

View file

@ -48,7 +48,7 @@ public class HandCrankVisual extends KineticBlockEntityVisual<HandCrankBlockEnti
Direction.Axis axis = facing.getAxis();
float angle = blockEntity.getIndependentAngle(pt);
crank.loadIdentity()
crank.setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotate(angle, Direction.get(Direction.AxisDirection.POSITIVE, axis))

View file

@ -121,8 +121,8 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
float y = blockPos.getY() + ((float) facingVec.getY()) * distance;
float z = blockPos.getZ() + ((float) facingVec.getZ()) * distance;
pole.setPosition(x, y, z).setChanged();
hand.setPosition(x, y, z).setChanged();
pole.position(x, y, z).setChanged();
hand.position(x, y, z).setChanged();
}
static void updateRotation(OrientedInstance pole, OrientedInstance hand, float yRot, float xRot, float zRot) {
@ -130,12 +130,12 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
Quaternionf q = Axis.YP.rotationDegrees(yRot);
q.mul(Axis.XP.rotationDegrees(xRot));
hand.setRotation(q)
hand.rotation(q)
.setChanged();
q.mul(Axis.ZP.rotationDegrees(zRot));
pole.setRotation(q)
pole.rotation(q)
.setChanged();
}

View file

@ -25,7 +25,7 @@ import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.SectionPos;
@ -552,7 +552,7 @@ public class ArmBlockEntity extends KineticBlockEntity implements ITransformable
return;
if (hadGoggles != goggles)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
boolean ceiling = isOnCeiling();
if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size())

View file

@ -132,12 +132,12 @@ public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements S
ArmRenderer.transformLowerArm(msr, lowerArmAngle);
lowerBody.setTransform(msLocal)
.color(color)
.colorRgb(color)
.setChanged();
ArmRenderer.transformUpperArm(msr, upperArmAngle);
upperBody.setTransform(msLocal)
.color(color)
.colorRgb(color)
.setChanged();
ArmRenderer.transformHead(msr, headAngle);

View file

@ -65,8 +65,8 @@ public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual
}
private void transformPole(float renderedHeadOffset) {
mixerPole.setPosition(getVisualPosition())
.nudgePosition(0, -renderedHeadOffset, 0)
mixerPole.position(getVisualPosition())
.translatePosition(0, -renderedHeadOffset, 0)
.setChanged();
}

View file

@ -30,7 +30,7 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
Quaternionf q = Axis.YP
.rotationDegrees(AngleHelper.horizontalAngle(blockState.getValue(MechanicalPressBlock.HORIZONTAL_FACING)));
pressHead.setRotation(q);
pressHead.rotation(q);
transformModels(partialTick);
}
@ -43,8 +43,8 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
private void transformModels(float pt) {
float renderedHeadOffset = getRenderedHeadOffset(pt);
pressHead.setPosition(getVisualPosition())
.nudgePosition(0, -renderedHeadOffset, 0)
pressHead.position(getVisualPosition())
.translatePosition(0, -renderedHeadOffset, 0)
.setChanged();
}

View file

@ -39,9 +39,9 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
public void beginFrame(DynamicVisual.Context ctx) {
Float angle = blockEntity.getTargetAngle();
if (angle == null) {
piston.setEmptyTransform().setChanged();
linkage.setEmptyTransform().setChanged();
connector.setEmptyTransform().setChanged();
piston.setZeroTransform().setChanged();
linkage.setZeroTransform().setChanged();
connector.setZeroTransform().setChanged();
return;
}
@ -81,7 +81,7 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
}
protected TransformedInstance transformed(TransformedInstance modelData, Direction facing, boolean roll90) {
return modelData.loadIdentity()
return modelData.setIdentityTransform()
.translate(getVisualPosition())
.center()
.rotateYDegrees(AngleHelper.horizontalAngle(facing))

View file

@ -58,7 +58,7 @@ public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements Si
private void pivotPlate(float lidProgress) {
float angle = lidProgress * 70;
EjectorRenderer.applyLidAngle(blockEntity, angle, plate.loadIdentity().translate(getVisualPosition()));
EjectorRenderer.applyLidAngle(blockEntity, angle, plate.setIdentityTransform().translate(getVisualPosition()));
plate.setChanged();
}

View file

@ -27,7 +27,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -363,7 +363,7 @@ public class FunnelBlockEntity extends SmartBlockEntity implements IHaveHovering
extractionCooldown = compound.getInt("TransferCooldown");
if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
}
public void onTransfer(ItemStack stack) {

View file

@ -19,7 +19,7 @@ import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
@ -109,7 +109,7 @@ public class BeltTunnelBlockEntity extends SmartBlockEntity {
sides.addAll(flaps.keySet());
super.read(compound, clientPacket);
if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
}
private LerpedFloat createChasingFlap() {

View file

@ -137,7 +137,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
float horizontalAngle = AngleHelper.rad(blockEntity.headAngle.getValue(ctx.partialTick()));
head.loadIdentity()
head.setIdentityTransform()
.translate(getVisualPosition())
.translateY(headY)
.translate(Translate.CENTER)
@ -146,7 +146,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
.setChanged();
if (goggles != null) {
goggles.loadIdentity()
goggles.setIdentityTransform()
.translate(getVisualPosition())
.translateY(headY + 8 / 16f)
.translate(Translate.CENTER)
@ -156,7 +156,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
}
if (hat != null) {
hat.loadIdentity()
hat.setIdentityTransform()
.translate(getVisualPosition())
.translateY(headY);
if (isInert) {
@ -177,7 +177,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
if (smallRods != null) {
float offset1 = Mth.sin((float) ((renderTick / 16f + Math.PI) % (2 * Math.PI))) / offsetMult;
smallRods.loadIdentity()
smallRods.setIdentityTransform()
.translate(getVisualPosition())
.translateY(offset1 + animation + .125f)
.setChanged();
@ -186,7 +186,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
if (largeRods != null) {
float offset2 = Mth.sin((float) ((renderTick / 16f + Math.PI / 2) % (2 * Math.PI))) / offsetMult;
largeRods.loadIdentity()
largeRods.setIdentityTransform()
.translate(getVisualPosition())
.translateY(offset2 + animation - 3 / 16f)
.setChanged();

View file

@ -39,7 +39,7 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
rX = face == AttachFace.FLOOR ? 0 : face == AttachFace.WALL ? 90 : 180;
rY = AngleHelper.horizontalAngle(blockState.getValue(AnalogLeverBlock.FACING));
transform(indicator.loadIdentity());
transform(indicator.setIdentityTransform());
animateLever(partialTick);
}
@ -53,12 +53,12 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
protected void animateLever(float pt) {
float state = blockEntity.clientState.getValue(pt);
indicator.color(Color.mixColors(0x2C0300, 0xCD0000, state / 15f));
indicator.colorRgb(Color.mixColors(0x2C0300, 0xCD0000, state / 15f));
indicator.setChanged();
float angle = (float) ((state / 15) * 90 / 180 * Math.PI);
transform(handle.loadIdentity()).translate(1 / 2f, 1 / 16f, 1 / 2f)
transform(handle.setIdentityTransform()).translate(1 / 2f, 1 / 16f, 1 / 2f)
.rotate(angle, Direction.EAST)
.translate(-1 / 2f, -1 / 16f, -1 / 2f)
.setChanged();

View file

@ -25,9 +25,9 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
indicator = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLEXPEATER_INDICATOR)).createInstance();
indicator.loadIdentity()
indicator.setIdentityTransform()
.translate(getVisualPosition())
.color(getColor())
.colorRgb(getColor())
.setChanged();
previousState = blockEntity.state;
@ -37,7 +37,7 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
public void tick(TickableVisual.Context context) {
if (previousState == blockEntity.state) return;
indicator.color(getColor());
indicator.colorRgb(getColor());
indicator.setChanged();
previousState = blockEntity.state;

View file

@ -25,8 +25,8 @@ import net.minecraft.world.item.ItemStack;
public class LinkedControllerItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel POWERED = new PartialModel(Create.asResource("item/linked_controller/powered"));
protected static final PartialModel BUTTON = new PartialModel(Create.asResource("item/linked_controller/button"));
protected static final PartialModel POWERED = PartialModel.of(Create.asResource("item/linked_controller/powered"));
protected static final PartialModel BUTTON = PartialModel.of(Create.asResource("item/linked_controller/button"));
static LerpedFloat equipProgress;
static Vector<LerpedFloat> buttons;

View file

@ -7,9 +7,9 @@ import java.util.Map;
import java.util.stream.IntStream;
import org.jetbrains.annotations.Nullable;
import org.joml.Matrix3f;
import org.joml.Matrix4f;
import org.joml.Quaternionf;
import org.joml.Matrix3fc;
import org.joml.Matrix4fc;
import org.joml.Quaternionfc;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
@ -304,7 +304,7 @@ public abstract class BogeyRenderer {
*/
private String keyFromModel(PartialModel partialModel) {
return partialModel.getLocation().toString();
return partialModel.modelLocation().toString();
}
/**
@ -348,7 +348,7 @@ public abstract class BogeyRenderer {
public BogeyModelData setEmptyTransform() {
if (this.transform instanceof TransformedInstance model)
model.setEmptyTransform()
model.setZeroTransform()
.setChanged();
return this;
}
@ -367,19 +367,19 @@ public abstract class BogeyRenderer {
}
@Override
public BogeyModelData mulPose(Matrix4f pose) {
public BogeyModelData mulPose(Matrix4fc pose) {
this.transform.mulPose(pose);
return this;
}
@Override
public BogeyModelData mulNormal(Matrix3f normal) {
public BogeyModelData mulNormal(Matrix3fc normal) {
this.transform.mulNormal(normal);
return this;
}
@Override
public BogeyModelData rotate(Quaternionf quaternion) {
public BogeyModelData rotate(Quaternionfc quaternion) {
this.transform.rotate(quaternion);
return this;
}
@ -391,7 +391,7 @@ public abstract class BogeyRenderer {
}
@Override
public BogeyModelData translate(double x, double y, double z) {
public BogeyModelData translate(float x, float y, float z) {
this.transform.translate(x, y, z);
return this;
}

View file

@ -22,7 +22,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
import com.simibubi.create.foundation.utility.Pair;
import com.simibubi.create.foundation.utility.VecHelper;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.registries.Registries;
@ -225,7 +225,7 @@ public class TrackBlockEntity extends SmartBlockEntity implements ITransformable
level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 16);
}
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
if (hasInteractableConnections())
registerToCurveInteraction();

View file

@ -100,9 +100,9 @@ public class TrackMaterialFactory {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
String namespace = id.getNamespace();
String prefix = "block/track/" + id.getPath() + "/";
tieModel = new PartialModel(new ResourceLocation(namespace, prefix + "tie"));
leftSegmentModel = new PartialModel(new ResourceLocation(namespace, prefix + "segment_left"));
rightSegmentModel = new PartialModel(new ResourceLocation(namespace, prefix + "segment_right"));
tieModel = PartialModel.of(new ResourceLocation(namespace, prefix + "tie"));
leftSegmentModel = PartialModel.of(new ResourceLocation(namespace, prefix + "segment_left"));
rightSegmentModel = PartialModel.of(new ResourceLocation(namespace, prefix + "segment_right"));
});
return this;
}

View file

@ -13,7 +13,7 @@ import com.tterrag.registrate.builders.BuilderCallback;
import com.tterrag.registrate.util.OneTimeEventReceiver;
import com.tterrag.registrate.util.nullness.NonNullSupplier;
import dev.engine_room.flywheel.lib.visual.SimpleBlockEntityVisualizer;
import dev.engine_room.flywheel.lib.visualization.SimpleBlockEntityVisualizer;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;

View file

@ -10,7 +10,7 @@ import com.tterrag.registrate.builders.EntityBuilder;
import com.tterrag.registrate.util.OneTimeEventReceiver;
import com.tterrag.registrate.util.nullness.NonNullSupplier;
import dev.engine_room.flywheel.lib.visual.SimpleEntityVisualizer;
import dev.engine_room.flywheel.lib.visualization.SimpleEntityVisualizer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;

View file

@ -34,10 +34,10 @@ public class AllInstanceTypes {
.vector("axis", FloatRepr.NORMALIZED_BYTE, 3)
.build())
.writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r);
MemoryUtil.memPutByte(ptr + 1, instance.g);
MemoryUtil.memPutByte(ptr + 2, instance.b);
MemoryUtil.memPutByte(ptr + 3, instance.a);
MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x);
@ -67,10 +67,10 @@ public class AllInstanceTypes {
.scalar("scrollMult", FloatRepr.FLOAT)
.build())
.writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r);
MemoryUtil.memPutByte(ptr + 1, instance.g);
MemoryUtil.memPutByte(ptr + 2, instance.b);
MemoryUtil.memPutByte(ptr + 3, instance.a);
MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x);
@ -104,10 +104,10 @@ public class AllInstanceTypes {
.vector("scale", FloatRepr.FLOAT, 2)
.build())
.writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r);
MemoryUtil.memPutByte(ptr + 1, instance.g);
MemoryUtil.memPutByte(ptr + 2, instance.b);
MemoryUtil.memPutByte(ptr + 3, instance.a);
MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x);

View file

@ -16,7 +16,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.transform.TransformStack;
import dev.engine_room.flywheel.lib.visual.VisualizationHelper;
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
@ -50,7 +50,7 @@ public class BlockEntityRenderHelper {
Iterator<BlockEntity> iterator = customRenderBEs.iterator();
while (iterator.hasNext()) {
BlockEntity blockEntity = iterator.next();
if (VisualizationManager.supportsVisualization(world) && VisualizationHelper.shouldSkipRender(blockEntity))
if (VisualizationManager.supportsVisualization(world) && VisualizationHelper.skipVanillaRender(blockEntity))
continue;
BlockEntityRenderer<BlockEntity> renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(blockEntity);

View file

@ -2,8 +2,10 @@ package com.simibubi.create.foundation.render;
import org.jetbrains.annotations.Nullable;
import org.joml.Matrix3f;
import org.joml.Matrix3fc;
import org.joml.Matrix4f;
import org.joml.Quaternionf;
import org.joml.Matrix4fc;
import org.joml.Quaternionfc;
import org.joml.Vector3f;
import org.joml.Vector3fc;
import org.joml.Vector4f;
@ -220,19 +222,21 @@ public class SuperByteBuffer implements TransformStack<SuperByteBuffer> {
}
@Override
public SuperByteBuffer rotate(Quaternionf quaternion) {
transforms.mulPose(quaternion);
public SuperByteBuffer rotate(Quaternionfc quaternion) {
var last = transforms.last();
last.pose().rotate(quaternion);
last.normal().rotate(quaternion);
return this;
}
@Override
public SuperByteBuffer translate(double x, double y, double z) {
public SuperByteBuffer translate(float x, float y, float z) {
transforms.translate(x, y, z);
return this;
}
@Override
public SuperByteBuffer mulPose(Matrix4f pose) {
public SuperByteBuffer mulPose(Matrix4fc pose) {
transforms.last()
.pose()
.mul(pose);
@ -240,7 +244,7 @@ public class SuperByteBuffer implements TransformStack<SuperByteBuffer> {
}
@Override
public SuperByteBuffer mulNormal(Matrix3f normal) {
public SuperByteBuffer mulNormal(Matrix3fc normal) {
transforms.last()
.normal()
.mul(normal);

View file

@ -80,7 +80,7 @@ public class DebugInformation {
.getVersion()
.toString())
.orElse("None"))
.put("Flywheel Backend", () -> Backend.REGISTRY.getIdOrThrow(BackendManager.getBackend()).toString())
.put("Flywheel Backend", () -> Backend.REGISTRY.getIdOrThrow(BackendManager.currentBackend()).toString())
.put("OpenGL Renderer", GlUtil::getRenderer)
.put("OpenGL Version", GlUtil::getOpenGLVersion)
.put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().toString())