Fixed rotation of structures

This commit is contained in:
bluefireoly
2020-09-15 17:06:51 +02:00
parent 6e5973498c
commit f85779c41d

View File

@@ -14,21 +14,25 @@ fun Structure.buildAt(loc: Location) {
structureData.forEach { it.structureData.createAt(buildLoc + it.location) } structureData.forEach { it.structureData.createAt(buildLoc + it.location) }
} }
/** @see Structure.rotate */
fun Structure.rotateAroundX(angle: Number) fun Structure.rotateAroundX(angle: Number)
= rotate { it.rotateAroundX(angle.toDouble()) } = rotate(angle) { it, rad -> it.rotateAroundZ(rad) }
/** @see Structure.rotate */
fun Structure.rotateAroundY(angle: Number) fun Structure.rotateAroundY(angle: Number)
= rotate { it.rotateAroundY(angle.toDouble()) } = rotate(angle) { it, rad -> it.rotateAroundY(rad) }
/** @see Structure.rotate */
fun Structure.rotateAroundZ(angle: Number) fun Structure.rotateAroundZ(angle: Number)
= rotate { it.rotateAroundZ(angle.toDouble()) } = rotate(angle) { it, rad -> it.rotateAroundZ(rad) }
inline fun Structure.rotate(vectorRotation: (Vector) -> Vector) /** @param angle The angle of rotation in degrees.*/
inline fun Structure.rotate(angle: Number, vectorRotation: (Vector, Double) -> Vector)
= Structure( = Structure(
HashSet<SingleStructureData>().apply { HashSet<SingleStructureData>().apply {
structureData.forEach { structureData.forEach {
this += SingleStructureData( this += SingleStructureData(
vectorRotation.invoke(it.location.toVector()).toSimpleLoc(), vectorRotation.invoke(it.location.toVector(), Math.toRadians(angle.toDouble())).toSimpleLoc(),
it.structureData it.structureData
) )
} }