ALL kwd in transform implemented

This commit is contained in:
minjaesong
2019-01-07 04:24:13 +09:00
parent 45f07c88b2
commit 25fc4ecc0b
2 changed files with 17 additions and 11 deletions

View File

@@ -22,7 +22,6 @@ data class Animation(val name: String, val delay: Float, val row: Int, val frame
/** Later the 'translate' can be changed so that it represents affine transformation (Matrix2d) */ /** Later the 'translate' can be changed so that it represents affine transformation (Matrix2d) */
data class Transform(val joint: Joint, val translate: ADPropertyObject.Vector2i) { data class Transform(val joint: Joint, val translate: ADPropertyObject.Vector2i) {
override fun toString() = "$joint transform: $translate" override fun toString() = "$joint transform: $translate"
fun getTransformVector() = joint.position + translate
} }
class ADProperties { class ADProperties {

View File

@@ -33,15 +33,15 @@ object AssembleFramePixmap {
} }
val canvas = Pixmap(assembleConfig.fw, assembleConfig.fh, Pixmap.Format.RGBA8888) val canvas = Pixmap(assembleConfig.fw, assembleConfig.fh, Pixmap.Format.RGBA8888)
val transformList = AssembleFrameBase.makeTransformList(skeleton, transforms)
println("Frame name: $frameName") /*println("Frame name: $frameName")
transforms.forEach { println(it) } transforms.forEach { println(it) }
println("==========================") println("==========================")
println("Transformed skeleton:") println("Transformed skeleton:")
val transformList = AssembleFrameBase.makeTransformList(skeleton, transforms)
transformList.forEach { (name, transform) -> transformList.forEach { (name, transform) ->
println("$name transformedOut: $transform") println("$name transformedOut: $transform")
} }*/
// actually draw // actually draw
@@ -79,20 +79,27 @@ object AssembleFrameBase {
*/ */
fun makeTransformList(joints: List<Joint>, transforms: List<Transform>): List<Pair<String, ADPropertyObject.Vector2i>> { fun makeTransformList(joints: List<Joint>, transforms: List<Transform>): List<Pair<String, ADPropertyObject.Vector2i>> {
// make our mutable list // make our mutable list
val transformOutput = ArrayList<Pair<String, ADPropertyObject.Vector2i>>() val out = ArrayList<Pair<String, ADPropertyObject.Vector2i>>()
joints.forEach { joints.forEach {
transformOutput.add(it.name to it.position) out.add(it.name to it.position)
} }
// process transform queue // process transform queue
transforms.forEach { transform -> transforms.forEach { transform ->
// TODO when the transform.joint.name == ADProperties.ALL_JOINT_SELECT_KEY]] if (transform.joint.name == ADProperties.ALL_JOINT_SELECT_KEY) {
// transform applies to all joints
val jointToMoveIndex = transformOutput.linearSearch { it.first == transform.joint.name }!! for (c in 0 until out.size) {
transformOutput[jointToMoveIndex] = transformOutput[jointToMoveIndex].first to transform.getTransformVector() out[c] = out[c].first to (out[c].second + transform.translate)
}
}
else {
val i = out.linearSearch { it.first == transform.joint.name }!!
// transform applies to one specific joint in the list (one specific joint is a search result)
out[i] = out[i].first to (out[i].second + transform.translate)
}
} }
return transformOutput.toList() return out.toList()
} }
fun getCentreOf(pixmap: Pixmap) = ADPropertyObject.Vector2i(pixmap.width / 2, pixmap.height / 2) fun getCentreOf(pixmap: Pixmap) = ADPropertyObject.Vector2i(pixmap.width / 2, pixmap.height / 2)