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.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<AtlasSkinElement>(), JsonSerializer<AtlasSkinElement>, JsonDeserializer<AtlasSkinElement> {
private val skinElementCache = HashMap<ResourceLocation, AtlasSkinElement>()
val keysStream: Stream<ResourceLocation> get() = skinElementCache.keys.stream()
private val keys = HashSet<ResourceLocation>()
val keysStream: Stream<ResourceLocation> 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) {