Get rid of atlas skin element cache

since it is useless anyway
This commit is contained in:
DBotThePony 2022-10-07 13:21:05 +07:00
parent 6f206bf02e
commit 9bf31d2af0
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -26,12 +26,19 @@ import ru.dbotthepony.mc.otm.isClientThread
import java.lang.reflect.Type import java.lang.reflect.Type
import java.util.stream.Stream import java.util.stream.Stream
fun AtlasSkinElement(location: ResourceLocation) = AtlasSkinElement.create(location) class AtlasSkinElement(
val location: ResourceLocation
class AtlasSkinElement private constructor(
val location: ResourceLocation,
marker: Any?
) : AbstractSkinElement() { ) : AbstractSkinElement() {
init {
synchronized(keys) {
if (keys.add(location)) {
if (isWidgetAtlasAvailable) {
queueRebuild()
}
}
}
}
private var changeset = -1 private var changeset = -1
private var _textureAtlasSprite: TextureAtlasSprite? = null private var _textureAtlasSprite: TextureAtlasSprite? = null
@ -89,36 +96,19 @@ class AtlasSkinElement private constructor(
} }
companion object : TypeAdapter<AtlasSkinElement>(), JsonSerializer<AtlasSkinElement>, JsonDeserializer<AtlasSkinElement> { companion object : TypeAdapter<AtlasSkinElement>(), JsonSerializer<AtlasSkinElement>, JsonDeserializer<AtlasSkinElement> {
private val skinElementCache = HashMap<ResourceLocation, AtlasSkinElement>() private val keys = HashSet<ResourceLocation>()
val keysStream: Stream<ResourceLocation> get() = keys.stream()
val keysStream: Stream<ResourceLocation> get() = skinElementCache.keys.stream()
private fun queueRebuild() { private fun queueRebuild() {
WidgetAtlasHolder.INSTANCE.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 { fun fromNetwork(buff: FriendlyByteBuf): AtlasSkinElement {
return create(buff.readResourceLocation()) return AtlasSkinElement(buff.readResourceLocation())
} }
fun fromJson(element: JsonElement): AtlasSkinElement { 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) { override fun write(out: JsonWriter, value: AtlasSkinElement) {