mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-02-10 20:25:03 +01:00
Cover me!
- Switch ResourceReloadCache to RendererReloadCache
This commit is contained in:
parent
0c195fef9f
commit
ddcc96e52a
7 changed files with 19 additions and 19 deletions
|
@ -9,7 +9,7 @@ import dev.engine_room.flywheel.lib.model.baked.BakedModelBuilder;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.BlockModelBuilder;
|
import dev.engine_room.flywheel.lib.model.baked.BlockModelBuilder;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
||||||
import dev.engine_room.flywheel.lib.transform.TransformStack;
|
import dev.engine_room.flywheel.lib.transform.TransformStack;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
* method with the same parameters will return the same object.
|
* method with the same parameters will return the same object.
|
||||||
*/
|
*/
|
||||||
public final class Models {
|
public final class Models {
|
||||||
private static final ResourceReloadCache<BlockState, Model> BLOCK_STATE = new ResourceReloadCache<>(it -> BlockModelBuilder.create(it)
|
private static final RendererReloadCache<BlockState, Model> BLOCK_STATE = new RendererReloadCache<>(it -> BlockModelBuilder.create(it)
|
||||||
.build());
|
.build());
|
||||||
private static final ResourceReloadCache<PartialModel, Model> PARTIAL = new ResourceReloadCache<>(it -> BakedModelBuilder.create(it.get())
|
private static final RendererReloadCache<PartialModel, Model> PARTIAL = new RendererReloadCache<>(it -> BakedModelBuilder.create(it.get())
|
||||||
.build());
|
.build());
|
||||||
private static final ResourceReloadCache<TransformedPartial<?>, Model> TRANSFORMED_PARTIAL = new ResourceReloadCache<>(TransformedPartial::create);
|
private static final RendererReloadCache<TransformedPartial<?>, Model> TRANSFORMED_PARTIAL = new RendererReloadCache<>(TransformedPartial::create);
|
||||||
|
|
||||||
private Models() {
|
private Models() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import dev.engine_room.flywheel.api.model.Mesh;
|
||||||
import dev.engine_room.flywheel.lib.internal.FlwLibLink;
|
import dev.engine_room.flywheel.lib.internal.FlwLibLink;
|
||||||
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
|
||||||
import dev.engine_room.flywheel.lib.model.SimpleQuadMesh;
|
import dev.engine_room.flywheel.lib.model.SimpleQuadMesh;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import dev.engine_room.flywheel.lib.vertex.PosTexNormalVertexView;
|
import dev.engine_room.flywheel.lib.vertex.PosTexNormalVertexView;
|
||||||
import dev.engine_room.flywheel.lib.vertex.VertexView;
|
import dev.engine_room.flywheel.lib.vertex.VertexView;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@ -25,7 +25,7 @@ import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
public final class MeshTree {
|
public final class MeshTree {
|
||||||
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
|
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);
|
||||||
private static final PoseStack.Pose IDENTITY_POSE = new PoseStack().last();
|
private static final PoseStack.Pose IDENTITY_POSE = new PoseStack().last();
|
||||||
private static final ResourceReloadCache<ModelLayerLocation, MeshTree> CACHE = new ResourceReloadCache<>(MeshTree::convert);
|
private static final RendererReloadCache<ModelLayerLocation, MeshTree> CACHE = new RendererReloadCache<>(MeshTree::convert);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private final Mesh mesh;
|
private final Mesh mesh;
|
||||||
|
|
|
@ -12,12 +12,12 @@ 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.lib.model.RetexturedMesh;
|
import dev.engine_room.flywheel.lib.model.RetexturedMesh;
|
||||||
import dev.engine_room.flywheel.lib.model.SingleMeshModel;
|
import dev.engine_room.flywheel.lib.model.SingleMeshModel;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
|
||||||
public final class ModelTrees {
|
public final class ModelTrees {
|
||||||
private static final ResourceReloadCache<ModelTreeKey, ModelTree> CACHE = new ResourceReloadCache<>(k -> {
|
private static final RendererReloadCache<ModelTreeKey, ModelTree> CACHE = new RendererReloadCache<>(k -> {
|
||||||
ModelTree tree = convert("", MeshTree.of(k.layer), k.pathsToPrune, k.texture != null ? k.texture.sprite() : null, k.material);
|
ModelTree tree = convert("", MeshTree.of(k.layer), k.pathsToPrune, k.texture != null ? k.texture.sprite() : null, k.material);
|
||||||
|
|
||||||
if (tree == null) {
|
if (tree == null) {
|
||||||
|
|
|
@ -9,12 +9,12 @@ import java.util.function.Function;
|
||||||
|
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
public final class ResourceReloadCache<T, U> implements Function<T, U> {
|
public final class RendererReloadCache<T, U> implements Function<T, U> {
|
||||||
private static final Set<ResourceReloadCache<?, ?>> ALL = Collections.newSetFromMap(new WeakHashMap<>());
|
private static final Set<RendererReloadCache<?, ?>> ALL = Collections.newSetFromMap(new WeakHashMap<>());
|
||||||
private final Function<T, U> factory;
|
private final Function<T, U> factory;
|
||||||
private final Map<T, U> map = new ConcurrentHashMap<>();
|
private final Map<T, U> map = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public ResourceReloadCache(Function<T, U> factory) {
|
public RendererReloadCache(Function<T, U> factory) {
|
||||||
this.factory = factory;
|
this.factory = factory;
|
||||||
|
|
||||||
synchronized (ALL) {
|
synchronized (ALL) {
|
||||||
|
@ -36,8 +36,8 @@ public final class ResourceReloadCache<T, U> implements Function<T, U> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
public static void onEndClientResourceReload() {
|
public static void onReloadLevelRenderer() {
|
||||||
for (ResourceReloadCache<?, ?> cache : ALL) {
|
for (RendererReloadCache<?, ?> cache : ALL) {
|
||||||
cache.clear();
|
cache.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -17,7 +17,7 @@ import dev.engine_room.flywheel.lib.material.Materials;
|
||||||
import dev.engine_room.flywheel.lib.material.SimpleMaterial;
|
import dev.engine_room.flywheel.lib.material.SimpleMaterial;
|
||||||
import dev.engine_room.flywheel.lib.model.QuadMesh;
|
import dev.engine_room.flywheel.lib.model.QuadMesh;
|
||||||
import dev.engine_room.flywheel.lib.model.SingleMeshModel;
|
import dev.engine_room.flywheel.lib.model.SingleMeshModel;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import dev.engine_room.flywheel.lib.visual.util.SmartRecycler;
|
import dev.engine_room.flywheel.lib.visual.util.SmartRecycler;
|
||||||
import net.minecraft.client.renderer.LightTexture;
|
import net.minecraft.client.renderer.LightTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
@ -36,7 +36,7 @@ public final class FireComponent implements EntityComponent {
|
||||||
// Parameterize by the material instead of the sprite
|
// Parameterize by the material instead of the sprite
|
||||||
// because Material#sprite is a surprisingly heavy operation
|
// because Material#sprite is a surprisingly heavy operation
|
||||||
// and because sprites are invalidated after a resource reload.
|
// and because sprites are invalidated after a resource reload.
|
||||||
private static final ResourceReloadCache<net.minecraft.client.resources.model.Material, Model> FIRE_MODELS = new ResourceReloadCache<>(texture -> {
|
private static final RendererReloadCache<net.minecraft.client.resources.model.Material, Model> FIRE_MODELS = new RendererReloadCache<>(texture -> {
|
||||||
return new SingleMeshModel(new FireMesh(texture.sprite()), FIRE_MATERIAL);
|
return new SingleMeshModel(new FireMesh(texture.sprite()), FIRE_MATERIAL);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import dev.engine_room.flywheel.backend.compile.FlwProgramsReloader;
|
||||||
import dev.engine_room.flywheel.backend.engine.uniform.Uniforms;
|
import dev.engine_room.flywheel.backend.engine.uniform.Uniforms;
|
||||||
import dev.engine_room.flywheel.impl.visualization.VisualizationEventHandler;
|
import dev.engine_room.flywheel.impl.visualization.VisualizationEventHandler;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.PartialModelEventHandler;
|
import dev.engine_room.flywheel.lib.model.baked.PartialModelEventHandler;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadHolder;
|
import dev.engine_room.flywheel.lib.util.ResourceReloadHolder;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
||||||
|
@ -66,7 +66,7 @@ public final class FlywheelFabric implements ClientModInitializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setupLib() {
|
private static void setupLib() {
|
||||||
EndClientResourceReloadCallback.EVENT.register((minecraft, resourceManager, initialReload, error) -> ResourceReloadCache.onEndClientResourceReload());
|
ReloadLevelRendererCallback.EVENT.register(level -> RendererReloadCache.onReloadLevelRenderer());
|
||||||
EndClientResourceReloadCallback.EVENT.register((minecraft, resourceManager, initialReload, error) -> ResourceReloadHolder.onEndClientResourceReload());
|
EndClientResourceReloadCallback.EVENT.register((minecraft, resourceManager, initialReload, error) -> ResourceReloadHolder.onEndClientResourceReload());
|
||||||
|
|
||||||
ModelLoadingPlugin.register(ctx -> {
|
ModelLoadingPlugin.register(ctx -> {
|
||||||
|
|
|
@ -12,7 +12,7 @@ import dev.engine_room.flywheel.impl.compat.EmbeddiumCompat;
|
||||||
import dev.engine_room.flywheel.impl.visualization.VisualizationEventHandler;
|
import dev.engine_room.flywheel.impl.visualization.VisualizationEventHandler;
|
||||||
import dev.engine_room.flywheel.lib.model.baked.PartialModelEventHandler;
|
import dev.engine_room.flywheel.lib.model.baked.PartialModelEventHandler;
|
||||||
import dev.engine_room.flywheel.lib.util.LevelAttached;
|
import dev.engine_room.flywheel.lib.util.LevelAttached;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadCache;
|
import dev.engine_room.flywheel.lib.util.RendererReloadCache;
|
||||||
import dev.engine_room.flywheel.lib.util.ResourceReloadHolder;
|
import dev.engine_room.flywheel.lib.util.ResourceReloadHolder;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.commands.synchronization.ArgumentTypeInfos;
|
import net.minecraft.commands.synchronization.ArgumentTypeInfos;
|
||||||
|
@ -111,7 +111,7 @@ public final class FlywheelForge {
|
||||||
private static void registerLibEventListeners(IEventBus forgeEventBus, IEventBus modEventBus) {
|
private static void registerLibEventListeners(IEventBus forgeEventBus, IEventBus modEventBus) {
|
||||||
forgeEventBus.addListener((LevelEvent.Unload e) -> LevelAttached.invalidateLevel(e.getLevel()));
|
forgeEventBus.addListener((LevelEvent.Unload e) -> LevelAttached.invalidateLevel(e.getLevel()));
|
||||||
|
|
||||||
modEventBus.addListener((EndClientResourceReloadEvent e) -> ResourceReloadCache.onEndClientResourceReload());
|
modEventBus.addListener((EndClientResourceReloadEvent e) -> RendererReloadCache.onReloadLevelRenderer());
|
||||||
modEventBus.addListener((EndClientResourceReloadEvent e) -> ResourceReloadHolder.onEndClientResourceReload());
|
modEventBus.addListener((EndClientResourceReloadEvent e) -> ResourceReloadHolder.onEndClientResourceReload());
|
||||||
|
|
||||||
modEventBus.addListener(PartialModelEventHandler::onRegisterAdditional);
|
modEventBus.addListener(PartialModelEventHandler::onRegisterAdditional);
|
||||||
|
|
Loading…
Reference in a new issue