Simply implless

- Use split api/runtime flywheel jars
- Update instance types to use single packed light int
- Update visuals to use new context location
This commit is contained in:
Jozufozu 2024-05-20 21:31:55 -07:00
parent 79e1c8c950
commit 0d324ffdf9
45 changed files with 121 additions and 150 deletions

View file

@ -11,14 +11,6 @@ plugins {
jarJar.enable() jarJar.enable()
boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false');
// jozu: I use a gradle workspace with both projects.
// The project is named Flywheel-Forge, but sub-projects are named by folder.
Project flywheelProject = findProject(':Flywheel')
boolean flywheelInWorkspace = flywheelProject != null
if (flywheelInWorkspace) {
println('Workspace detected, using Flywheel sibling project')
}
ext.buildNumber = System.getenv('BUILD_NUMBER') ext.buildNumber = System.getenv('BUILD_NUMBER')
@ -75,13 +67,6 @@ minecraft {
client { client {
workingDirectory project.file('run') workingDirectory project.file('run')
mods {
if (flywheelInWorkspace) {
flywheel {
source flywheelProject.sourceSets.main
}
}
}
} }
server { server {
@ -93,13 +78,6 @@ minecraft {
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP'
property 'forge.logging.console.level', 'debug' property 'forge.logging.console.level', 'debug'
args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources') args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources')
mods {
if (flywheelInWorkspace) {
flywheel {
source flywheelProject.sourceSets.main
}
}
}
} }
gameTestServer { gameTestServer {
@ -173,11 +151,8 @@ dependencies {
implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")
if (flywheelInWorkspace) { compileOnly fg.deobf("com.jozufozu.flywheel:flywheel-forge-api-${flywheel_minecraft_version}:${flywheel_version}")
implementation flywheelProject runtimeOnly fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}")
} else {
implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}")
}
compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-common-api:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-common-api:${jei_version}")
compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-forge-api:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-forge-api:${jei_version}")

View file

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

View file

@ -42,7 +42,7 @@ public class HarvesterActorVisual extends ActorVisual {
horizontalAngle = facing.toYRot() + ((facing.getAxis() == Direction.Axis.X) ? 180 : 0); horizontalAngle = facing.toYRot() + ((facing.getAxis() == Direction.Axis.X) ? 180 : 0);
harvester.setBlockLight(localBlockLight()); harvester.light(localBlockLight(), 0);
harvester.setChanged(); harvester.setChanged();
} }

View file

@ -17,8 +17,8 @@ public class PSIActorVisual extends ActorVisual {
instance = new PIInstance(context.instancerProvider(), movementContext.state, movementContext.localPos); instance = new PIInstance(context.instancerProvider(), movementContext.state, movementContext.localPos);
instance.init(false); instance.init(false);
instance.middle.setBlockLight(localBlockLight()); instance.middle.light(localBlockLight(), 0);
instance.top.setBlockLight(localBlockLight()); instance.top.light(localBlockLight(), 0);
} }
@Override @Override

View file

@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.actors.psi;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visual.VisualTickContext; import com.jozufozu.flywheel.api.visual.TickableVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.visual.AbstractBlockEntityVisual; import com.jozufozu.flywheel.lib.visual.AbstractBlockEntityVisual;
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
@ -27,12 +27,12 @@ public class PSIVisual extends AbstractBlockEntityVisual<PortableStorageInterfac
} }
@Override @Override
public void tick(VisualTickContext ctx) { public void tick(TickableVisual.Context ctx) {
instance.tick(isLit()); instance.tick(isLit());
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
instance.beginFrame(blockEntity.getExtensionDistance(ctx.partialTick())); instance.beginFrame(blockEntity.getExtensionDistance(ctx.partialTick()));
} }

View file

@ -22,7 +22,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
frame = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ROLLER_FRAME)) frame = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.ROLLER_FRAME))
.createInstance(); .createInstance();
frame.setBlockLight(localBlockLight()); frame.light(localBlockLight(), 0);
} }
@Override @Override

View file

@ -5,7 +5,7 @@ import java.util.function.Consumer;
import org.joml.Quaternionf; import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.OrientedInstance; import com.jozufozu.flywheel.lib.instance.OrientedInstance;
@ -47,7 +47,7 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float interpolatedAngle = blockEntity.getInterpolatedAngle(ctx.partialTick() - 1); float interpolatedAngle = blockEntity.getInterpolatedAngle(ctx.partialTick() - 1);
Quaternionf rot = rotationAxis.rotationDegrees(interpolatedAngle); Quaternionf rot = rotationAxis.rotationDegrees(interpolatedAngle);

View file

