mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-27 20:34:43 +01:00
Embed and virtualize
- Use VisualEmbedding in ContraptionVisual - Remove context shaders - Directly use the model from the blockstate in VirtualRenderHelper - Fixes many bes trying to use empty meshes because they correctly identify as ENTITYBLOCK_ANIMATED - Fix valves being unlit - Fix bearing contraptions spinning way too fast - Do not implement SimpleDynamicVisual in CarriageContraptionVisual, that's taken care of by the base ContraptionVisual now
This commit is contained in:
parent
286d2a68ab
commit
7613ebcb1e
11 changed files with 50 additions and 127 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-53
|
flywheel_version = 1.0.0-alpha-56
|
||||||
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
|
||||||
|
|
|
@ -18,7 +18,6 @@ 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;
|
||||||
|
@ -68,7 +67,6 @@ 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);
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
||||||
TransformStack.of(matrixStack)
|
TransformStack.of(matrixStack)
|
||||||
.nudge(getId())
|
.nudge(getId())
|
||||||
.center()
|
.center()
|
||||||
.rotate(angle, axis)
|
.rotateDegrees(angle, axis)
|
||||||
.uncenter();
|
.uncenter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,6 @@ import java.util.function.LongConsumer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.MutablePair;
|
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.model.Model;
|
||||||
import com.jozufozu.flywheel.api.task.Plan;
|
import com.jozufozu.flywheel.api.task.Plan;
|
||||||
import com.jozufozu.flywheel.api.visual.BlockEntityVisual;
|
import com.jozufozu.flywheel.api.visual.BlockEntityVisual;
|
||||||
|
@ -20,6 +15,7 @@ import com.jozufozu.flywheel.api.visual.TickableVisual;
|
||||||
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.BlockEntityVisualizer;
|
import com.jozufozu.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
|
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;
|
||||||
|
@ -30,32 +26,25 @@ import com.jozufozu.flywheel.lib.task.NestedPlan;
|
||||||
import com.jozufozu.flywheel.lib.task.PlanMap;
|
import com.jozufozu.flywheel.lib.task.PlanMap;
|
||||||
import com.jozufozu.flywheel.lib.task.RunnablePlan;
|
import com.jozufozu.flywheel.lib.task.RunnablePlan;
|
||||||
import com.jozufozu.flywheel.lib.visual.AbstractEntityVisual;
|
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.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.simibubi.create.AllMovementBehaviours;
|
import com.simibubi.create.AllMovementBehaviours;
|
||||||
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
||||||
import com.simibubi.create.content.contraptions.Contraption;
|
import com.simibubi.create.content.contraptions.Contraption;
|
||||||
import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour;
|
import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour;
|
||||||
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
|
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
|
||||||
import com.simibubi.create.foundation.render.AllContextShaders;
|
|
||||||
import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
|
import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
|
||||||
|
|
||||||
import net.minecraft.core.Vec3i;
|
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||||
|
|
||||||
public class ContraptionVisual<E extends AbstractContraptionEntity> extends AbstractEntityVisual<E> implements DynamicVisual, TickableVisual, LitVisual {
|
public class ContraptionVisual<E extends AbstractContraptionEntity> extends AbstractEntityVisual<E> implements DynamicVisual, TickableVisual, LitVisual {
|
||||||
protected final ContraptionContext context;
|
protected final VisualEmbedding embedding;
|
||||||
protected final VisualizationContext visualizationContext;
|
|
||||||
private final List<BlockEntityVisual<?>> children = new ArrayList<>();
|
private final List<BlockEntityVisual<?>> children = new ArrayList<>();
|
||||||
private final List<ActorVisual> actors = new ArrayList<>();
|
private final List<ActorVisual> actors = new ArrayList<>();
|
||||||
private final PlanMap<DynamicVisual, VisualFrameContext> dynamicVisuals = new PlanMap<>();
|
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 PlanMap<TickableVisual, VisualTickContext> tickableVisuals = new PlanMap<>();
|
||||||
private final List<SimpleTickableVisual> simpleTickableVisuals = new ArrayList<>();
|
|
||||||
private VirtualRenderWorld virtualRenderWorld;
|
private VirtualRenderWorld virtualRenderWorld;
|
||||||
private Notifier notifier;
|
private Notifier notifier;
|
||||||
private Model model;
|
private Model model;
|
||||||
|
@ -65,8 +54,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
|
|
||||||
public ContraptionVisual(VisualizationContext ctx, E entity) {
|
public ContraptionVisual(VisualizationContext ctx, E entity) {
|
||||||
super(ctx, entity);
|
super(ctx, entity);
|
||||||
context = new ContraptionContext();
|
embedding = ctx.createEmbedding();
|
||||||
visualizationContext = ctx.withContext(context, Vec3i.ZERO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -79,7 +67,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
.renderWorld(virtualRenderWorld)
|
.renderWorld(virtualRenderWorld)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
structure = visualizationContext.instancerProvider()
|
structure = embedding.instancerProvider()
|
||||||
.instancer(InstanceTypes.TRANSFORMED, model)
|
.instancer(InstanceTypes.TRANSFORMED, model)
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
|
@ -107,7 +95,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
if (movementBehaviour == null) {
|
if (movementBehaviour == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var instance = movementBehaviour.createInstance(this.visualizationContext, virtualRenderWorld, context);
|
var instance = movementBehaviour.createInstance(this.embedding, virtualRenderWorld, context);
|
||||||
|
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -127,18 +115,18 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
|
|
||||||
Level world = be.getLevel();
|
Level world = be.getLevel();
|
||||||
be.setLevel(virtualRenderWorld);
|
be.setLevel(virtualRenderWorld);
|
||||||
BlockEntityVisual<? super T> visual = visualizer.createVisual(this.visualizationContext, be);
|
BlockEntityVisual<? super T> visual = visualizer.createVisual(this.embedding, be);
|
||||||
|
|
||||||
visual.init(partialTicks);
|
visual.init(partialTicks);
|
||||||
|
|
||||||
children.add(visual);
|
children.add(visual);
|
||||||
|
|
||||||
if (visual instanceof DynamicVisual dynamic) {
|
if (visual instanceof DynamicVisual dynamic) {
|
||||||
if (dynamic instanceof SimpleDynamicVisual simple) {
|
dynamicVisuals.add(dynamic, dynamic.planFrame());
|
||||||
simpleDynamicVisuals.add(simple);
|
}
|
||||||
} else {
|
|
||||||
dynamicVisuals.add(dynamic, dynamic.planFrame());
|
if (visual instanceof TickableVisual tickable) {
|
||||||
}
|
tickableVisuals.add(tickable, tickable.planTick());
|
||||||
}
|
}
|
||||||
|
|
||||||
be.setLevel(world);
|
be.setLevel(world);
|
||||||
|
@ -148,7 +136,6 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
public Plan<VisualTickContext> planTick() {
|
public Plan<VisualTickContext> planTick() {
|
||||||
return NestedPlan.of(
|
return NestedPlan.of(
|
||||||
ForEachPlan.of(() -> actors, ActorVisual::tick),
|
ForEachPlan.of(() -> actors, ActorVisual::tick),
|
||||||
ForEachPlan.of(() -> simpleTickableVisuals, SimpleTickableVisual::tick),
|
|
||||||
tickableVisuals
|
tickableVisuals
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -158,11 +145,37 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
return NestedPlan.of(
|
return NestedPlan.of(
|
||||||
RunnablePlan.of(this::beginFrame),
|
RunnablePlan.of(this::beginFrame),
|
||||||
ForEachPlan.of(() -> actors, ActorVisual::beginFrame),
|
ForEachPlan.of(() -> actors, ActorVisual::beginFrame),
|
||||||
ForEachPlan.of(() -> simpleDynamicVisuals, SimpleDynamicVisual::beginFrame),
|
|
||||||
dynamicVisuals
|
dynamicVisuals
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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());
|
||||||
|
|
||||||
|
embedding.transforms(contraptionMatrix.last().pose(), contraptionMatrix.last().normal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateLight() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void collectLightSections(LongConsumer consumer) {
|
||||||
|
var boundingBox = entity.getBoundingBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initLightSectionNotifier(Notifier notifier) {
|
||||||
|
this.notifier = notifier;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _delete() {
|
protected void _delete() {
|
||||||
children.forEach(BlockEntityVisual::delete);
|
children.forEach(BlockEntityVisual::delete);
|
||||||
|
@ -177,44 +190,4 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
|
||||||
structure.delete();
|
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,11 @@ 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.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;
|
||||||
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.simibubi.create.content.kinetics.base.SingleRotatingVisual;
|
import com.simibubi.create.content.kinetics.base.SingleRotatingVisual;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
|
@ -54,6 +54,8 @@ public class HandCrankVisual extends SingleRotatingVisual<HandCrankBlockEntity>
|
||||||
// FIXME: need to call super.super.init here
|
// FIXME: need to call super.super.init here
|
||||||
if (blockEntity.shouldRenderShaft())
|
if (blockEntity.shouldRenderShaft())
|
||||||
super.init(pt);
|
super.init(pt);
|
||||||
|
|
||||||
|
updateLight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,13 +3,12 @@ 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.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;
|
||||||
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
||||||
import com.jozufozu.flywheel.lib.transform.TransformStack;
|
import com.jozufozu.flywheel.lib.transform.TransformStack;
|
||||||
|
import com.jozufozu.flywheel.lib.visual.SimpleDynamicVisual;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual;
|
||||||
import com.simibubi.create.content.kinetics.base.RotatingInstance;
|
import com.simibubi.create.content.kinetics.base.RotatingInstance;
|
||||||
|
@ -31,7 +30,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, Models.block(blockState))
|
wheel = instancerProvider.instancer(InstanceTypes.TRANSFORMED, VirtualRenderHelper.blockModel(blockState))
|
||||||
.createInstance();
|
.createInstance();
|
||||||
|
|
||||||
animate(blockEntity.angle);
|
animate(blockEntity.angle);
|
||||||
|
|
|
@ -5,7 +5,6 @@ import org.joml.Vector3f;
|
||||||
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.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.contraptions.render.ContraptionVisual;
|
||||||
import com.simibubi.create.content.trains.bogey.BogeyRenderer;
|
import com.simibubi.create.content.trains.bogey.BogeyRenderer;
|
||||||
|
@ -14,7 +13,7 @@ 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 ContraptionVisual<CarriageContraptionEntity> implements SimpleDynamicVisual {
|
public class CarriageContraptionVisual extends ContraptionVisual<CarriageContraptionEntity> {
|
||||||
|
|
||||||
private final PoseStack ms = new PoseStack();
|
private final PoseStack ms = new PoseStack();
|
||||||
|
|
||||||
|
@ -100,6 +99,8 @@ public class CarriageContraptionVisual extends ContraptionVisual<CarriageContrap
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void _delete() {
|
public void _delete() {
|
||||||
|
super._delete();
|
||||||
|
|
||||||
if (bogeys == null)
|
if (bogeys == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,7 +12,7 @@ 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.BakedModelBufferer;
|
import com.jozufozu.flywheel.lib.model.baked.BakedModelBufferer;
|
||||||
import com.jozufozu.flywheel.lib.model.baked.BakedModelBufferer.ShadeSeparatedResultConsumer;
|
import com.jozufozu.flywheel.lib.model.baked.BakedModelBufferer.ShadeSeparatedResultConsumer;
|
||||||
import com.jozufozu.flywheel.lib.model.baked.BlockModelBuilder;
|
import com.jozufozu.flywheel.lib.model.baked.BakedModelBuilder;
|
||||||
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;
|
||||||
|
@ -27,7 +27,7 @@ import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
public class VirtualRenderHelper {
|
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();
|
||||||
public static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new BlockModelBuilder(state).modelData(VIRTUAL_DATA).build());
|
public static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new BakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
|
||||||
|
|
||||||
public static boolean isVirtual(ModelData data) {
|
public static boolean isVirtual(ModelData data) {
|
||||||
return data.has(VirtualRenderHelper.VIRTUAL_PROPERTY) && data.get(VirtualRenderHelper.VIRTUAL_PROPERTY);
|
return data.has(VirtualRenderHelper.VIRTUAL_PROPERTY) && data.get(VirtualRenderHelper.VIRTUAL_PROPERTY);
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
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,16 +0,0 @@
|
||||||
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