import type { IID , Nullable } from "@thi.ng/api" ; import type { Mat } from "@thi.ng/matrices" ; import type { ReadonlyVec , Vec } from "@thi.ng/vectors" ; export interface ISceneNode < T extends ISceneNode < T > > extends IID < string > { parent : Nullable < T > ; children : T [ ] ; mat : Mat ; invMat : Mat ; update ( ) : void ; draw < D > ( ctx ) : void ; mapGlobalPoint ( p ) : Vec | undefined ; mapLocalPointToNode ( dest , p ) : Vec | undefined ; containsLocalPoint ( _ ) : boolean ; childForPoint ( p ) : NodeInfo < T > | undefined ; } /**
 * Node information for mouse picking.
 */ export interface NodeInfo < T > { /**
     * Selected node
     */ node : T ; /**
     * Point in node local coordinate space.
     */ p ? : Vec ; }