mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-02-05 09:44:58 +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.PartialModel;
|
||||
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.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.
|
||||
*/
|
||||
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());
|
||||
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());
|
||||
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() {
|
||||
}
|
||||
|
|
|
@ -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.memory.MemoryBlock;
|
||||
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.VertexView;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -25,7 +25,7 @@ import net.minecraft.client.renderer.texture.OverlayTexture;
|
|||
public final class MeshTree {
|
||||
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 ResourceReloadCache<ModelLayerLocation, MeshTree> CACHE = new ResourceReloadCache<>(MeshTree::convert);
|
||||
private static final RendererReloadCache<ModelLayerLocation, MeshTree> CACHE = new RendererReloadCache<>(MeshTree::convert);
|
||||
|
||||
@Nullable
|
||||
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.lib.model.RetexturedMesh;
|
||||
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.renderer.texture.TextureAtlasSprite;
|
||||
|
||||
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);
|
||||
|
||||
if (tree == null) {
|
||||
|
|
|
@ -9,12 +9,12 @@ import java.util.function.Function;
|
|||
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
public final class ResourceReloadCache<T, U> implements Function<T, U> {
|
||||
private static final Set<ResourceReloadCache<?, ?>> ALL = Collections.newSetFromMap(new WeakHashMap<>());
|
||||
public final class RendererReloadCache<T, U> implements Function<T, U> {
|
||||
private static final Set<RendererReloadCache<?, ?>> ALL = Collections.newSetFromMap(new WeakHashMap<>());
|
||||
private final Function<T, U> factory;
|
||||
private final Map<T, U> map = new ConcurrentHashMap<>();
|
||||
|
||||
public ResourceReloadCache(Function<T, U> factory) {
|
||||
public RendererReloadCache(Function<T, U> factory) {
|
||||
this.factory = factory;
|
||||
|
||||
synchronized (ALL) {
|
||||
|
@ -36,8 +36,8 @@ public final class ResourceReloadCache<T, U> implements Function<T, U> {
|
|||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static void onEndClientResourceReload() {
|
||||
for (ResourceReloadCache<?, ?> cache : ALL) {
|
||||
public static void onReloadLevelRenderer() {
|
||||
for (RendererReloadCache<?, ?> cache : ALL) {
|
||||
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.model.QuadMesh;
|
||||
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 net.minecraft.client.renderer.LightTexture;
|
||||
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
|
||||
// because Material#sprite is a surprisingly heavy operation
|
||||
// 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);
|
||||
});
|
||||
|
||||
|
|
|
@ -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.impl.visualization.VisualizationEventHandler;
|
||||
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 net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
||||
|
@ -66,7 +66,7 @@ public final class FlywheelFabric implements ClientModInitializer {
|
|||
}
|
||||
|
||||
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());
|
||||
|
||||
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.lib.model.baked.PartialModelEventHandler;
|
||||
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 net.minecraft.client.Minecraft;
|
||||
import net.minecraft.commands.synchronization.ArgumentTypeInfos;
|
||||
|
@ -111,7 +111,7 @@ public final class FlywheelForge {
|
|||
private static void registerLibEventListeners(IEventBus forgeEventBus, IEventBus modEventBus) {
|
||||
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(PartialModelEventHandler::onRegisterAdditional);
|
||||
|
|
Loading…
Reference in a new issue