mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-27 20:34:43 +01:00
As shrimple as that
- Update to SimpleDynamicVisuals - Translate old context stuff to new api - Add contraption visual, doesn't fully work yet - Strip out more FlwContraption stuff
This commit is contained in:
parent
633a7abc23
commit
286d2a68ab
45 changed files with 438 additions and 176 deletions
|
@ -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-43
|
flywheel_version = 1.0.0-alpha-53
|
||||||
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
|
||||||
|
|
|
@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.gantry.GantryContraptionEntity;
|
||||||
import com.simibubi.create.content.contraptions.glue.SuperGlueEntity;
|
import com.simibubi.create.content.contraptions.glue.SuperGlueEntity;
|
||||||
import com.simibubi.create.content.contraptions.glue.SuperGlueRenderer;
|
import com.simibubi.create.content.contraptions.glue.SuperGlueRenderer;
|
||||||
import com.simibubi.create.content.contraptions.render.ContraptionEntityRenderer;
|
import com.simibubi.create.content.contraptions.render.ContraptionEntityRenderer;
|
||||||
|
import com.simibubi.create.content.contraptions.render.ContraptionVisual;
|
||||||
import com.simibubi.create.content.contraptions.render.OrientedContraptionEntityRenderer;
|
import com.simibubi.create.content.contraptions.render.OrientedContraptionEntityRenderer;
|
||||||
import com.simibubi.create.content.equipment.blueprint.BlueprintEntity;
|
import com.simibubi.create.content.equipment.blueprint.BlueprintEntity;
|
||||||
import com.simibubi.create.content.equipment.blueprint.BlueprintRenderer;
|
import com.simibubi.create.content.equipment.blueprint.BlueprintRenderer;
|
||||||
|
@ -33,15 +34,22 @@ import net.minecraft.world.entity.MobCategory;
|
||||||
public class AllEntityTypes {
|
public class AllEntityTypes {
|
||||||
|
|
||||||
public static final EntityEntry<OrientedContraptionEntity> ORIENTED_CONTRAPTION = contraption("contraption",
|
public static final EntityEntry<OrientedContraptionEntity> ORIENTED_CONTRAPTION = contraption("contraption",
|
||||||
OrientedContraptionEntity::new, () -> OrientedContraptionEntityRenderer::new, 5, 3, true).register();
|
OrientedContraptionEntity::new, () -> OrientedContraptionEntityRenderer::new, 5, 3, true)
|
||||||
|
.instance(() -> ContraptionVisual::new)
|
||||||
|
.register();
|
||||||
public static final EntityEntry<ControlledContraptionEntity> CONTROLLED_CONTRAPTION =
|
public static final EntityEntry<ControlledContraptionEntity> CONTROLLED_CONTRAPTION =
|
||||||
contraption("stationary_contraption", ControlledContraptionEntity::new, () -> ContraptionEntityRenderer::new,
|
contraption("stationary_contraption", ControlledContraptionEntity::new, () -> ContraptionEntityRenderer::new,
|
||||||
20, 40, false).register();
|
20, 40, false)
|
||||||
|
.instance(() -> ContraptionVisual::new)
|
||||||
|
.register();
|
||||||
public static final EntityEntry<GantryContraptionEntity> GANTRY_CONTRAPTION = contraption("gantry_contraption",
|
public static final EntityEntry<GantryContraptionEntity> GANTRY_CONTRAPTION = contraption("gantry_contraption",
|
||||||
GantryContraptionEntity::new, () -> ContraptionEntityRenderer::new, 10, 40, false).register();
|
GantryContraptionEntity::new, () -> ContraptionEntityRenderer::new, 10, 40, false)
|
||||||
|
.instance(() -> ContraptionVisual::new)
|
||||||
|
.register();
|
||||||
public static final EntityEntry<CarriageContraptionEntity> CARRIAGE_CONTRAPTION =
|
public static final EntityEntry<CarriageContraptionEntity> CARRIAGE_CONTRAPTION =
|
||||||
contraption("carriage_contraption", CarriageContraptionEntity::new,
|
contraption("carriage_contraption", CarriageContraptionEntity::new,
|
||||||
() -> CarriageContraptionEntityRenderer::new, 15, 3, true).instance(() -> CarriageContraptionVisual::new)
|
() -> CarriageContraptionEntityRenderer::new, 15, 3, true)
|
||||||
|
.instance(() -> CarriageContraptionVisual::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final EntityEntry<SuperGlueEntity> SUPER_GLUE =
|
public static final EntityEntry<SuperGlueEntity> SUPER_GLUE =
|
||||||
|
|
|
@ -18,6 +18,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsClient;
|
||||||
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
||||||
import com.simibubi.create.foundation.outliner.Outliner;
|
import com.simibubi.create.foundation.outliner.Outliner;
|
||||||
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
|
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
|
||||||
|
import com.simibubi.create.foundation.render.AllContextShaders;
|
||||||
import com.simibubi.create.foundation.render.AllInstanceTypes;
|
import com.simibubi.create.foundation.render.AllInstanceTypes;
|
||||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||||
import com.simibubi.create.foundation.render.StitchedSprite;
|
import com.simibubi.create.foundation.render.StitchedSprite;
|
||||||
|
@ -67,6 +68,7 @@ public class CreateClient {
|
||||||
modEventBus.addListener(StitchedSprite::onTextureStitchPost);
|
modEventBus.addListener(StitchedSprite::onTextureStitchPost);
|
||||||
|
|
||||||
AllInstanceTypes.init();
|
AllInstanceTypes.init();
|
||||||
|
AllContextShaders.init();
|
||||||
|
|
||||||
MODEL_SWAPPER.registerListeners(modEventBus);
|
MODEL_SWAPPER.registerListeners(modEventBus);
|
||||||
|
|
||||||
|
|
|
@ -246,10 +246,12 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
||||||
float angle = getAngle(partialTicks);
|
float angle = getAngle(partialTicks);
|
||||||
Axis axis = getRotationAxis();
|
Axis axis = getRotationAxis();
|
||||||
|
|
||||||
TransformStack.of(matrixStack)
|
if (axis != null) {
|
||||||
.nudge(getId())
|
TransformStack.of(matrixStack)
|
||||||
.center()
|
.nudge(getId())
|
||||||
.rotate(angle, axis)
|
.center()
|
||||||
.uncenter();
|
.rotate(angle, axis)
|
||||||
|
.uncenter();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,17 @@ public class HarvesterActorVisual extends ActorVisual {
|
||||||
.setChanged();
|
.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double getRotation() {
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
harvester.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected double getRotation() {
|
||||||
return AngleHelper.angleLerp(AnimationTickHolder.getPartialTicks(), previousRotation, rotation);
|
return AngleHelper.angleLerp(AnimationTickHolder.getPartialTicks(), previousRotation, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,4 +28,13 @@ public class PSIActorVisual extends ActorVisual {
|
||||||
instance.beginFrame(lf.getValue(AnimationTickHolder.getPartialTicks()));
|
instance.beginFrame(lf.getValue(AnimationTickHolder.getPartialTicks()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
instance.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,15 @@ 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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.TickableVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleTickableVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
||||||
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.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
public class PSIVisual extends AbstractBlockEntityVisual<PortableStorageInterfaceBlockEntity> implements DynamicVisual, TickableVisual {
|
public class PSIVisual extends AbstractBlockEntityVisual<PortableStorageInterfaceBlockEntity> implements SimpleDynamicVisual, SimpleTickableVisual {
|
||||||
|
|
||||||
private final PIInstance instance;
|
private final PIInstance instance;
|
||||||
|
|
||||||
|
|
|
@ -61,4 +61,10 @@ public class RollerActorVisual extends HarvesterActorVisual {
|
||||||
return 16.5;
|
return 16.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
super._delete();
|
||||||
|
|
||||||
|
frame.delete();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -22,7 +22,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
|
||||||
public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> extends BackHalfShaftVisual<B> implements DynamicVisual {
|
public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> extends BackHalfShaftVisual<B> implements SimpleDynamicVisual {
|
||||||
final OrientedInstance topInstance;
|
final OrientedInstance topInstance;
|
||||||
|
|
||||||
final Axis rotationAxis;
|
final Axis rotationAxis;
|
||||||
|
|
|
@ -64,4 +64,15 @@ public class StabilizedBearingVisual extends ActorVisual {
|
||||||
|
|
||||||
topInstance.setRotation(rotation);
|
topInstance.setRotation(rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
topInstance.delete();
|
||||||
|
shaft.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -17,7 +17,7 @@ import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity> implements DynamicVisual {
|
public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
float lastOffset = Float.NaN;
|
float lastOffset = Float.NaN;
|
||||||
final Direction facing;
|
final Direction facing;
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
package com.simibubi.create.content.contraptions.elevator;
|
package com.simibubi.create.content.contraptions.elevator;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
||||||
import com.simibubi.create.content.kinetics.base.ShaftVisual;
|
import com.simibubi.create.content.kinetics.base.ShaftVisual;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
public class ElevatorPulleyVisual extends ShaftVisual<ElevatorPulleyBlockEntity> implements DynamicVisual {
|
public class ElevatorPulleyVisual extends ShaftVisual<ElevatorPulleyBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
public ElevatorPulleyVisual(VisualizationContext context, ElevatorPulleyBlockEntity blockEntity) {
|
public ElevatorPulleyVisual(VisualizationContext context, ElevatorPulleyBlockEntity blockEntity) {
|
||||||
super(context, blockEntity);
|
super(context, blockEntity);
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -19,7 +19,7 @@ import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity> implements DynamicVisual {
|
public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final TransformedInstance gantryCogs;
|
private final TransformedInstance gantryCogs;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -21,7 +21,7 @@ import com.simibubi.create.foundation.render.SelectInstance;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends ShaftVisual<T> implements DynamicVisual {
|
public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends ShaftVisual<T> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
final OrientedInstance coil;
|
final OrientedInstance coil;
|
||||||
final SelectInstance<OrientedInstance> magnet;
|
final SelectInstance<OrientedInstance> magnet;
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
package com.simibubi.create.content.contraptions.render;
|
package com.simibubi.create.content.contraptions.render;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.instance.InstancerProvider;
|
import com.jozufozu.flywheel.api.instance.InstancerProvider;
|
||||||
|
import com.jozufozu.flywheel.api.visual.Visual;
|
||||||
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
||||||
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
|
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
|
||||||
|
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
import net.minecraft.world.level.LightLayer;
|
import net.minecraft.world.level.LightLayer;
|
||||||
|
|
||||||
public abstract class ActorVisual {
|
public abstract class ActorVisual implements Visual {
|
||||||
protected final VisualizationContext visualizationContext;
|
protected final VisualizationContext visualizationContext;
|
||||||
protected final InstancerProvider instancerProvider;
|
protected final InstancerProvider instancerProvider;
|
||||||
protected final BlockAndTintGetter simulationWorld;
|
protected final BlockAndTintGetter simulationWorld;
|
||||||
protected final MovementContext context;
|
protected final MovementContext context;
|
||||||
|
|
||||||
|
private boolean deleted;
|
||||||
|
|
||||||
public ActorVisual(VisualizationContext visualizationContext, BlockAndTintGetter world, MovementContext context) {
|
public ActorVisual(VisualizationContext visualizationContext, BlockAndTintGetter world, MovementContext context) {
|
||||||
this.visualizationContext = visualizationContext;
|
this.visualizationContext = visualizationContext;
|
||||||
this.instancerProvider = visualizationContext.instancerProvider();
|
this.instancerProvider = visualizationContext.instancerProvider();
|
||||||
|
@ -27,4 +30,25 @@ public abstract class ActorVisual {
|
||||||
protected int localBlockLight() {
|
protected int localBlockLight() {
|
||||||
return simulationWorld.getBrightness(LightLayer.BLOCK, context.localPos);
|
return simulationWorld.getBrightness(LightLayer.BLOCK, context.localPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(float partialTick) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldReset() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void _delete();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void delete() {
|
||||||
|
if (deleted) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_delete();
|
||||||
|
deleted = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
||||||
import com.simibubi.create.content.contraptions.Contraption;
|
|
||||||
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.culling.Frustum;
|
import net.minecraft.client.renderer.culling.Frustum;
|
||||||
|
@ -39,10 +38,10 @@ public class ContraptionEntityRenderer<C extends AbstractContraptionEntity> exte
|
||||||
int overlay) {
|
int overlay) {
|
||||||
super.render(entity, yaw, partialTicks, ms, buffers, overlay);
|
super.render(entity, yaw, partialTicks, ms, buffers, overlay);
|
||||||
|
|
||||||
Contraption contraption = entity.getContraption();
|
// Contraption contraption = entity.getContraption();
|
||||||
if (contraption != null) {
|
// if (contraption != null) {
|
||||||
ContraptionRenderDispatcher.renderFromEntity(entity, contraption, buffers);
|
// ContraptionRenderDispatcher.renderFromEntity(entity, contraption, buffers);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,6 @@ import net.minecraft.world.level.LightLayer;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@ -59,14 +58,12 @@ public class ContraptionRenderDispatcher {
|
||||||
.tick();
|
.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void beginFrame(BeginFrameEvent event) {
|
public static void beginFrame(BeginFrameEvent event) {
|
||||||
WORLDS.get(event.getContext()
|
WORLDS.get(event.getContext()
|
||||||
.level())
|
.level())
|
||||||
.beginFrame(event);
|
.beginFrame(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void renderLayer(RenderStageEvent event) {
|
public static void renderLayer(RenderStageEvent event) {
|
||||||
WORLDS.get(event.getLevel())
|
WORLDS.get(event.getLevel())
|
||||||
.renderLayer(event);
|
.renderLayer(event);
|
||||||
|
@ -74,7 +71,6 @@ public class ContraptionRenderDispatcher {
|
||||||
GlError.pollAndThrow(() -> "contraption layer: " + event.getStage());
|
GlError.pollAndThrow(() -> "contraption layer: " + event.getStage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void onRendererReload(ReloadLevelRendererEvent event) {
|
public static void onRendererReload(ReloadLevelRendererEvent event) {
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
@ -177,13 +173,7 @@ public class ContraptionRenderDispatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void reset() {
|
public static void reset() {
|
||||||
WORLDS.empty(ContraptionRenderingWorld::delete);
|
|
||||||
|
|
||||||
// if (Backend.isOn()) {
|
|
||||||
// WORLDS = new WorldAttached<>(FlwContraptionManager::new);
|
|
||||||
// } else {
|
|
||||||
WORLDS = new WorldAttached<>(SBBContraptionManager::new);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canInstance() {
|
public static boolean canInstance() {
|
||||||
|
|
|
@ -0,0 +1,220 @@
|
||||||
|
package com.simibubi.create.content.contraptions.render;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.LongConsumer;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.tuple.MutablePair;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.api.context.Context;
|
||||||
|
import com.jozufozu.flywheel.api.context.ContextShader;
|
||||||
|
import com.jozufozu.flywheel.api.context.Shader;
|
||||||
|
import com.jozufozu.flywheel.api.context.TextureSource;
|
||||||
|
import com.jozufozu.flywheel.api.material.Material;
|
||||||
|
import com.jozufozu.flywheel.api.model.Model;
|
||||||
|
import com.jozufozu.flywheel.api.task.Plan;
|
||||||
|
import com.jozufozu.flywheel.api.visual.BlockEntityVisual;
|
||||||
|
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
||||||
|
import com.jozufozu.flywheel.api.visual.LitVisual;
|
||||||
|
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.VisualizationContext;
|
||||||
|
import com.jozufozu.flywheel.api.visualization.VisualizerRegistry;
|
||||||
|
import com.jozufozu.flywheel.lib.instance.InstanceTypes;
|
||||||
|
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
||||||
|
import com.jozufozu.flywheel.lib.model.baked.MultiBlockModelBuilder;
|
||||||
|
import com.jozufozu.flywheel.lib.task.ForEachPlan;
|
||||||
|
import com.jozufozu.flywheel.lib.task.NestedPlan;
|
||||||
|
import com.jozufozu.flywheel.lib.task.PlanMap;
|
||||||
|
import com.jozufozu.flywheel.lib.task.RunnablePlan;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.AbstractEntityVisual;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.SimpleTickableVisual;
|
||||||
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import com.simibubi.create.AllMovementBehaviours;
|
||||||
|
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
||||||
|
import com.simibubi.create.content.contraptions.Contraption;
|
||||||
|
import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour;
|
||||||
|
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
|
||||||
|
import com.simibubi.create.foundation.render.AllContextShaders;
|
||||||
|
import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
|
||||||
|
|
||||||
|
import net.minecraft.core.Vec3i;
|
||||||
|
import net.minecraft.util.Mth;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||||
|
|
||||||
|
public class ContraptionVisual<E extends AbstractContraptionEntity> extends AbstractEntityVisual<E> implements DynamicVisual, TickableVisual, LitVisual {
|
||||||
|
protected final ContraptionContext context;
|
||||||
|
protected final VisualizationContext visualizationContext;
|
||||||
|
private final List<BlockEntityVisual<?>> children = new ArrayList<>();
|
||||||
|
private final List<ActorVisual> actors = new ArrayList<>();
|
||||||
|
private final PlanMap<DynamicVisual, VisualFrameContext> dynamicVisuals = new PlanMap<>();
|
||||||
|
private final List<SimpleDynamicVisual> simpleDynamicVisuals = new ArrayList<>();
|
||||||
|
private final PlanMap<TickableVisual, VisualTickContext> tickableVisuals = new PlanMap<>();
|
||||||
|
private final List<SimpleTickableVisual> simpleTickableVisuals = new ArrayList<>();
|
||||||
|
private VirtualRenderWorld virtualRenderWorld;
|
||||||
|
private Notifier notifier;
|
||||||
|
private Model model;
|
||||||
|
private TransformedInstance structure;
|
||||||
|
|
||||||
|
private final PoseStack contraptionMatrix = new PoseStack();
|
||||||
|
|
||||||
|
public ContraptionVisual(VisualizationContext ctx, E entity) {
|
||||||
|
super(ctx, entity);
|
||||||
|
context = new ContraptionContext();
|
||||||
|
visualizationContext = ctx.withContext(context, Vec3i.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
Contraption contraption = entity.getContraption();
|
||||||
|
virtualRenderWorld = ContraptionRenderDispatcher.setupRenderWorld(level, contraption);
|
||||||
|
|
||||||
|
model = new MultiBlockModelBuilder(contraption.getRenderedBlocks())
|
||||||
|
.modelDataMap(contraption.modelData)
|
||||||
|
.renderWorld(virtualRenderWorld)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
structure = visualizationContext.instancerProvider()
|
||||||
|
.instancer(InstanceTypes.TRANSFORMED, model)
|
||||||
|
.createInstance();
|
||||||
|
|
||||||
|
for (BlockEntity be : contraption.maybeInstancedBlockEntities) {
|
||||||
|
setupVisualizer(be, partialTick);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var actor : contraption.getActors()) {
|
||||||
|
setupActor(actor, partialTick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setupActor(MutablePair<StructureTemplate.StructureBlockInfo, MovementContext> actor, float partialTick) {
|
||||||
|
MovementContext context = actor.getRight();
|
||||||
|
if (context == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (context.world == null) {
|
||||||
|
context.world = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
StructureTemplate.StructureBlockInfo blockInfo = actor.getLeft();
|
||||||
|
|
||||||
|
MovementBehaviour movementBehaviour = AllMovementBehaviours.getBehaviour(blockInfo.state());
|
||||||
|
if (movementBehaviour == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var instance = movementBehaviour.createInstance(this.visualizationContext, virtualRenderWorld, context);
|
||||||
|
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
instance.init(partialTick);
|
||||||
|
|
||||||
|
actors.add(instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
protected <T extends BlockEntity> void setupVisualizer(T be, float partialTicks) {
|
||||||
|
BlockEntityVisualizer<? super T> visualizer = (BlockEntityVisualizer<? super T>) VisualizerRegistry.getVisualizer(be.getType());
|
||||||
|
if (visualizer == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Level world = be.getLevel();
|
||||||
|
be.setLevel(virtualRenderWorld);
|
||||||
|
BlockEntityVisual<? super T> visual = visualizer.createVisual(this.visualizationContext, be);
|
||||||
|
|
||||||
|
visual.init(partialTicks);
|
||||||
|
|
||||||
|
children.add(visual);
|
||||||
|
|
||||||
|
if (visual instanceof DynamicVisual dynamic) {
|
||||||
|
if (dynamic instanceof SimpleDynamicVisual simple) {
|
||||||
|
simpleDynamicVisuals.add(simple);
|
||||||
|
} else {
|
||||||
|
dynamicVisuals.add(dynamic, dynamic.planFrame());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
be.setLevel(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Plan<VisualTickContext> planTick() {
|
||||||
|
return NestedPlan.of(
|
||||||
|
ForEachPlan.of(() -> actors, ActorVisual::tick),
|
||||||
|
ForEachPlan.of(() -> simpleTickableVisuals, SimpleTickableVisual::tick),
|
||||||
|
tickableVisuals
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Plan<VisualFrameContext> planFrame() {
|
||||||
|
return NestedPlan.of(
|
||||||
|
RunnablePlan.of(this::beginFrame),
|
||||||
|
ForEachPlan.of(() -> actors, ActorVisual::beginFrame),
|
||||||
|
ForEachPlan.of(() -> simpleDynamicVisuals, SimpleDynamicVisual::beginFrame),
|
||||||
|
dynamicVisuals
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
children.forEach(BlockEntityVisual::delete);
|
||||||
|
|
||||||
|
actors.forEach(ActorVisual::delete);
|
||||||
|
|
||||||
|
if (model != null) {
|
||||||
|
model.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (structure != null) {
|
||||||
|
structure.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateLight() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void beginFrame(VisualFrameContext context) {
|
||||||
|
double x = Mth.lerp(context.partialTick(), entity.xOld, entity.getX());
|
||||||
|
double y = Mth.lerp(context.partialTick(), entity.yOld, entity.getY());
|
||||||
|
double z = Mth.lerp(context.partialTick(), entity.zOld, entity.getZ());
|
||||||
|
|
||||||
|
contraptionMatrix.setIdentity();
|
||||||
|
contraptionMatrix.translate(x, y, z);
|
||||||
|
entity.applyLocalTransforms(contraptionMatrix, context.partialTick());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void collectLightSections(LongConsumer consumer) {
|
||||||
|
var boundingBox = entity.getBoundingBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initLightSectionNotifier(Notifier notifier) {
|
||||||
|
this.notifier = notifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContraptionContext implements Context {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContextShader contextShader() {
|
||||||
|
return AllContextShaders.CONTRAPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prepare(Material material, Shader shader, TextureSource textureSource) {
|
||||||
|
// shader.setVec3("create_oneOverLightBoxSize");
|
||||||
|
// shader.setVec3("create_lightVolumeMin");
|
||||||
|
shader.setMat4("create_model", contraptionMatrix.last().pose());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,6 @@ import com.simibubi.create.content.contraptions.Contraption;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
|
import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
|
|
||||||
|
@ -36,7 +35,7 @@ public class FlwContraption extends ContraptionRenderInfo {
|
||||||
var restoreState = GlStateTracker.getRestoreState();
|
var restoreState = GlStateTracker.getRestoreState();
|
||||||
buildLayers();
|
buildLayers();
|
||||||
if (ContraptionRenderDispatcher.canInstance()) {
|
if (ContraptionRenderDispatcher.canInstance()) {
|
||||||
buildInstancedBlockEntities();
|
// buildInstancedBlockEntities();
|
||||||
buildActors();
|
buildActors();
|
||||||
}
|
}
|
||||||
restoreState.restore();
|
restoreState.restore();
|
||||||
|
@ -133,7 +132,7 @@ public class FlwContraption extends ContraptionRenderInfo {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildInstancedBlockEntities() {
|
// private void buildInstancedBlockEntities() {
|
||||||
// for (BlockEntity be : contraption.maybeInstancedBlockEntities) {
|
// for (BlockEntity be : contraption.maybeInstancedBlockEntities) {
|
||||||
// if (!InstancedRenderRegistry.canInstance(be.getType())) {
|
// if (!InstancedRenderRegistry.canInstance(be.getType())) {
|
||||||
// continue;
|
// continue;
|
||||||
|
@ -144,7 +143,7 @@ public class FlwContraption extends ContraptionRenderInfo {
|
||||||
// instanceWorld.blockEntityInstanceManager.add(be);
|
// instanceWorld.blockEntityInstanceManager.add(be);
|
||||||
// be.setLevel(world);
|
// be.setLevel(world);
|
||||||
// }
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
private void buildActors() {
|
private void buildActors() {
|
||||||
// contraption.getActors().forEach(instanceWorld.blockEntityInstanceManager::createActor);
|
// contraption.getActors().forEach(instanceWorld.blockEntityInstanceManager::createActor);
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -16,7 +16,7 @@ import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity> implements DynamicVisual {
|
public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final Direction facing;
|
private final Direction facing;
|
||||||
private TransformedInstance lid;
|
private TransformedInstance lid;
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -18,7 +18,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> implements DynamicVisual {
|
public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected TransformedInstance pointer;
|
protected TransformedInstance pointer;
|
||||||
protected boolean settled;
|
protected boolean settled;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.fluids.pump;
|
package com.simibubi.create.content.fluids.pump;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.model.Model;
|
import com.jozufozu.flywheel.api.model.Model;
|
||||||
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
||||||
import com.jozufozu.flywheel.lib.model.Models;
|
import com.jozufozu.flywheel.lib.model.Models;
|
||||||
|
@ -12,7 +12,7 @@ import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
|
||||||
public class PumpCogVisual extends SingleRotatingVisual<PumpBlockEntity> implements DynamicVisual {
|
public class PumpCogVisual extends SingleRotatingVisual<PumpBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
public PumpCogVisual(VisualizationContext context, PumpBlockEntity blockEntity) {
|
public PumpCogVisual(VisualizationContext context, PumpBlockEntity blockEntity) {
|
||||||
super(context, blockEntity);
|
super(context, blockEntity);
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
|
||||||
public class HandCrankVisual extends SingleRotatingVisual<HandCrankBlockEntity> implements DynamicVisual {
|
public class HandCrankVisual extends SingleRotatingVisual<HandCrankBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private TransformedInstance crank;
|
private TransformedInstance crank;
|
||||||
private Direction facing;
|
private Direction facing;
|
||||||
|
|
|
@ -117,4 +117,16 @@ public class DeployerActorVisual extends ActorVisual {
|
||||||
|
|
||||||
hand.setTransform(stack);
|
hand.setTransform(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
pole.delete();
|
||||||
|
hand.delete();
|
||||||
|
shaft.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.TickableVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleTickableVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
||||||
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
||||||
|
@ -28,7 +28,7 @@ import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Vec3i;
|
import net.minecraft.core.Vec3i;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements DynamicVisual, TickableVisual {
|
public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements SimpleDynamicVisual, SimpleTickableVisual {
|
||||||
|
|
||||||
final Direction facing;
|
final Direction facing;
|
||||||
final float yRot;
|
final float yRot;
|
||||||
|
|
|
@ -59,4 +59,14 @@ public class DrillActorVisual extends ActorVisual {
|
||||||
return context.getAnimationSpeed();
|
return context.getAnimationSpeed();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _delete() {
|
||||||
|
drillHead.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(float partialTick) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,8 @@ 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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.model.Models;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -19,7 +20,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
public class FlywheelVisual extends KineticBlockEntityVisual<FlywheelBlockEntity> implements DynamicVisual {
|
public class FlywheelVisual extends KineticBlockEntityVisual<FlywheelBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected final RotatingInstance shaft;
|
protected final RotatingInstance shaft;
|
||||||
protected final TransformedInstance wheel;
|
protected final TransformedInstance wheel;
|
||||||
|
@ -30,7 +31,7 @@ public class FlywheelVisual extends KineticBlockEntityVisual<FlywheelBlockEntity
|
||||||
|
|
||||||
shaft = setup(instancerProvider.instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(shaft()))
|
shaft = setup(instancerProvider.instancer(AllInstanceTypes.ROTATING, VirtualRenderHelper.blockModel(shaft()))
|
||||||
.createInstance());
|
.createInstance());
|
||||||
wheel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, VirtualRenderHelper.blockModel(blockState))
|
wheel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.block(blockState))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
animate(blockEntity.angle);
|
animate(blockEntity.angle);
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -22,7 +22,7 @@ import com.simibubi.create.foundation.utility.Iterate;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implements DynamicVisual {
|
public abstract class GaugeVisual extends ShaftVisual<GaugeBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected final ArrayList<DialFace> faces;
|
protected final ArrayList<DialFace> faces;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -27,7 +27,7 @@ import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
||||||
public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements DynamicVisual {
|
public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
final TransformedInstance base;
|
final TransformedInstance base;
|
||||||
final TransformedInstance lowerBody;
|
final TransformedInstance lowerBody;
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -18,7 +18,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
public class MixerVisual extends EncasedCogVisual implements DynamicVisual {
|
public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final RotatingInstance mixerHead;
|
private final RotatingInstance mixerHead;
|
||||||
private final OrientedInstance mixerPole;
|
private final OrientedInstance mixerPole;
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -17,7 +17,7 @@ import com.simibubi.create.content.kinetics.base.ShaftVisual;
|
||||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> implements DynamicVisual {
|
public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final OrientedInstance pressHead;
|
private final OrientedInstance pressHead;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -18,7 +18,7 @@ import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
||||||
public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBlockEntity> implements DynamicVisual {
|
public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected final TransformedInstance piston;
|
protected final TransformedInstance piston;
|
||||||
protected final TransformedInstance linkage;
|
protected final TransformedInstance linkage;
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -13,7 +13,7 @@ import com.simibubi.create.AllPartialModels;
|
||||||
import com.simibubi.create.content.kinetics.base.ShaftVisual;
|
import com.simibubi.create.content.kinetics.base.ShaftVisual;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements DynamicVisual {
|
public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected final TransformedInstance plate;
|
protected final TransformedInstance plate;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -20,7 +20,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.LightLayer;
|
import net.minecraft.world.level.LightLayer;
|
||||||
|
|
||||||
public class FunnelVisual extends AbstractBlockEntityVisual<FunnelBlockEntity> implements DynamicVisual {
|
public class FunnelVisual extends AbstractBlockEntityVisual<FunnelBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final ArrayList<FlapInstance> flaps;
|
private final ArrayList<FlapInstance> flaps;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -23,7 +23,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.LightLayer;
|
import net.minecraft.world.level.LightLayer;
|
||||||
|
|
||||||
public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockEntity> implements DynamicVisual {
|
public class BeltTunnelVisual extends AbstractBlockEntityVisual<BeltTunnelBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final Map<Direction, ArrayList<FlapInstance>> tunnelFlaps;
|
private final Map<Direction, ArrayList<FlapInstance>> tunnelFlaps;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -20,7 +20,7 @@ import com.simibubi.create.foundation.utility.Color;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.block.state.properties.AttachFace;
|
import net.minecraft.world.level.block.state.properties.AttachFace;
|
||||||
|
|
||||||
public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBlockEntity> implements DynamicVisual {
|
public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
protected final TransformedInstance handle;
|
protected final TransformedInstance handle;
|
||||||
protected final TransformedInstance indicator;
|
protected final TransformedInstance indicator;
|
||||||
|
|
|
@ -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.TickableVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleTickableVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
import com.jozufozu.flywheel.api.visual.VisualTickContext;
|
||||||
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;
|
||||||
|
@ -13,7 +13,7 @@ import com.jozufozu.flywheel.lib.visual.AbstractBlockEntityVisual;
|
||||||
import com.simibubi.create.AllPartialModels;
|
import com.simibubi.create.AllPartialModels;
|
||||||
import com.simibubi.create.foundation.utility.Color;
|
import com.simibubi.create.foundation.utility.Color;
|
||||||
|
|
||||||
public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockEntity> implements TickableVisual {
|
public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockEntity> implements SimpleTickableVisual {
|
||||||
|
|
||||||
protected final TransformedInstance indicator;
|
protected final TransformedInstance indicator;
|
||||||
|
|
||||||
|
|
|
@ -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.DynamicVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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;
|
||||||
|
@ -16,7 +16,7 @@ import com.simibubi.create.AllPartialModels;
|
||||||
|
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
public class SchematicannonVisual extends AbstractBlockEntityVisual<SchematicannonBlockEntity> implements DynamicVisual {
|
public class SchematicannonVisual extends AbstractBlockEntityVisual<SchematicannonBlockEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final TransformedInstance connector;
|
private final TransformedInstance connector;
|
||||||
private final TransformedInstance pipe;
|
private final TransformedInstance pipe;
|
||||||
|
|
|
@ -2,19 +2,19 @@ package com.simibubi.create.content.trains.entity;
|
||||||
|
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
|
||||||
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
import com.jozufozu.flywheel.api.visual.VisualFrameContext;
|
||||||
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.jozufozu.flywheel.lib.visual.AbstractEntityVisual;
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import com.simibubi.create.content.contraptions.render.ContraptionVisual;
|
||||||
import com.simibubi.create.content.trains.bogey.BogeyRenderer;
|
import com.simibubi.create.content.trains.bogey.BogeyRenderer;
|
||||||
import com.simibubi.create.content.trains.bogey.BogeyVisual;
|
import com.simibubi.create.content.trains.bogey.BogeyVisual;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.Couple;
|
import com.simibubi.create.foundation.utility.Couple;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
||||||
public class CarriageContraptionVisual extends AbstractEntityVisual<CarriageContraptionEntity> implements DynamicVisual {
|
public class CarriageContraptionVisual extends ContraptionVisual<CarriageContraptionEntity> implements SimpleDynamicVisual {
|
||||||
|
|
||||||
private final PoseStack ms = new PoseStack();
|
private final PoseStack ms = new PoseStack();
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ public class CarriageContraptionVisual extends AbstractEntityVisual<CarriageCont
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beginFrame(VisualFrameContext ctx) {
|
public void beginFrame(VisualFrameContext ctx) {
|
||||||
|
super.beginFrame(ctx);
|
||||||
if (bogeys == null) {
|
if (bogeys == null) {
|
||||||
if (entity.isReadyForRender())
|
if (entity.isReadyForRender())
|
||||||
init(ctx.partialTick());
|
init(ctx.partialTick());
|
||||||
|
|
|
@ -12,7 +12,6 @@ import com.simibubi.create.content.contraptions.minecart.CouplingHandlerClient;
|
||||||
import com.simibubi.create.content.contraptions.minecart.CouplingPhysics;
|
import com.simibubi.create.content.contraptions.minecart.CouplingPhysics;
|
||||||
import com.simibubi.create.content.contraptions.minecart.CouplingRenderer;
|
import com.simibubi.create.content.contraptions.minecart.CouplingRenderer;
|
||||||
import com.simibubi.create.content.contraptions.minecart.capability.CapabilityMinecartController;
|
import com.simibubi.create.content.contraptions.minecart.capability.CapabilityMinecartController;
|
||||||
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
|
|
||||||
import com.simibubi.create.content.decoration.girder.GirderWrenchBehavior;
|
import com.simibubi.create.content.decoration.girder.GirderWrenchBehavior;
|
||||||
import com.simibubi.create.content.equipment.armor.BacktankArmorLayer;
|
import com.simibubi.create.content.equipment.armor.BacktankArmorLayer;
|
||||||
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
|
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
|
||||||
|
@ -156,7 +155,6 @@ public class ClientEvents {
|
||||||
PlacementHelpers.tick();
|
PlacementHelpers.tick();
|
||||||
CreateClient.OUTLINER.tickOutlines();
|
CreateClient.OUTLINER.tickOutlines();
|
||||||
CreateClient.GHOST_BLOCKS.tickGhosts();
|
CreateClient.GHOST_BLOCKS.tickGhosts();
|
||||||
ContraptionRenderDispatcher.tick(world);
|
|
||||||
BlueprintOverlayRenderer.tick();
|
BlueprintOverlayRenderer.tick();
|
||||||
ToolboxHandlerClient.clientTick();
|
ToolboxHandlerClient.clientTick();
|
||||||
TrackTargetingClient.clientTick();
|
TrackTargetingClient.clientTick();
|
||||||
|
@ -207,7 +205,7 @@ public class ClientEvents {
|
||||||
public static void onRenderWorld(RenderLevelStageEvent event) {
|
public static void onRenderWorld(RenderLevelStageEvent event) {
|
||||||
if (event.getStage() != Stage.AFTER_PARTICLES)
|
if (event.getStage() != Stage.AFTER_PARTICLES)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PoseStack ms = event.getPoseStack();
|
PoseStack ms = event.getPoseStack();
|
||||||
ms.pushPose();
|
ms.pushPose();
|
||||||
SuperRenderTypeBuffer buffer = SuperRenderTypeBuffer.getInstance();
|
SuperRenderTypeBuffer buffer = SuperRenderTypeBuffer.getInstance();
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.simibubi.create.foundation.render;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.api.context.ContextShader;
|
||||||
|
import com.jozufozu.flywheel.lib.context.SimpleContextShader;
|
||||||
|
import com.simibubi.create.Create;
|
||||||
|
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
public class AllContextShaders {
|
||||||
|
public static final ContextShader CONTRAPTION = ContextShader.REGISTRY.registerAndGet(new SimpleContextShader(
|
||||||
|
Create.asResource("context/contraption.vert"),
|
||||||
|
Create.asResource("context/contraption.frag")
|
||||||
|
));
|
||||||
|
|
||||||
|
private AllContextShaders() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
// register statics
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +0,0 @@
|
||||||
package com.simibubi.create.foundation.render;
|
|
||||||
|
|
||||||
import com.simibubi.create.Create;
|
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
|
||||||
public class CreateContexts {
|
|
||||||
private static final ResourceLocation CONTRAPTION = Create.asResource("context/contraption");
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
uniform sampler3D create_lightVolume;
|
||||||
|
|
||||||
|
in vec3 create_lightVolumeCoord;
|
||||||
|
|
||||||
|
void flw_beginFragment() {
|
||||||
|
flw_fragLight = max(flw_fragLight, texture(create_lightVolume, create_lightVolumeCoord).rg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void flw_endFragment() {
|
||||||
|
}
|
|
@ -1,77 +0,0 @@
|
||||||
#use "flywheel:context/fog.glsl"
|
|
||||||
|
|
||||||
uniform sampler3D uLightVolume;
|
|
||||||
|
|
||||||
uniform sampler2D uBlockAtlas;
|
|
||||||
uniform sampler2D uLightMap;
|
|
||||||
|
|
||||||
uniform vec3 uLightBoxSize;
|
|
||||||
uniform vec3 uLightBoxMin;
|
|
||||||
uniform mat4 uModel;
|
|
||||||
|
|
||||||
uniform float uTime;
|
|
||||||
uniform mat4 uViewProjection;
|
|
||||||
uniform vec3 uCameraPos;
|
|
||||||
|
|
||||||
#if defined(VERTEX_SHADER)
|
|
||||||
|
|
||||||
out vec3 BoxCoord;
|
|
||||||
|
|
||||||
vec4 FLWVertex(inout Vertex v) {
|
|
||||||
vec4 worldPos = uModel * vec4(v.pos, 1.);
|
|
||||||
|
|
||||||
BoxCoord = (worldPos.xyz - uLightBoxMin) / uLightBoxSize;
|
|
||||||
|
|
||||||
FragDistance = max(length(worldPos.xz), abs(worldPos.y)); // cylindrical fog
|
|
||||||
|
|
||||||
mat3 m;
|
|
||||||
m[0] = uModel[0].xyz;
|
|
||||||
m[1] = uModel[1].xyz;
|
|
||||||
m[2] = uModel[2].xyz;
|
|
||||||
v.normal = m * v.normal;
|
|
||||||
|
|
||||||
v.pos = worldPos.xyz;
|
|
||||||
return uViewProjection * worldPos;
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(FRAGMENT_SHADER)
|
|
||||||
#use "flywheel:core/lightutil.glsl"
|
|
||||||
|
|
||||||
// optimize discard usage
|
|
||||||
#if defined(ALPHA_DISCARD)
|
|
||||||
#if defined(GL_ARB_conservative_depth)
|
|
||||||
layout (depth_greater) out float gl_FragDepth;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
in vec3 BoxCoord;
|
|
||||||
|
|
||||||
out vec4 FragColor;
|
|
||||||
|
|
||||||
vec4 FLWBlockTexture(vec2 texCoords) {
|
|
||||||
return texture(uBlockAtlas, texCoords);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FLWFinalizeColor(vec4 color) {
|
|
||||||
float a = color.a;
|
|
||||||
float fog = clamp(FLWFogFactor(), 0., 1.);
|
|
||||||
|
|
||||||
color = mix(uFogColor, color, fog);
|
|
||||||
color.a = a;
|
|
||||||
|
|
||||||
#if defined(ALPHA_DISCARD)
|
|
||||||
if (color.a < ALPHA_DISCARD) {
|
|
||||||
discard;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FragColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 FLWLight(vec2 lightCoords) {
|
|
||||||
lightCoords = max(lightCoords, texture(uLightVolume, BoxCoord).rg);
|
|
||||||
|
|
||||||
return texture(uLightMap, shiftLight(lightCoords));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
uniform vec3 create_oneOverLightBoxSize;
|
||||||
|
uniform vec3 create_lightVolumeMin;
|
||||||
|
uniform mat4 create_model;
|
||||||
|
uniform mat3 create_normal;
|
||||||
|
|
||||||
|
out vec3 create_lightVolumeCoord;
|
||||||
|
|
||||||
|
void flw_beginVertex() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void flw_endVertex() {
|
||||||
|
create_lightVolumeCoord = (flw_vertexPos.xyz - create_lightVolumeMin) * create_oneOverLightBoxSize;
|
||||||
|
|
||||||
|
flw_vertexPos = create_model * flw_vertexPos;
|
||||||
|
flw_vertexNormal = create_normal * flw_vertexNormal;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue