mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-02-25 11:25:34 +01:00
Remove VertexViewProvider and VertexViewProvider registry
This commit is contained in:
parent
c880cdc2a7
commit
ee3958b140
34 changed files with 64 additions and 480 deletions
|
@ -2,13 +2,10 @@ package dev.engine_room.flywheel.api.internal;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.backend.Backend;
|
import dev.engine_room.flywheel.api.backend.Backend;
|
||||||
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
|
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
|
||||||
import dev.engine_room.flywheel.api.registry.IdRegistry;
|
import dev.engine_room.flywheel.api.registry.IdRegistry;
|
||||||
import dev.engine_room.flywheel.api.registry.Registry;
|
import dev.engine_room.flywheel.api.registry.Registry;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
|
@ -35,10 +32,6 @@ public interface FlwApiLink {
|
||||||
|
|
||||||
LayoutBuilder createLayoutBuilder();
|
LayoutBuilder createLayoutBuilder();
|
||||||
|
|
||||||
VertexViewProvider getVertexViewProvider(VertexFormat format);
|
|
||||||
|
|
||||||
void setVertexViewProvider(VertexFormat format, VertexViewProvider provider);
|
|
||||||
|
|
||||||
boolean supportsVisualization(@Nullable LevelAccessor level);
|
boolean supportsVisualization(@Nullable LevelAccessor level);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package dev.engine_room.flywheel.api.vertex;
|
|
||||||
|
|
||||||
public interface VertexViewProvider {
|
|
||||||
VertexView createVertexView();
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
package dev.engine_room.flywheel.api.vertex;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.internal.FlwApiLink;
|
|
||||||
|
|
||||||
public final class VertexViewProviderRegistry {
|
|
||||||
private VertexViewProviderRegistry() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static VertexViewProvider getProvider(VertexFormat format) {
|
|
||||||
return FlwApiLink.INSTANCE.getVertexViewProvider(format);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setProvider(VertexFormat format, VertexViewProvider provider) {
|
|
||||||
FlwApiLink.INSTANCE.setVertexViewProvider(format, provider);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +1,15 @@
|
||||||
package dev.engine_room.flywheel.lib.model;
|
package dev.engine_room.flywheel.lib.model;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
import org.joml.Vector4f;
|
import org.joml.Vector4f;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.BufferBuilder;
|
|
||||||
import com.mojang.blaze3d.vertex.BufferBuilder.DrawState;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
import dev.engine_room.flywheel.api.model.Mesh;
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexList;
|
import dev.engine_room.flywheel.api.vertex.VertexList;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProviderRegistry;
|
|
||||||
import dev.engine_room.flywheel.lib.internal.FlwLibXplat;
|
import dev.engine_room.flywheel.lib.internal.FlwLibXplat;
|
||||||
import dev.engine_room.flywheel.lib.material.Materials;
|
import dev.engine_room.flywheel.lib.material.Materials;
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
||||||
|
@ -36,27 +28,6 @@ public final class ModelUtil {
|
||||||
private ModelUtil() {
|
private ModelUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MemoryBlock convertVanillaBuffer(BufferBuilder.RenderedBuffer buffer, VertexView vertexView) {
|
|
||||||
DrawState drawState = buffer.drawState();
|
|
||||||
int vertexCount = drawState.vertexCount();
|
|
||||||
VertexFormat srcFormat = drawState.format();
|
|
||||||
|
|
||||||
ByteBuffer src = buffer.vertexBuffer();
|
|
||||||
MemoryBlock dst = MemoryBlock.malloc((long) vertexCount * vertexView.stride());
|
|
||||||
long srcPtr = MemoryUtil.memAddress(src);
|
|
||||||
long dstPtr = dst.ptr();
|
|
||||||
|
|
||||||
VertexView srcView = VertexViewProviderRegistry.getProvider(srcFormat).createVertexView();
|
|
||||||
srcView.ptr(srcPtr);
|
|
||||||
vertexView.ptr(dstPtr);
|
|
||||||
srcView.vertexCount(vertexCount);
|
|
||||||
vertexView.vertexCount(vertexCount);
|
|
||||||
|
|
||||||
srcView.writeAll(vertexView);
|
|
||||||
|
|
||||||
return dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static Material getMaterial(RenderType chunkRenderType, boolean shaded) {
|
public static Material getMaterial(RenderType chunkRenderType, boolean shaded) {
|
||||||
if (chunkRenderType == RenderType.solid()) {
|
if (chunkRenderType == RenderType.solid()) {
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package dev.engine_room.flywheel.lib.model.baked;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.vertex.BufferBuilder;
|
||||||
|
|
||||||
|
import dev.engine_room.flywheel.api.vertex.VertexView;
|
||||||
|
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
||||||
|
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
||||||
|
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
||||||
|
|
||||||
|
final class MeshHelper {
|
||||||
|
private MeshHelper() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleMesh blockVerticesToMesh(BufferBuilder.RenderedBuffer buffer, @Nullable String meshDescriptor) {
|
||||||
|
BufferBuilder.DrawState drawState = buffer.drawState();
|
||||||
|
int vertexCount = drawState.vertexCount();
|
||||||
|
long srcStride = drawState.format().getVertexSize();
|
||||||
|
|
||||||
|
VertexView vertexView = new NoOverlayVertexView();
|
||||||
|
long dstStride = vertexView.stride();
|
||||||
|
|
||||||
|
ByteBuffer src = buffer.vertexBuffer();
|
||||||
|
MemoryBlock dst = MemoryBlock.malloc((long) vertexCount * dstStride);
|
||||||
|
long srcPtr = MemoryUtil.memAddress(src);
|
||||||
|
long dstPtr = dst.ptr();
|
||||||
|
// The first 31 bytes of each vertex in a block vertex buffer are guaranteed to contain the same data in the
|
||||||
|
// same order regardless of whether the format is extended by mods like Iris or OptiFine. Copy these bytes and
|
||||||
|
// ignore the rest.
|
||||||
|
long bytesToCopy = Math.min(dstStride, 31);
|
||||||
|
|
||||||
|
for (int i = 0; i < vertexCount; i++) {
|
||||||
|
// It is safe to copy bytes directly since the NoOverlayVertexView uses the same memory layout as the first
|
||||||
|
// 31 bytes of the block vertex format, vanilla or otherwise.
|
||||||
|
MemoryUtil.memCopy(srcPtr + srcStride * i, dstPtr + dstStride * i, bytesToCopy);
|
||||||
|
}
|
||||||
|
|
||||||
|
vertexView.ptr(dstPtr);
|
||||||
|
vertexView.vertexCount(vertexCount);
|
||||||
|
|
||||||
|
return new SimpleMesh(vertexView, dst, meshDescriptor);
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
|
||||||
public class SimpleEntityVisual<T extends Entity> extends AbstractEntityVisual<T> implements SimpleDynamicVisual {
|
public class SimpleEntityVisual<T extends Entity> extends AbstractEntityVisual<T> implements SimpleDynamicVisual {
|
||||||
|
|
|
@ -9,7 +9,6 @@ import dev.engine_room.flywheel.api.visual.EntityVisual;
|
||||||
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizerRegistry;
|
import dev.engine_room.flywheel.api.visualization.VisualizerRegistry;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
|
|
@ -6,7 +6,6 @@ import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizerRegistry;
|
import dev.engine_room.flywheel.api.visualization.VisualizerRegistry;
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
|
@ -2,21 +2,17 @@ package dev.engine_room.flywheel.impl;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.backend.Backend;
|
import dev.engine_room.flywheel.api.backend.Backend;
|
||||||
import dev.engine_room.flywheel.api.internal.FlwApiLink;
|
import dev.engine_room.flywheel.api.internal.FlwApiLink;
|
||||||
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
|
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
|
||||||
import dev.engine_room.flywheel.api.registry.IdRegistry;
|
import dev.engine_room.flywheel.api.registry.IdRegistry;
|
||||||
import dev.engine_room.flywheel.api.registry.Registry;
|
import dev.engine_room.flywheel.api.registry.Registry;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
import dev.engine_room.flywheel.impl.layout.LayoutBuilderImpl;
|
import dev.engine_room.flywheel.impl.layout.LayoutBuilderImpl;
|
||||||
import dev.engine_room.flywheel.impl.registry.IdRegistryImpl;
|
import dev.engine_room.flywheel.impl.registry.IdRegistryImpl;
|
||||||
import dev.engine_room.flywheel.impl.registry.RegistryImpl;
|
import dev.engine_room.flywheel.impl.registry.RegistryImpl;
|
||||||
import dev.engine_room.flywheel.impl.vertex.VertexViewProviderRegistryImpl;
|
|
||||||
import dev.engine_room.flywheel.impl.visualization.VisualizationManagerImpl;
|
import dev.engine_room.flywheel.impl.visualization.VisualizationManagerImpl;
|
||||||
import dev.engine_room.flywheel.impl.visualization.VisualizerRegistryImpl;
|
import dev.engine_room.flywheel.impl.visualization.VisualizerRegistryImpl;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
@ -61,16 +57,6 @@ public class FlwApiLinkImpl implements FlwApiLink {
|
||||||
return new LayoutBuilderImpl();
|
return new LayoutBuilderImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public VertexViewProvider getVertexViewProvider(VertexFormat format) {
|
|
||||||
return VertexViewProviderRegistryImpl.getProvider(format);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setVertexViewProvider(VertexFormat format, VertexViewProvider provider) {
|
|
||||||
VertexViewProviderRegistryImpl.setProvider(format, provider);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsVisualization(@Nullable LevelAccessor level) {
|
public boolean supportsVisualization(@Nullable LevelAccessor level) {
|
||||||
return VisualizationManagerImpl.supportsVisualization(level);
|
return VisualizationManagerImpl.supportsVisualization(level);
|
||||||
|
|
|
@ -2,9 +2,9 @@ package dev.engine_room.flywheel.impl.event;
|
||||||
|
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.event.RenderContext;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
|
import dev.engine_room.flywheel.api.event.RenderContext;
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
|
|
|
@ -3,7 +3,6 @@ package dev.engine_room.flywheel.impl.extension;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
public interface BlockEntityTypeExtension<T extends BlockEntity> {
|
public interface BlockEntityTypeExtension<T extends BlockEntity> {
|
||||||
|
|
|
@ -3,7 +3,6 @@ package dev.engine_room.flywheel.impl.extension;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.EntityVisualizer;
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
|
||||||
public interface EntityTypeExtension<T extends Entity> {
|
public interface EntityTypeExtension<T extends Entity> {
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package dev.engine_room.flywheel.impl.extension;
|
package dev.engine_room.flywheel.impl.extension;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.lib.transform.PoseTransformStack;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
|
import dev.engine_room.flywheel.lib.transform.PoseTransformStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An extension interface for {@link PoseStack} that provides a {@link PoseTransformStack} wrapper.
|
* An extension interface for {@link PoseStack} that provides a {@link PoseTransformStack} wrapper.
|
||||||
* <br>
|
* <br>
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.extension;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Duck interface to make VertexFormat store a VertexListProvider.
|
|
||||||
*
|
|
||||||
* @see VertexFormat
|
|
||||||
*/
|
|
||||||
public interface VertexFormatExtension {
|
|
||||||
/**
|
|
||||||
* @return The VertexViewProvider associated with this VertexFormat.
|
|
||||||
*/
|
|
||||||
VertexViewProvider flywheel$getVertexViewProvider();
|
|
||||||
|
|
||||||
void flywheel$setVertexViewProvider(VertexViewProvider provider);
|
|
||||||
}
|
|
|
@ -16,7 +16,6 @@ import dev.engine_room.flywheel.api.layout.LayoutBuilder;
|
||||||
import dev.engine_room.flywheel.api.layout.ValueRepr;
|
import dev.engine_room.flywheel.api.layout.ValueRepr;
|
||||||
import dev.engine_room.flywheel.impl.layout.LayoutImpl.ElementImpl;
|
import dev.engine_room.flywheel.impl.layout.LayoutImpl.ElementImpl;
|
||||||
import dev.engine_room.flywheel.lib.math.MoreMath;
|
import dev.engine_room.flywheel.lib.math.MoreMath;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ import org.jetbrains.annotations.Unmodifiable;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.layout.ElementType;
|
import dev.engine_room.flywheel.api.layout.ElementType;
|
||||||
import dev.engine_room.flywheel.api.layout.Layout;
|
import dev.engine_room.flywheel.api.layout.Layout;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||||
|
|
||||||
final class LayoutImpl implements Layout {
|
final class LayoutImpl implements Layout {
|
||||||
|
|
|
@ -6,7 +6,6 @@ import org.spongepowered.asm.mixin.Unique;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
import dev.engine_room.flywheel.api.visualization.BlockEntityVisualizer;
|
||||||
import dev.engine_room.flywheel.impl.extension.BlockEntityTypeExtension;
|
import dev.engine_room.flywheel.impl.extension.BlockEntityTypeExtension;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.mixin;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
import dev.engine_room.flywheel.impl.extension.VertexFormatExtension;
|
|
||||||
|
|
||||||
@Mixin(VertexFormat.class)
|
|
||||||
abstract class VertexFormatMixin implements VertexFormatExtension {
|
|
||||||
@Unique
|
|
||||||
private VertexViewProvider flywheel$vertexViewProvider;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public VertexViewProvider flywheel$getVertexViewProvider() {
|
|
||||||
return flywheel$vertexViewProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void flywheel$setVertexViewProvider(VertexViewProvider provider) {
|
|
||||||
flywheel$vertexViewProvider = provider;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
|
|
||||||
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.chunk.LevelChunk;
|
import net.minecraft.world.level.chunk.LevelChunk;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.lib.visual.VisualizationHelper;
|
import dev.engine_room.flywheel.lib.visual.VisualizationHelper;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
@Mixin(targets = "net.minecraft.client.renderer.chunk.ChunkRenderDispatcher$RenderChunk$RebuildTask")
|
@Mixin(targets = "net.minecraft.client.renderer.chunk.ChunkRenderDispatcher$RenderChunk$RebuildTask")
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.vertex;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormatElement;
|
|
||||||
|
|
||||||
public class InferredVertexFormatInfo {
|
|
||||||
public final VertexFormat format;
|
|
||||||
|
|
||||||
public final int positionOffset;
|
|
||||||
public final int colorOffset;
|
|
||||||
public final int textureOffset;
|
|
||||||
public final int overlayOffset;
|
|
||||||
public final int lightOffset;
|
|
||||||
public final int normalOffset;
|
|
||||||
|
|
||||||
public InferredVertexFormatInfo(VertexFormat format) {
|
|
||||||
this.format = format;
|
|
||||||
|
|
||||||
int positionOffset = -1;
|
|
||||||
int colorOffset = -1;
|
|
||||||
int textureOffset = -1;
|
|
||||||
int overlayOffset = -1;
|
|
||||||
int lightOffset = -1;
|
|
||||||
int normalOffset = -1;
|
|
||||||
|
|
||||||
int offset = 0;
|
|
||||||
for (VertexFormatElement element : format.getElements()) {
|
|
||||||
if (element == DefaultVertexFormat.ELEMENT_POSITION) {
|
|
||||||
positionOffset = offset;
|
|
||||||
} else if (element == DefaultVertexFormat.ELEMENT_COLOR) {
|
|
||||||
colorOffset = offset;
|
|
||||||
} else if (element == DefaultVertexFormat.ELEMENT_UV0) {
|
|
||||||
textureOffset = offset;
|
|
||||||
} else if (element == DefaultVertexFormat.ELEMENT_UV1) {
|
|
||||||
overlayOffset = offset;
|
|
||||||
} else if (element == DefaultVertexFormat.ELEMENT_UV2) {
|
|
||||||
lightOffset = offset;
|
|
||||||
} else if (element == DefaultVertexFormat.ELEMENT_NORMAL) {
|
|
||||||
normalOffset = offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
offset += element.getByteSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.positionOffset = positionOffset;
|
|
||||||
this.colorOffset = colorOffset;
|
|
||||||
this.textureOffset = textureOffset;
|
|
||||||
this.overlayOffset = overlayOffset;
|
|
||||||
this.lightOffset = lightOffset;
|
|
||||||
this.normalOffset = normalOffset;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,207 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.vertex;
|
|
||||||
|
|
||||||
import org.lwjgl.system.MemoryUtil;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.math.RenderMath;
|
|
||||||
import dev.engine_room.flywheel.lib.vertex.AbstractVertexView;
|
|
||||||
import net.minecraft.client.renderer.LightTexture;
|
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
|
||||||
|
|
||||||
public class InferredVertexView extends AbstractVertexView implements VertexView {
|
|
||||||
protected final VertexFormat format;
|
|
||||||
protected final int stride;
|
|
||||||
|
|
||||||
protected final int positionOffset;
|
|
||||||
protected final int colorOffset;
|
|
||||||
protected final int textureOffset;
|
|
||||||
protected final int overlayOffset;
|
|
||||||
protected final int lightOffset;
|
|
||||||
protected final int normalOffset;
|
|
||||||
|
|
||||||
public InferredVertexView(InferredVertexFormatInfo formatInfo) {
|
|
||||||
format = formatInfo.format;
|
|
||||||
stride = format.getVertexSize();
|
|
||||||
positionOffset = formatInfo.positionOffset;
|
|
||||||
colorOffset = formatInfo.colorOffset;
|
|
||||||
textureOffset = formatInfo.textureOffset;
|
|
||||||
overlayOffset = formatInfo.overlayOffset;
|
|
||||||
lightOffset = formatInfo.lightOffset;
|
|
||||||
normalOffset = formatInfo.normalOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long stride() {
|
|
||||||
return stride;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float x(int index) {
|
|
||||||
if (positionOffset < 0) return 0;
|
|
||||||
return MemoryUtil.memGetFloat(ptr + index * stride + positionOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float y(int index) {
|
|
||||||
if (positionOffset < 0) return 0;
|
|
||||||
return MemoryUtil.memGetFloat(ptr + index * stride + positionOffset + 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float z(int index) {
|
|
||||||
if (positionOffset < 0) return 0;
|
|
||||||
return MemoryUtil.memGetFloat(ptr + index * stride + positionOffset + 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float r(int index) {
|
|
||||||
if (colorOffset < 0) return 1;
|
|
||||||
return RenderMath.uf(MemoryUtil.memGetByte(ptr + index * stride + colorOffset));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float g(int index) {
|
|
||||||
if (colorOffset < 0) return 1;
|
|
||||||
return RenderMath.uf(MemoryUtil.memGetByte(ptr + index * stride + colorOffset + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float b(int index) {
|
|
||||||
if (colorOffset < 0) return 1;
|
|
||||||
return RenderMath.uf(MemoryUtil.memGetByte(ptr + index * stride + colorOffset + 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float a(int index) {
|
|
||||||
if (colorOffset < 0) return 1;
|
|
||||||
return RenderMath.uf(MemoryUtil.memGetByte(ptr + index * stride + colorOffset + 3));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float u(int index) {
|
|
||||||
if (textureOffset < 0) return 0;
|
|
||||||
return MemoryUtil.memGetFloat(ptr + index * stride + textureOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float v(int index) {
|
|
||||||
if (textureOffset < 0) return 0;
|
|
||||||
return MemoryUtil.memGetFloat(ptr + index * stride + textureOffset + 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int overlay(int index) {
|
|
||||||
if (overlayOffset < 0) return OverlayTexture.NO_OVERLAY;
|
|
||||||
return MemoryUtil.memGetInt(ptr + index * stride + overlayOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int light(int index) {
|
|
||||||
if (lightOffset < 0) return LightTexture.FULL_BRIGHT;
|
|
||||||
return MemoryUtil.memGetInt(ptr + index * stride + lightOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float normalX(int index) {
|
|
||||||
if (normalOffset < 0) return 0;
|
|
||||||
return RenderMath.f(MemoryUtil.memGetByte(ptr + index * stride + normalOffset));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float normalY(int index) {
|
|
||||||
if (normalOffset < 0) return 0;
|
|
||||||
return RenderMath.f(MemoryUtil.memGetByte(ptr + index * stride + normalOffset + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float normalZ(int index) {
|
|
||||||
if (normalOffset < 0) return 0;
|
|
||||||
return RenderMath.f(MemoryUtil.memGetByte(ptr + index * stride + normalOffset + 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void x(int index, float x) {
|
|
||||||
if (positionOffset < 0) return;
|
|
||||||
MemoryUtil.memPutFloat(ptr + index * stride + positionOffset, x);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void y(int index, float y) {
|
|
||||||
if (positionOffset < 0) return;
|
|
||||||
MemoryUtil.memPutFloat(ptr + index * stride + positionOffset + 4, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void z(int index, float z) {
|
|
||||||
if (positionOffset < 0) return;
|
|
||||||
MemoryUtil.memPutFloat(ptr + index * stride + positionOffset + 8, z);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void r(int index, float r) {
|
|
||||||
if (colorOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + colorOffset, RenderMath.unb(r));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void g(int index, float g) {
|
|
||||||
if (colorOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + colorOffset + 1, RenderMath.unb(g));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void b(int index, float b) {
|
|
||||||
if (colorOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + colorOffset + 2, RenderMath.unb(b));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void a(int index, float a) {
|
|
||||||
if (colorOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + colorOffset + 3, RenderMath.unb(a));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void u(int index, float u) {
|
|
||||||
if (textureOffset < 0) return;
|
|
||||||
MemoryUtil.memPutFloat(ptr + index * stride + textureOffset, u);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void v(int index, float v) {
|
|
||||||
if (textureOffset < 0) return;
|
|
||||||
MemoryUtil.memPutFloat(ptr + index * stride + textureOffset + 4, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void overlay(int index, int overlay) {
|
|
||||||
if (overlayOffset < 0) return;
|
|
||||||
MemoryUtil.memPutInt(ptr + index * stride + overlayOffset, overlay);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void light(int index, int light) {
|
|
||||||
if (lightOffset < 0) return;
|
|
||||||
MemoryUtil.memPutInt(ptr + index * stride + lightOffset, light);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void normalX(int index, float normalX) {
|
|
||||||
if (normalOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + normalOffset, RenderMath.nb(normalX));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void normalY(int index, float normalY) {
|
|
||||||
if (normalOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + normalOffset + 1, RenderMath.nb(normalY));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void normalZ(int index, float normalZ) {
|
|
||||||
if (normalOffset < 0) return;
|
|
||||||
MemoryUtil.memPutByte(ptr + index * stride + normalOffset + 2, RenderMath.nb(normalZ));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.vertex;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
|
|
||||||
public class InferredVertexViewProvider implements VertexViewProvider {
|
|
||||||
private final InferredVertexFormatInfo formatInfo;
|
|
||||||
|
|
||||||
public InferredVertexViewProvider(VertexFormat format) {
|
|
||||||
formatInfo = new InferredVertexFormatInfo(format);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public VertexView createVertexView() {
|
|
||||||
return new InferredVertexView(formatInfo);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package dev.engine_room.flywheel.impl.vertex;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexViewProvider;
|
|
||||||
import dev.engine_room.flywheel.impl.extension.VertexFormatExtension;
|
|
||||||
|
|
||||||
// TODO: Add freezing
|
|
||||||
public final class VertexViewProviderRegistryImpl {
|
|
||||||
private VertexViewProviderRegistryImpl() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static VertexViewProvider getProvider(VertexFormat format) {
|
|
||||||
VertexFormatExtension extension = (VertexFormatExtension) format;
|
|
||||||
VertexViewProvider provider = extension.flywheel$getVertexViewProvider();
|
|
||||||
if (provider == null) {
|
|
||||||
provider = new InferredVertexViewProvider(format);
|
|
||||||
extension.flywheel$setVertexViewProvider(provider);
|
|
||||||
}
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setProvider(VertexFormat format, VertexViewProvider provider) {
|
|
||||||
((VertexFormatExtension) format).flywheel$setVertexViewProvider(provider);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,7 +13,6 @@
|
||||||
"LevelRendererMixin",
|
"LevelRendererMixin",
|
||||||
"MinecraftMixin",
|
"MinecraftMixin",
|
||||||
"PoseStackMixin",
|
"PoseStackMixin",
|
||||||
"VertexFormatMixin",
|
|
||||||
"fix.FixFabulousDepthMixin",
|
"fix.FixFabulousDepthMixin",
|
||||||
"fix.FixNormalScalingMixin",
|
"fix.FixNormalScalingMixin",
|
||||||
"visualmanage.BlockEntityMixin",
|
"visualmanage.BlockEntityMixin",
|
||||||
|
|
|
@ -5,13 +5,10 @@ import java.util.function.BiFunction;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.resources.model.BakedModel;
|
import net.minecraft.client.resources.model.BakedModel;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
|
@ -64,9 +61,7 @@ public final class FabricBakedModelBuilder extends BakedModelBuilder {
|
||||||
BakedModelBufferer.bufferSingle(ModelUtil.VANILLA_RENDERER.getModelRenderer(), level, bakedModel, blockState, poseStack, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferSingle(ModelUtil.VANILLA_RENDERER.getModelRenderer(), level, bakedModel, blockState, poseStack, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=BakedModelBuilder," + "bakedModel=" + bakedModel + ",renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=BakedModelBuilder," + "bakedModel=" + bakedModel + ",renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,13 +5,10 @@ import java.util.function.BiFunction;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
@ -53,9 +50,7 @@ public final class FabricBlockModelBuilder extends BlockModelBuilder {
|
||||||
BakedModelBufferer.bufferBlock(ModelUtil.VANILLA_RENDERER, level, state, poseStack, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferBlock(ModelUtil.VANILLA_RENDERER, level, state, poseStack, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=BlockModelBuilder," + "blockState=" + state + ",renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=BlockModelBuilder," + "blockState=" + state + ",renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,13 +5,10 @@ import java.util.function.BiFunction;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
|
@ -50,9 +47,7 @@ public final class FabricMultiBlockModelBuilder extends MultiBlockModelBuilder {
|
||||||
BakedModelBufferer.bufferMultiBlock(ModelUtil.VANILLA_RENDERER, positions.iterator(), level, poseStack, renderFluids, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferMultiBlock(ModelUtil.VANILLA_RENDERER, positions.iterator(), level, poseStack, renderFluids, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=MultiBlockModelBuilder," + "renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=MultiBlockModelBuilder," + "renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,13 +7,10 @@ import org.jetbrains.annotations.Nullable;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.resources.model.BakedModel;
|
import net.minecraft.client.resources.model.BakedModel;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
|
@ -78,9 +75,7 @@ public final class ForgeBakedModelBuilder extends BakedModelBuilder {
|
||||||
BakedModelBufferer.bufferSingle(ModelUtil.VANILLA_RENDERER.getModelRenderer(), level, bakedModel, blockState, poseStack, modelData, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferSingle(ModelUtil.VANILLA_RENDERER.getModelRenderer(), level, bakedModel, blockState, poseStack, modelData, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=BakedModelBuilder," + "bakedModel=" + bakedModel + ",renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=BakedModelBuilder," + "bakedModel=" + bakedModel + ",renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,13 +7,10 @@ import org.jetbrains.annotations.Nullable;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
@ -67,9 +64,7 @@ public final class ForgeBlockModelBuilder extends BlockModelBuilder {
|
||||||
BakedModelBufferer.bufferBlock(ModelUtil.VANILLA_RENDERER, level, state, poseStack, modelData, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferBlock(ModelUtil.VANILLA_RENDERER, level, state, poseStack, modelData, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=BlockModelBuilder," + "blockState=" + state + ",renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=BlockModelBuilder," + "blockState=" + state + ",renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -8,13 +8,10 @@ import org.jetbrains.annotations.Nullable;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.material.Material;
|
import dev.engine_room.flywheel.api.material.Material;
|
||||||
|
import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.api.model.Model;
|
import dev.engine_room.flywheel.api.model.Model;
|
||||||
import dev.engine_room.flywheel.api.vertex.VertexView;
|
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
|
||||||
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
import dev.engine_room.flywheel.lib.model.ModelUtil;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleMesh;
|
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
import dev.engine_room.flywheel.lib.model.SimpleModel;
|
||||||
import dev.engine_room.flywheel.lib.vertex.NoOverlayVertexView;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
|
@ -65,9 +62,7 @@ public final class ForgeMultiBlockModelBuilder extends MultiBlockModelBuilder {
|
||||||
BakedModelBufferer.bufferMultiBlock(ModelUtil.VANILLA_RENDERER, positions.iterator(), level, poseStack, modelDataLookup, renderFluids, (renderType, shaded, data) -> {
|
BakedModelBufferer.bufferMultiBlock(ModelUtil.VANILLA_RENDERER, positions.iterator(), level, poseStack, modelDataLookup, renderFluids, (renderType, shaded, data) -> {
|
||||||
Material material = materialFunc.apply(renderType, shaded);
|
Material material = materialFunc.apply(renderType, shaded);
|
||||||
if (material != null) {
|
if (material != null) {
|
||||||
VertexView vertexView = new NoOverlayVertexView();
|
Mesh mesh = MeshHelper.blockVerticesToMesh(data, "source=MultiBlockModelBuilder," + "renderType=" + renderType + ",shaded=" + shaded);
|
||||||
MemoryBlock meshData = ModelUtil.convertVanillaBuffer(data, vertexView);
|
|
||||||
var mesh = new SimpleMesh(vertexView, meshData, "source=MultiBlockModelBuilder," + "renderType=" + renderType + ",shaded=" + shaded);
|
|
||||||
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
builder.add(renderType, new Model.ConfiguredMesh(material, mesh));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue