From 9bf31d2af05a2f994b9a4aa7fb57c934376dfd0a Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 7 Oct 2022 13:21:05 +0700 Subject: [PATCH] Get rid of atlas skin element cache since it is useless anyway --- .../mc/otm/client/render/AtlasSkinElement.kt | 42 +++++++------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/AtlasSkinElement.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/AtlasSkinElement.kt index 988603ac7..df60eb4af 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/AtlasSkinElement.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/AtlasSkinElement.kt @@ -26,12 +26,19 @@ import ru.dbotthepony.mc.otm.isClientThread import java.lang.reflect.Type import java.util.stream.Stream -fun AtlasSkinElement(location: ResourceLocation) = AtlasSkinElement.create(location) - -class AtlasSkinElement private constructor( - val location: ResourceLocation, - marker: Any? +class AtlasSkinElement( + val location: ResourceLocation ) : AbstractSkinElement() { + init { + synchronized(keys) { + if (keys.add(location)) { + if (isWidgetAtlasAvailable) { + queueRebuild() + } + } + } + } + private var changeset = -1 private var _textureAtlasSprite: TextureAtlasSprite? = null @@ -89,36 +96,19 @@ class AtlasSkinElement private constructor( } companion object : TypeAdapter(), JsonSerializer, JsonDeserializer { - private val skinElementCache = HashMap() - - val keysStream: Stream get() = skinElementCache.keys.stream() + private val keys = HashSet() + val keysStream: Stream get() = keys.stream() private fun queueRebuild() { WidgetAtlasHolder.INSTANCE.queueRebuild() } - @JvmStatic - fun create(location: ResourceLocation): AtlasSkinElement { - var element = skinElementCache[location] - - if (element == null) { - element = AtlasSkinElement(location, null) - skinElementCache[location] = element - - if (isWidgetAtlasAvailable) { - queueRebuild() - } - } - - return element - } - fun fromNetwork(buff: FriendlyByteBuf): AtlasSkinElement { - return create(buff.readResourceLocation()) + return AtlasSkinElement(buff.readResourceLocation()) } fun fromJson(element: JsonElement): AtlasSkinElement { - return create(ResourceLocation.tryParse(element.asString) ?: ResourceLocation("missing")) + return AtlasSkinElement(ResourceLocation.tryParse(element.asString) ?: ResourceLocation("missing")) } override fun write(out: JsonWriter, value: AtlasSkinElement) {