actors can now block light

This commit is contained in:
minjaesong
2022-02-24 17:51:18 +09:00
parent 2e3a9e6fa0
commit 428cdefb80
7 changed files with 82 additions and 46 deletions

View File

@@ -58,6 +58,10 @@ object AVKey {
const val LUMG = "luminositygreen"
const val LUMB = "luminosityblue"
const val LUMA = "luminosityuv"
const val OPAR = "opacityred"
const val OPAG = "opacitygreen"
const val OPAB = "opacityblue"
const val OPAA = "opacityuv"
const val DRAGCOEFF = "dragcoeff"
const val FALLDAMPENMULT = "falldampenmult"

View File

@@ -2,37 +2,28 @@ package net.torvald.terrarum.gameactors
import net.torvald.gdx.graphics.Cvec
data class Lightbox(val hitbox: Hitbox, val getLight: () -> Cvec)
/**
* For actors that either emits or blocks lights
*
* Created by minjaesong on 2016-02-19.
*/
interface Luminous {
/**
* Range of 0.0 - 4.0 for each channel
*
* Recommended implementation:
*
override var color: Color
get() = Color(
(actorValue.getAsFloat(AVKey.LUMR) ?: 0f) / LightmapRenderer.MUL_FLOAT,
(actorValue.getAsFloat(AVKey.LUMG) ?: 0f) / LightmapRenderer.MUL_FLOAT,
(actorValue.getAsFloat(AVKey.LUMB) ?: 0f) / LightmapRenderer.MUL_FLOAT,
(actorValue.getAsFloat(AVKey.LUMA) ?: 0f) / LightmapRenderer.MUL_FLOAT,
)
set(value) {
actorValue[AVKey.LUMR] = value.r * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMG] = value.g * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMB] = value.b * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMA] = value.a * LightmapRenderer.MUL_FLOAT
}
*/
var color: Cvec
/**
* Arguments:
*
* Hitbox(x-offset, y-offset, width, height)
* (Use ArrayList for normal circumstances)
*/
val lightBoxList: List<Hitbox>
val lightBoxList: List<Lightbox>
/**
* Arguments:
*
* Hitbox(x-offset, y-offset, width, height)
* (Use ArrayList for normal circumstances)
*/
val shadeBoxList: List<Lightbox>
}