Get rid of atlas skin element cache
since it is useless anyway
This commit is contained in:
parent
6f206bf02e
commit
9bf31d2af0
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user