@ -44,14 +44,14 @@ public class StabilizedBearingVisual extends ActorVisual {
int blockLight = localBlockLight(); int blockLight = localBlockLight();
topInstance.setPosition(movementContext.localPos) topInstance.setPosition(movementContext.localPos)
.setRotation(blockOrientation) .setRotation(blockOrientation)
.setBlockLight(blockLight); .light(blockLight, 0);
shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite())) shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite()))
.createInstance(); .createInstance();
// not rotating so no need to set speed, axis, etc. // not rotating so no need to set speed, axis, etc.
shaft.setPosition(movementContext.localPos) shaft.setPosition(movementContext.localPos)
.setBlockLight(blockLight); .light(blockLight, 0);
} }
@Override @Override

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.chassis;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -39,7 +39,7 @@ public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity>
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float offset = blockEntity.piston.getValue(ctx.partialTick()); float offset = blockEntity.piston.getValue(ctx.partialTick());
if (fakeWorld) if (fakeWorld)

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.elevator; package com.simibubi.create.content.contraptions.elevator;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
import com.simibubi.create.content.kinetics.base.ShaftVisual; import com.simibubi.create.content.kinetics.base.ShaftVisual;
@ -13,7 +13,7 @@ public class ElevatorPulleyVisual extends ShaftVisual<ElevatorPulleyBlockEntity>
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
} }
} }

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.gantry;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -51,7 +51,7 @@ public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity>
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float cogAngle = getCogAngle(); float cogAngle = getCogAngle();
if (Mth.equal(cogAngle, lastAngle)) return; if (Mth.equal(cogAngle, lastAngle)) return;

View file

