You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
822 B
Kotlin
21 lines
822 B
Kotlin
package me.eater.threedom.dom
|
|
|
|
import me.eater.threedom.event.Event
|
|
import me.eater.threedom.event.EventDispatcher
|
|
import me.eater.threedom.utils.joml.Vector3d
|
|
import org.joml.Vector3dc
|
|
import kotlin.reflect.KClass
|
|
|
|
interface IDocument : EventDispatcher, INodeContainer {
|
|
fun <T : INode<T>> createNode(nodeType: KClass<T>): T
|
|
fun deleteNode(refNode: INode<*>)
|
|
fun <T> addEventListener(eventName: String, refNode: INode<*>, block: (Event<T>) -> Unit)
|
|
fun getNodeByNodeId(nodeId: Long): INode<*>?
|
|
fun findAt(x: Number, y: Number, z: Number) = findAt(Vector3d(x, y, z))
|
|
fun findAt(vec: Vector3dc): Collection<INode<*>>
|
|
fun rebalance()
|
|
fun findInRegion(pointA: Vector3dc, pointB: Vector3dc): Sequence<INode<*>>
|
|
}
|
|
|
|
inline fun <reified T : INode<T>> IDocument.createNode() = createNode(T::class)
|