Skip to content

Commit

Permalink
better ticker functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
ttttdoy committed Jun 14, 2024
1 parent 57c7c00 commit 76fa467
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package breadmod.datagen.texture_plane

import breadmod.util.isSquareOf
import com.google.gson.JsonArray
import com.google.gson.JsonObject
import net.minecraft.data.CachedOutput
Expand Down Expand Up @@ -30,8 +29,8 @@ abstract class TexturePlaneProvider(private val packOutput: PackOutput, private
})
it.add(ELEMENTS, JsonArray().also { element ->
element.add(JsonObject().also { elementObject ->
elementObject.add("from", JsonArray().also { array -> array.add(0.0); array.add(0); array.add(0) })
elementObject.add("to", JsonArray().also { array -> array.add(16); array.add(0.025); array.add(16) })
elementObject.add("from", JsonArray().also { array -> array.add(8); array.add(0); array.add(-8) })
elementObject.add("to", JsonArray().also { array -> array.add(24); array.add(0.025); array.add(8) })
elementObject.add("faces", JsonObject().also { faceObject ->
directions.forEach { direction ->
faceObject.add(direction, JsonObject().also { directions ->
Expand Down Expand Up @@ -61,10 +60,10 @@ abstract class TexturePlaneProvider(private val packOutput: PackOutput, private
textureLocation: ResourceLocation
) {
if(addedModels.containsKey(name)) throw IllegalStateException("$name is already defined.")
println("texture width: ${getTextureRes(textureLocation).first}")
println("${isSquareOf(getTextureRes(textureLocation).first, 2)}")
println("texture height: ${getTextureRes(textureLocation).second}")
println(println("${isSquareOf(getTextureRes(textureLocation).second, 2)}"))
// println("texture width: ${getTextureRes(textureLocation).first}")
// println("${isSquareOf(getTextureRes(textureLocation).first, 2)}")
// println("texture height: ${getTextureRes(textureLocation).second}")
// println(println("${isSquareOf(getTextureRes(textureLocation).second, 2)}"))
// if(!isSquareOf(getTextureRes(textureLocation).first, 2) && !isSquareOf(getTextureRes(textureLocation).second, 2)) throw IllegalStateException("Texture resolution is not power of 2.")
addedModels[name] = textureLocation
}
Expand Down
19 changes: 11 additions & 8 deletions src/main/kotlin/breadmod/item/rendering/TimerTicker.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
package breadmod.item.rendering

import net.minecraft.client.Minecraft
import net.minecraft.util.Mth

object TimerTicker {
private val instance = Minecraft.getInstance()
private var lastRotation = 0f
var rotation = 0f
private var ticks = 0.0f

fun tick() {
if(!instance.isPaused) {
if(rotation <= 360f) { // todo smoothed out rotation | WrenchItemRenderer.java
lastRotation = rotation
rotation = 2f + Mth.lerp(instance.frameTime, lastRotation, rotation)
// rotation += 0.1f
println("current timer tick: $rotation")
// println("${instance.partialTick}")
} else rotation = 0f
ticks += 1.0f % 1728000
// if(rotation <= 360f) { // todo smoothed out rotation | WrenchItemRenderer.java
// lastRotation = rotation
// rotation = 2f + lerp(instance.frameTime, lastRotation, rotation)
// } else rotation = 0f


}
}

fun getRenderTime(): Float = ticks + instance.partialTick
fun reset() { ticks = 0f; rotation = 0f }
}
19 changes: 13 additions & 6 deletions src/main/kotlin/breadmod/item/rendering/ToolGunItemRenderer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import net.minecraftforge.client.model.generators.ModelProvider
import java.awt.Color
import java.security.SecureRandom
import kotlin.math.round
import kotlin.math.sin


class ToolGunItemRenderer : BlockEntityWithoutLevelRenderer(
Expand All @@ -49,22 +50,28 @@ class ToolGunItemRenderer : BlockEntityWithoutLevelRenderer(
pPackedOverlay: Int
) {
val toolgunItem = pStack.item as ToolGunItem
val renderer = Minecraft.getInstance().itemRenderer
val fontRenderer = Minecraft.getInstance().font
val modelManager = Minecraft.getInstance().modelManager
val instance = Minecraft.getInstance()
val renderer = instance.itemRenderer
val fontRenderer = instance.font
val modelManager = instance.modelManager
val mainModel = modelManager.getModel(mainModelLocation)
val coilModel = modelManager.getModel(coilModelLocation)
val testModel = modelManager.getModel(testModelLocation)

pPoseStack.pushPose()
renderModel(mainModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight)
renderModel(testModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight)
// todo smooth rotation after firing toolgun, quickly tapering off
// todo recoil and increased coil spin when using tool gun

pPoseStack.mulPose(Axis.XN.rotationDegrees(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks()) * 100))
val worldTime: Float = TimerTicker.getRenderTime() / 20f
var angle = worldTime * -25
angle %= 360

// pPoseStack.translate(sin(angle.toDouble() / 30), 0.0, 0.0)
renderModel(mainModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight)
pPoseStack.mulPose(Axis.XN.rotationDegrees(angle * 10))
renderModel(coilModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight)
// pPoseStack.mulPose(Axis.YN.rotationDegrees(angle * 30))
// renderModel(testModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight)
pPoseStack.popPose()
// x, y, z after rotations
// x: back and forward, y: up and down, z: left and right
Expand Down

0 comments on commit 76fa467

Please sign in to comment.