[WIP] fix falling leaf color
This commit is contained in:
@@ -83,8 +83,8 @@ data class Color(val alpha: Int, val red: Int, val green: Int, val blue: Int) {
|
|||||||
|
|
||||||
data class HSB(var hue: Float, var saturation: Float, var brightness: Float) {
|
data class HSB(var hue: Float, var saturation: Float, var brightness: Float) {
|
||||||
companion object {
|
companion object {
|
||||||
fun fromColor(color: Int): HSB {
|
fun fromColorRGBA(color: Int): HSB {
|
||||||
val hsbVals = java.awt.Color.RGBtoHSB((color shr 16) and 255, (color shr 8) and 255, color and 255, null)
|
val hsbVals = java.awt.Color.RGBtoHSB(color and 255, (color shr 8) and 255, (color shr 16) and 255, null)
|
||||||
return HSB(hsbVals[0], hsbVals[1], hsbVals[2])
|
return HSB(hsbVals[0], hsbVals[1], hsbVals[2])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
package mods.betterfoliage.render
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder
|
|
||||||
import mods.betterfoliage.BetterFoliage
|
|
||||||
import mods.betterfoliage.config.Config
|
|
||||||
import mods.betterfoliage.render.old.AbstractEntityFX
|
|
||||||
import mods.betterfoliage.model.HSB
|
|
||||||
import mods.betterfoliage.model.getActualRenderModel
|
|
||||||
import mods.betterfoliage.render.particle.AbstractParticle
|
|
||||||
import mods.betterfoliage.texture.LeafParticleKey
|
|
||||||
import mods.betterfoliage.texture.LeafParticleRegistry
|
|
||||||
import mods.betterfoliage.util.Double3
|
|
||||||
import mods.betterfoliage.util.PI2
|
|
||||||
import mods.betterfoliage.util.get
|
|
||||||
import mods.betterfoliage.util.minmax
|
|
||||||
import mods.betterfoliage.util.randomB
|
|
||||||
import mods.betterfoliage.util.randomD
|
|
||||||
import mods.betterfoliage.util.randomF
|
|
||||||
import mods.betterfoliage.util.randomI
|
|
||||||
import net.minecraft.client.Minecraft
|
|
||||||
import net.minecraft.client.particle.IParticleRenderType
|
|
||||||
import net.minecraft.client.renderer.ActiveRenderInfo
|
|
||||||
import net.minecraft.client.renderer.BufferBuilder
|
|
||||||
import net.minecraft.util.math.BlockPos
|
|
||||||
import net.minecraft.util.math.MathHelper
|
|
||||||
import net.minecraft.world.World
|
|
||||||
import net.minecraftforge.common.MinecraftForge
|
|
||||||
import net.minecraftforge.event.TickEvent
|
|
||||||
import net.minecraftforge.event.world.WorldEvent
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent
|
|
||||||
import java.util.Random
|
|
||||||
import kotlin.math.abs
|
|
||||||
import kotlin.math.cos
|
|
||||||
import kotlin.math.sin
|
|
||||||
|
|
||||||
const val rotationFactor = PI2.toFloat() / 64.0f
|
|
||||||
|
|
||||||
@@ -73,23 +73,6 @@ class FallingLeafParticle(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun calculateParticleColor(textureAvgColor: Int, blockColor: Int) {
|
|
||||||
val texture = HSB.fromColor(textureAvgColor)
|
|
||||||
val block = HSB.fromColor(blockColor)
|
|
||||||
|
|
||||||
val weightTex = texture.saturation / (texture.saturation + block.saturation)
|
|
||||||
val weightBlock = 1.0f - weightTex
|
|
||||||
|
|
||||||
// avoid circular average for hue for performance reasons
|
|
||||||
// one of the color components should dominate anyway
|
|
||||||
val particle = HSB(
|
|
||||||
weightTex * texture.hue + weightBlock * block.hue,
|
|
||||||
weightTex * texture.saturation + weightBlock * block.saturation,
|
|
||||||
weightTex * texture.brightness + weightBlock * block.brightness * biomeBrightnessMultiplier
|
|
||||||
)
|
|
||||||
setColor(particle.asColor)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getRenderType(): IParticleRenderType = IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT
|
override fun getRenderType(): IParticleRenderType = IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ val TextureAtlasSprite.averageColor: HSB
|
|||||||
for (y in 0 until height) {
|
for (y in 0 until height) {
|
||||||
val pixel = getPixelRGBA(0, x, y)
|
val pixel = getPixelRGBA(0, x, y)
|
||||||
val alpha = (pixel shr 24) and 255
|
val alpha = (pixel shr 24) and 255
|
||||||
val hsb = HSB.fromColor(pixel)
|
val hsb = HSB.fromColorRGBA(pixel)
|
||||||
if (alpha == 255) {
|
if (alpha == 255) {
|
||||||
numOpaque++
|
numOpaque++
|
||||||
sumHueX += cos((hsb.hue.toDouble() - 0.5) * PI2)
|
sumHueX += cos((hsb.hue.toDouble() - 0.5) * PI2)
|
||||||
|
|||||||
Reference in New Issue
Block a user