@ -4,11 +4,10 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.instance.Instancer; import com.jozufozu.flywheel.api.instance.Instancer;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.box.MutableBox; import com.jozufozu.flywheel.lib.box.MutableBox;
import com.jozufozu.flywheel.lib.instance.OrientedInstance; import com.jozufozu.flywheel.lib.instance.OrientedInstance;
import com.jozufozu.flywheel.lib.light.LightPacking;
import com.jozufozu.flywheel.lib.light.LightVolume; import com.jozufozu.flywheel.lib.light.LightVolume;
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual; import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
import com.mojang.math.Axis; import com.mojang.math.Axis;
@ -60,7 +59,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
updateOffset(ctx.partialTick()); updateOffset(ctx.partialTick());
coil.setRotation(rotationAxis.rotationDegrees(offset * 180)) coil.setRotation(rotationAxis.rotationDegrees(offset * 180))
.setChanged(); .setChanged();
@ -75,8 +74,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
short packed = light.getPackedLight(pos.getX(), pos.getY() - i, pos.getZ()); short packed = light.getPackedLight(pos.getX(), pos.getY() - i, pos.getZ());
data.setPosition(getVisualPosition()) data.setPosition(getVisualPosition())
.nudgePosition(0, -offset, 0) .nudgePosition(0, -offset, 0)
.setBlockLight(LightPacking.getBlock(packed)) .light(packed)
.setSkyLight(LightPacking.getSky(packed))
.setChanged(); .setChanged();
}); });
@ -89,8 +87,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
short packed = light.getPackedLight(pos.getX(), pos.getY(), pos.getZ()); short packed = light.getPackedLight(pos.getX(), pos.getY(), pos.getZ());
rope1.setPosition(getVisualPosition()) rope1.setPosition(getVisualPosition())
.nudgePosition(0, -halfRopeNudge, 0) .nudgePosition(0, -halfRopeNudge, 0)
.setBlockLight(LightPacking.getBlock(packed)) .light(packed)
.setSkyLight(LightPacking.getSky(packed))
.setChanged(); .setChanged();
}); });
@ -103,8 +100,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
rope.get(i) rope.get(i)
.setPosition(getVisualPosition()) .setPosition(getVisualPosition())
.nudgePosition(0, -offset + i + 1, 0) .nudgePosition(0, -offset + i + 1, 0)
.setBlockLight(LightPacking.getBlock(packed)) .light(packed)
.setSkyLight(LightPacking.getSky(packed))
.setChanged(); .setChanged();
} }
} else { } else {

View file

@ -12,15 +12,13 @@ import com.jozufozu.flywheel.api.visual.BlockEntityVisual;
import com.jozufozu.flywheel.api.visual.DynamicVisual; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visual.LitVisual; import com.jozufozu.flywheel.api.visual.LitVisual;
import com.jozufozu.flywheel.api.visual.TickableVisual; import com.jozufozu.flywheel.api.visual.TickableVisual;
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
import com.jozufozu.flywheel.api.visual.VisualTickContext;
import com.jozufozu.flywheel.api.visualization.BlockEntityVisualizer; import com.jozufozu.flywheel.api.visualization.BlockEntityVisualizer;
import com.jozufozu.flywheel.api.visualization.VisualEmbedding; import com.jozufozu.flywheel.api.visualization.VisualEmbedding;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.api.visualization.VisualizerRegistry; import com.jozufozu.flywheel.api.visualization.VisualizerRegistry;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
import com.jozufozu.flywheel.lib.model.baked.MultiBlockModelBuilder; import com.jozufozu.flywheel.lib.model.baked.ForgeMultiBlockModelBuilder;
import com.jozufozu.flywheel.lib.task.ForEachPlan; import com.jozufozu.flywheel.lib.task.ForEachPlan;
import com.jozufozu.flywheel.lib.task.NestedPlan; import com.jozufozu.flywheel.lib.task.NestedPlan;
import com.jozufozu.flywheel.lib.task.PlanMap; import com.jozufozu.flywheel.lib.task.PlanMap;
@ -52,8 +50,8 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
protected final VisualEmbedding embedding; protected final VisualEmbedding embedding;
protected final List<BlockEntityVisual<?>> children = new ArrayList<>(); protected final List<BlockEntityVisual<?>> children = new ArrayList<>();
protected final List<ActorVisual> actors = new ArrayList<>(); protected final List<ActorVisual> actors = new ArrayList<>();
protected final PlanMap<DynamicVisual, VisualFrameContext> dynamicVisuals = new PlanMap<>(); protected final PlanMap<DynamicVisual, DynamicVisual.Context> dynamicVisuals = new PlanMap<>();
protected final PlanMap<TickableVisual, VisualTickContext> tickableVisuals = new PlanMap<>(); protected final PlanMap<TickableVisual, TickableVisual.Context> tickableVisuals = new PlanMap<>();
protected VirtualRenderWorld virtualRenderWorld; protected VirtualRenderWorld virtualRenderWorld;
protected Model model; protected Model model;
protected TransformedInstance structure; protected TransformedInstance structure;
@ -83,7 +81,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
} }
}; };
model = new MultiBlockModelBuilder(modelWorld, blocks.positions()) model = new ForgeMultiBlockModelBuilder(modelWorld, blocks.positions())
.modelDataLookup(pos -> contraption.modelData.getOrDefault(pos, ModelData.EMPTY)) .modelDataLookup(pos -> contraption.modelData.getOrDefault(pos, ModelData.EMPTY))
.build(); .build();
@ -155,7 +153,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
} }
@Override @Override
public Plan<VisualTickContext> planTick() { public Plan<TickableVisual.Context> planTick() {
return NestedPlan.of( return NestedPlan.of(
ForEachPlan.of(() -> actors, ActorVisual::tick), ForEachPlan.of(() -> actors, ActorVisual::tick),
tickableVisuals tickableVisuals
@ -163,7 +161,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
} }
@Override @Override
public Plan<VisualFrameContext> planFrame() { public Plan<DynamicVisual.Context> planFrame() {
return NestedPlan.of( return NestedPlan.of(
RunnablePlan.of(this::beginFrame), RunnablePlan.of(this::beginFrame),
ForEachPlan.of(() -> actors, ActorVisual::beginFrame), ForEachPlan.of(() -> actors, ActorVisual::beginFrame),
@ -171,7 +169,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
); );
} }
protected void beginFrame(VisualFrameContext context) { protected void beginFrame(DynamicVisual.Context context) {
var partialTick = context.partialTick(); var partialTick = context.partialTick();
setEmbeddingMatrices(partialTick); setEmbeddingMatrices(partialTick);

View file

@ -4,7 +4,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.instance.Instancer; import com.jozufozu.flywheel.api.instance.Instancer;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -50,7 +50,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick(); float partialTicks = ctx.partialTick();
float lidAngle = blockEntity.lid.getValue(partialTicks); float lidAngle = blockEntity.lid.getValue(partialTicks);

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.fluids.pipes.valve;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -52,7 +52,7 @@ public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> impleme
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (blockEntity.pointer.settled() && settled) if (blockEntity.pointer.settled() && settled)
return; return;

View file

@ -164,8 +164,7 @@ public class BeltVisual extends KineticBlockEntityVisual<BeltBlockEntity> {
.setRotationOffset(bottom ? 0.5f : 0f) .setRotationOffset(bottom ? 0.5f : 0f)
.setColor(blockEntity) .setColor(blockEntity)
.setPosition(getVisualPosition()) .setPosition(getVisualPosition())
.setBlockLight(level.getBrightness(LightLayer.BLOCK, pos)) .light(level.getBrightness(LightLayer.BLOCK, pos), level.getBrightness(LightLayer.SKY, pos))
.setSkyLight(level.getBrightness(LightLayer.SKY, pos))
.setChanged(); .setChanged();
return key; return key;

View file

@ -4,7 +4,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.model.Model; import com.jozufozu.flywheel.api.model.Model;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -28,7 +28,7 @@ public class HandCrankVisual extends SingleRotatingVisual<HandCrankBlockEntity>
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (crank == null) if (crank == null)
return; return;

View file

@ -69,10 +69,10 @@ public class DeployerActorVisual extends ActorVisual {
shaft.setRotationAxis(axis) shaft.setRotationAxis(axis)
.setPosition(context.localPos) .setPosition(context.localPos)
.setBlockLight(blockLight); .light(blockLight, 0);
pole.setBlockLight(blockLight); pole.light(blockLight, 0);
hand.setBlockLight(blockLight); hand.light(blockLight, 0);
} }
@Override @Override

View file

@ -8,8 +8,8 @@ import java.util.function.Consumer;
import org.joml.Quaternionf; import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visual.VisualTickContext; import com.jozufozu.flywheel.api.visual.TickableVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.OrientedInstance; import com.jozufozu.flywheel.lib.instance.OrientedInstance;
@ -69,7 +69,7 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
} }
@Override @Override
public void tick(VisualTickContext ctx) { public void tick(TickableVisual.Context context) {
PartialModel handPose = blockEntity.getHandPose(); PartialModel handPose = blockEntity.getHandPose();
if (currentHand != handPose) { if (currentHand != handPose) {
@ -80,7 +80,7 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float newProgress = getProgress(ctx.partialTick()); float newProgress = getProgress(ctx.partialTick());
if (Mth.equal(newProgress, progress)) return; if (Mth.equal(newProgress, progress)) return;

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.kinetics.flywheel;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -36,7 +36,7 @@ public class FlywheelVisual extends KineticBlockEntityVisual<FlywheelBlockEntity
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick(); float partialTicks = ctx.partialTick();

View file

@ -5,7 +5,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.instance.Instancer; import com.jozufozu.flywheel.api.instance.Instancer;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -63,7 +63,7 @@ public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implemen
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (Mth.equal(blockEntity.prevDialState, blockEntity.dialState)) if (Mth.equal(blockEntity.prevDialState, blockEntity.dialState))
return; return;

View file

@ -47,8 +47,7 @@ public class GearboxVisual extends KineticBlockEntityVisual<GearboxBlockEntity>
.setRotationalSpeed(getSpeed(direction)) .setRotationalSpeed(getSpeed(direction))
.setRotationOffset(getRotationOffset(axis)).setColor(blockEntity) .setRotationOffset(getRotationOffset(axis)).setColor(blockEntity)
.setPosition(getVisualPosition()) .setPosition(getVisualPosition())
.setBlockLight(blockLight) .light(blockLight, skyLight)
.setSkyLight(skyLight)
.setChanged(); .setChanged();
keys.put(direction, key); keys.put(direction, key);

View file

@ -6,7 +6,7 @@ import java.util.function.Consumer;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.model.Model; import com.jozufozu.flywheel.api.model.Model;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.instance.AbstractInstance;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
@ -70,7 +70,7 @@ public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements S
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (blockEntity.phase == ArmBlockEntity.Phase.DANCING && blockEntity.getSpeed() != 0) { if (blockEntity.phase == ArmBlockEntity.Phase.DANCING && blockEntity.getSpeed() != 0) {
animateRave(ctx.partialTick()); animateRave(ctx.partialTick());
firstRender = true; firstRender = true;

View file

@ -4,7 +4,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.model.Model; import com.jozufozu.flywheel.api.model.Model;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.OrientedInstance; import com.jozufozu.flywheel.lib.instance.OrientedInstance;
@ -49,7 +49,7 @@ public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
animate(ctx.partialTick()); animate(ctx.partialTick());
} }

View file

@ -5,7 +5,7 @@ import java.util.function.Consumer;
import org.joml.Quaternionf; import org.joml.Quaternionf;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.OrientedInstance; import com.jozufozu.flywheel.lib.instance.OrientedInstance;
@ -40,7 +40,7 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
transformModels(ctx.partialTick()); transformModels(ctx.partialTick());
} }

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.kinetics.steamEngine;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -36,7 +36,7 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
Float angle = blockEntity.getTargetAngle(); Float angle = blockEntity.getTargetAngle();
if (angle == null) { if (angle == null) {
piston.setEmptyTransform().setChanged(); piston.setEmptyTransform().setChanged();

View file

@ -86,7 +86,7 @@ public class WaterWheelVisual<T extends WaterWheelBlockEntity> extends KineticBl
dir = state.getValue(WaterWheelBlock.FACING); dir = state.getValue(WaterWheelBlock.FACING);
} }
PoseStack transform = CachedBufferer.rotateToFaceVertical(dir).get(); PoseStack transform = CachedBufferer.rotateToFaceVertical(dir).get();
return new BakedModelBuilder(model) return BakedModelBuilder.create(model)
.poseStack(transform) .poseStack(transform)
.build(); .build();
} }

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.depot;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -32,7 +32,7 @@ public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements Si
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float lidProgress = getLidProgress(ctx.partialTick()); float lidProgress = getLidProgress(ctx.partialTick());
if (lidProgress == lastProgress) { if (lidProgress == lastProgress) {

View file

@ -17,6 +17,7 @@ public class FlapInstance extends AbstractInstance implements FlatLit {
public float z; public float z;
public byte blockLight; public byte blockLight;
public byte skyLight; public byte skyLight;
public int packedLight;
public float segmentOffsetX; public float segmentOffsetX;
public float segmentOffsetY; public float segmentOffsetY;
public float segmentOffsetZ; public float segmentOffsetZ;
@ -49,22 +50,16 @@ public class FlapInstance extends AbstractInstance implements FlatLit {
} }
@Override @Override
public FlapInstance setBlockLight(int blockLight) { public FlapInstance light(int blockLight, int skyLight) {
this.blockLight = (byte) (blockLight & 0xF); return this.light(LightTexture.pack(blockLight, skyLight));
return this;
} }
@Override @Override
public FlapInstance setSkyLight(int skyLight) { public FlapInstance light(int packedLight) {
this.skyLight = (byte) (skyLight & 0xF); this.packedLight = packedLight;
return this; return this;
} }
@Override
public int getPackedLight() {
return LightTexture.pack(this.blockLight, this.skyLight);
}
public FlapInstance setSegmentOffset(float x, float y, float z) { public FlapInstance setSegmentOffset(float x, float y, float z) {
this.segmentOffsetX = x; this.segmentOffsetX = x;
this.segmentOffsetY = y; this.segmentOffsetY = y;

View file

@ -5,7 +5,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.instance.Instancer; import com.jozufozu.flywheel.api.instance.Instancer;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.instance.AbstractInstance;
import com.jozufozu.flywheel.lib.model.Models; import com.jozufozu.flywheel.lib.model.Models;
@ -51,8 +51,7 @@ public class FunnelVisual extends AbstractBlockEntityVisual<FunnelBlockEntity> i
key.setPosition(getVisualPosition()) key.setPosition(getVisualPosition())
.setSegmentOffset(segmentOffset, 0, -blockEntity.getFlapOffset()) .setSegmentOffset(segmentOffset, 0, -blockEntity.getFlapOffset())
.setBlockLight(blockLight) .light(blockLight, skyLight)
.setSkyLight(skyLight)
.setHorizontalAngle(horizontalAngle) .setHorizontalAngle(horizontalAngle)
.setFlapness(flapness) .setFlapness(flapness)
.setFlapScale(-1) .setFlapScale(-1)
@ -65,7 +64,7 @@ public class FunnelVisual extends AbstractBlockEntityVisual<FunnelBlockEntity> i
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (flaps == null) return; if (flaps == null) return;
float flapness = blockEntity.flap.getValue(ctx.partialTick()); float flapness = blockEntity.flap.getValue(ctx.partialTick());

View file

@ -8,7 +8,7 @@ import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.instance.Instancer; import com.jozufozu.flywheel.api.instance.Instancer;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.AbstractInstance; import com.jozufozu.flywheel.lib.instance.AbstractInstance;
import com.jozufozu.flywheel.lib.model.Models; import com.jozufozu.flywheel.lib.model.Models;
@ -54,8 +54,7 @@ public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockE
key.setPosition(getVisualPosition()) key.setPosition(getVisualPosition())
.setSegmentOffset(segmentOffset, 0, 0) .setSegmentOffset(segmentOffset, 0, 0)
.setBlockLight(blockLight) .light(blockLight, skyLight)
.setSkyLight(skyLight)
.setHorizontalAngle(horizontalAngle) .setHorizontalAngle(horizontalAngle)
.setFlapness(flapness) .setFlapness(flapness)
.setFlapScale(flapScale) .setFlapScale(flapScale)
@ -86,7 +85,7 @@ public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockE
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
tunnelFlaps.forEach((direction, keys) -> { tunnelFlaps.forEach((direction, keys) -> {
LerpedFloat lerpedFloat = blockEntity.flaps.get(direction); LerpedFloat lerpedFloat = blockEntity.flaps.get(direction);
if (lerpedFloat == null) if (lerpedFloat == null)

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.redstone.analogLever;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -50,7 +50,7 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
if (!blockEntity.clientState.settled()) if (!blockEntity.clientState.settled())
animateLever(ctx.partialTick()); animateLever(ctx.partialTick());
} }

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.redstone.diodes;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualTickContext; import com.jozufozu.flywheel.api.visual.TickableVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -33,7 +33,7 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
} }
@Override @Override
public void tick(VisualTickContext ctx) { public void tick(TickableVisual.Context context) {
if (previousState == blockEntity.state) return; if (previousState == blockEntity.state) return;
indicator.setColor(getColor()); indicator.setColor(getColor());

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.schematics.cannon;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
@ -29,7 +29,7 @@ public class SchematicannonVisual extends AbstractBlockEntityVisual<Schematicann
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
float partialTicks = ctx.partialTick(); float partialTicks = ctx.partialTick();
double[] cannonAngles = SchematicannonRenderer.getCannonAngles(blockEntity, pos, partialTicks); double[] cannonAngles = SchematicannonRenderer.getCannonAngles(blockEntity, pos, partialTicks);

View file

@ -341,13 +341,15 @@ public abstract class BogeyRenderer {
public BogeyModelData setTransform(PoseStack ms) { public BogeyModelData setTransform(PoseStack ms) {
if (this.transform instanceof TransformedInstance model) if (this.transform instanceof TransformedInstance model)
model.setTransform(ms); model.setTransform(ms)
.setChanged();
return this; return this;
} }
public BogeyModelData setEmptyTransform() { public BogeyModelData setEmptyTransform() {
if (this.transform instanceof TransformedInstance model) if (this.transform instanceof TransformedInstance model)
model.setEmptyTransform(); model.setEmptyTransform()
.setChanged();
return this; return this;
} }
@ -359,7 +361,8 @@ public abstract class BogeyRenderer {
public BogeyModelData updateLight(int blockLight, int skyLight) { public BogeyModelData updateLight(int blockLight, int skyLight) {
if (this.transform instanceof TransformedInstance model) if (this.transform instanceof TransformedInstance model)
model.setBlockLight(blockLight).setSkyLight(skyLight); model.light(blockLight, skyLight)
.setChanged();
return this; return this;
} }

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.trains.entity;
import org.joml.Vector3f; import org.joml.Vector3f;
import com.jozufozu.flywheel.api.visual.VisualFrameContext; import com.jozufozu.flywheel.api.visual.DynamicVisual;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.transform.TransformStack; import com.jozufozu.flywheel.lib.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
@ -44,7 +44,7 @@ public class CarriageContraptionVisual extends ContraptionVisual<CarriageContrap
} }
@Override @Override
public void beginFrame(VisualFrameContext ctx) { public void beginFrame(DynamicVisual.Context ctx) {
super.beginFrame(ctx); super.beginFrame(ctx);
if (bogeys == null) { if (bogeys == null) {
if (entity.isReadyForRender()) if (entity.isReadyForRender())

View file

@ -9,6 +9,7 @@ import javax.annotation.Nullable;
import com.jozufozu.flywheel.api.instance.Instance; import com.jozufozu.flywheel.api.instance.Instance;
import com.jozufozu.flywheel.api.visualization.VisualizationContext; import com.jozufozu.flywheel.api.visualization.VisualizationContext;
import com.jozufozu.flywheel.lib.instance.FlatLit;
import com.jozufozu.flywheel.lib.instance.InstanceTypes; import com.jozufozu.flywheel.lib.instance.InstanceTypes;
import com.jozufozu.flywheel.lib.instance.TransformedInstance; import com.jozufozu.flywheel.lib.instance.TransformedInstance;
import com.jozufozu.flywheel.lib.model.Models; import com.jozufozu.flywheel.lib.model.Models;
@ -24,6 +25,8 @@ import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos; import net.minecraft.core.SectionPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LightLayer;
public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> { public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
@ -179,14 +182,11 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
void updateLight() { void updateLight() {
for (int i = 0; i < ties.length; i++) for (int i = 0; i < ties.length; i++)
ties[i].updateLight(level, tiesLightPos[i]) TrackVisual.updateLight(ties[i], level, tiesLightPos[i]);
.setChanged();
for (int i = 0; i < left.length; i++) for (int i = 0; i < left.length; i++)
left[i].updateLight(level, leftLightPos[i]) TrackVisual.updateLight(left[i], level, leftLightPos[i]);
.setChanged();
for (int i = 0; i < right.length; i++) for (int i = 0; i < right.length; i++)
right[i].updateLight(level, rightLightPos[i]) TrackVisual.updateLight(right[i], level, rightLightPos[i]);
.setChanged();
if (girder != null) if (girder != null)
girder.updateLight(); girder.updateLight();
} }
@ -265,13 +265,11 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
void updateLight() { void updateLight() {
beams.forEach(arr -> { beams.forEach(arr -> {
for (int i = 0; i < arr.length; i++) for (int i = 0; i < arr.length; i++)
arr[i].updateLight(level, lightPos[i]) TrackVisual.updateLight(arr[i], level, lightPos[i]);
.setChanged();
}); });
beamCaps.forEach(c -> c.forEach(arr -> { beamCaps.forEach(c -> c.forEach(arr -> {
for (int i = 0; i < arr.length; i++) for (int i = 0; i < arr.length; i++)
arr[i].updateLight(level, lightPos[i]) TrackVisual.updateLight(arr[i], level, lightPos[i]);
.setChanged();
})); }));
} }
@ -288,4 +286,9 @@ public class TrackVisual extends AbstractBlockEntityVisual<TrackBlockEntity> {
} }
} }
private static void updateLight(FlatLit instance, Level level, BlockPos pos) {
instance.light(level.getBrightness(LightLayer.BLOCK, pos), level.getBrightness(LightLayer.SKY, pos))
.setChanged();
}
} }

View file

@ -36,8 +36,8 @@ public class AllInstanceTypes {
MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 1, instance.g);
MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 2, instance.b);
MemoryUtil.memPutByte(ptr + 3, instance.a); MemoryUtil.memPutByte(ptr + 3, instance.a);
MemoryUtil.memPutShort(ptr + 4, instance.blockLight); MemoryUtil.memPutShort(ptr + 4, (short) (instance.packedLight & 0xFFFF));
MemoryUtil.memPutShort(ptr + 6, instance.skyLight); MemoryUtil.memPutShort(ptr + 6, (short) (instance.packedLight >> 16 & 0xFFFF));
MemoryUtil.memPutInt(ptr + 8, instance.overlay); MemoryUtil.memPutInt(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 12, instance.x);
MemoryUtil.memPutFloat(ptr + 16, instance.y); MemoryUtil.memPutFloat(ptr + 16, instance.y);
@ -70,8 +70,8 @@ public class AllInstanceTypes {
MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 1, instance.g);
MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 2, instance.b);
MemoryUtil.memPutByte(ptr + 3, instance.a); MemoryUtil.memPutByte(ptr + 3, instance.a);
MemoryUtil.memPutShort(ptr + 4, instance.blockLight); MemoryUtil.memPutShort(ptr + 4, (short) (instance.packedLight & 0xFFFF));
MemoryUtil.memPutShort(ptr + 6, instance.skyLight); MemoryUtil.memPutShort(ptr + 6, (short) (instance.packedLight >> 16 & 0xFFFF));
MemoryUtil.memPutInt(ptr + 8, instance.overlay); MemoryUtil.memPutInt(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 12, instance.x);
MemoryUtil.memPutFloat(ptr + 16, instance.y); MemoryUtil.memPutFloat(ptr + 16, instance.y);
@ -143,8 +143,8 @@ public class AllInstanceTypes {
MemoryUtil.memPutFloat(ptr, instance.x); MemoryUtil.memPutFloat(ptr, instance.x);
MemoryUtil.memPutFloat(ptr + 4, instance.y); MemoryUtil.memPutFloat(ptr + 4, instance.y);
MemoryUtil.memPutFloat(ptr + 8, instance.z); MemoryUtil.memPutFloat(ptr + 8, instance.z);
MemoryUtil.memPutShort(ptr + 12, instance.blockLight); MemoryUtil.memPutShort(ptr + 12, (short) (instance.packedLight & 0xFFFF));
MemoryUtil.memPutShort(ptr + 14, instance.skyLight); MemoryUtil.memPutShort(ptr + 14, (short) (instance.packedLight >> 16 & 0xFFFF));
MemoryUtil.memPutFloat(ptr + 16, instance.segmentOffsetX); MemoryUtil.memPutFloat(ptr + 16, instance.segmentOffsetX);
MemoryUtil.memPutFloat(ptr + 20, instance.segmentOffsetY); MemoryUtil.memPutFloat(ptr + 20, instance.segmentOffsetY);
MemoryUtil.memPutFloat(ptr + 24, instance.segmentOffsetZ); MemoryUtil.memPutFloat(ptr + 24, instance.segmentOffsetZ);

View file

@ -8,8 +8,8 @@ import org.joml.Matrix4f;
import org.joml.Vector4f; import org.joml.Vector4f;
import com.jozufozu.flywheel.api.visualization.VisualizationManager; import com.jozufozu.flywheel.api.visualization.VisualizationManager;
import com.jozufozu.flywheel.impl.visualization.VisualizationHelper;
import com.jozufozu.flywheel.lib.transform.TransformStack; import com.jozufozu.flywheel.lib.transform.TransformStack;
import com.jozufozu.flywheel.lib.visual.VisualizationHelper;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;

View file

@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable;
import com.jozufozu.flywheel.api.model.Model; import com.jozufozu.flywheel.api.model.Model;
import com.jozufozu.flywheel.lib.model.ModelCache; import com.jozufozu.flywheel.lib.model.ModelCache;
import com.jozufozu.flywheel.lib.model.ModelUtil; import com.jozufozu.flywheel.lib.model.ModelUtil;
import com.jozufozu.flywheel.lib.model.baked.BakedModelBuilder; import com.jozufozu.flywheel.lib.model.baked.ForgeBakedModelBuilder;
import com.jozufozu.flywheel.lib.model.baked.VirtualEmptyBlockGetter; import com.jozufozu.flywheel.lib.model.baked.VirtualEmptyBlockGetter;
import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.BufferBuilder.RenderedBuffer; import com.mojang.blaze3d.vertex.BufferBuilder.RenderedBuffer;
@ -29,7 +29,7 @@ public class VirtualRenderHelper {
public static final ModelProperty<Boolean> VIRTUAL_PROPERTY = new ModelProperty<>(); public static final ModelProperty<Boolean> VIRTUAL_PROPERTY = new ModelProperty<>();
public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).build(); public static final ModelData VIRTUAL_DATA = ModelData.builder().with(VIRTUAL_PROPERTY, true).build();
private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new BakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build()); private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new ForgeBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new); private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
public static boolean isVirtual(ModelData data) { public static boolean isVirtual(ModelData data) {

View file

@ -9,7 +9,7 @@ import java.util.stream.Stream;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.api.Flywheel;
import com.jozufozu.flywheel.api.backend.BackendManager; import com.jozufozu.flywheel.api.backend.BackendManager;
import com.mojang.blaze3d.platform.GlUtil; import com.mojang.blaze3d.platform.GlUtil;
import com.simibubi.create.Create; import com.simibubi.create.Create;
@ -73,7 +73,12 @@ public class DebugInformation {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
DebugInfoSection.builder("Graphics") DebugInfoSection.builder("Graphics")
.put("Flywheel Version", Flywheel.getVersion().toString()) .put("Flywheel Version", ModList.get()
.getModContainerById(Flywheel.ID)
.map(c -> c.getModInfo()
.getVersion()
.toString())
.orElse("None"))
.put("Flywheel Backend", () -> BackendManager.getBackend().toString()) .put("Flywheel Backend", () -> BackendManager.getBackend().toString())
.put("OpenGL Renderer", GlUtil::getRenderer) .put("OpenGL Renderer", GlUtil::getRenderer)
.put("OpenGL Version", GlUtil::getOpenGLVersion) .put("OpenGL Version", GlUtil::getOpenGLVersion)

View file

@ -9,5 +9,5 @@ void flw_instanceVertex(in FlwInstance instance) {
flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, instance.rotation) + instance.pos + .5; flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, instance.rotation) + instance.pos + .5;
flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, kineticRot), instance.rotation); flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, kineticRot), instance.rotation);
flw_vertexLight = instance.light / 15.; flw_vertexLight = vec2(instance.light) / 256.;
} }

View file

@ -10,7 +10,7 @@ void flw_instanceVertex(in FlwInstance instance) {
float scroll = fract(instance.speed * flw_renderTicks / (31.5 * 16.) + instance.offset) * scrollSize * instance.scrollMult; float scroll = fract(instance.speed * flw_renderTicks / (31.5 * 16.) + instance.offset) * scrollSize * instance.scrollMult;
flw_vertexTexCoord = flw_vertexTexCoord - instance.sourceTexture + instance.scrollTexture.xy + vec2(0, scroll); flw_vertexTexCoord = flw_vertexTexCoord - instance.sourceTexture + instance.scrollTexture.xy + vec2(0, scroll);
flw_vertexLight = instance.light / 15.; flw_vertexLight = vec2(instance.light) / 256.;
flw_vertexOverlay = instance.overlay; flw_vertexOverlay = instance.overlay;
#if defined(DEBUG_RAINBOW) #if defined(DEBUG_RAINBOW)

View file

@ -25,5 +25,5 @@ void flw_instanceVertex(in FlwInstance flap) {
flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, orientation) + flap.instancePos + .5; flw_vertexPos.xyz = rotateByQuaternion(rotated - .5, orientation) + flap.instancePos + .5;
flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, flapRotation), orientation); flw_vertexNormal = rotateByQuaternion(rotateByQuaternion(flw_vertexNormal, flapRotation), orientation);
flw_vertexLight = flap.light / 15.; flw_vertexLight = vec2(flap.light) / 256.;
} }

View file

@ -14,7 +14,7 @@ void flw_instanceVertex(in FlwInstance instance) {
flw_vertexPos.xyz = worldPos.xyz + instance.pos + .5; flw_vertexPos.xyz = worldPos.xyz + instance.pos + .5;
flw_vertexNormal = spin * flw_vertexNormal; flw_vertexNormal = spin * flw_vertexNormal;
flw_vertexLight = instance.light / 15.; flw_vertexLight = vec2(instance.light) / 256.;
flw_vertexOverlay = instance.overlay; flw_vertexOverlay = instance.overlay;
#if defined(DEBUG_RAINBOW) #if defined(DEBUG_RAINBOW)