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.

38 lines
1.1 KiB
Kotlin

package me.eater.threedom.dom
import me.eater.threedom.dom.render.IRenderNode
import me.eater.threedom.dom.render.IRenderTarget
import org.joml.Vector3dc
interface INodeQueryCapable {
/**
* Get node inside this node by [id]
*/
fun getNodeById(id: String): INode<*>?
/**
* Get all nodes inside this node with the class [tagName]
*/
fun getNodesByTag(tagName: String): Sequence<INode<*>>
/**
* Get all nodes inside this node with the Java class [className]
*/
fun <T : INode<T>> getNodesByClass(className: String): Sequence<T>
/**
* Get all nodes inside this node with the render target with type of [targetType]s
*/
fun <T : IRenderTarget<C>, C> getNodesByRenderTarget(targetType: String): Sequence<IRenderNode<*, T, C>>
/**
* find all nodes inside this node in region between [pointA] and [pointB]
*/
fun findInRegion(pointA: Vector3dc, pointB: Vector3dc): Sequence<INode<*>>
/**
* find all nodes inside this node in [range] of [origin]
*/
fun findInRange(origin: Vector3dc, range: Number): Sequence<INode<*>>
}