1 | import { Syringe } from 'mana-syringe';
|
2 | import type { Transform } from '../components';
|
3 | import type { vec2 } from 'gl-matrix';
|
4 | import { mat4, quat, vec3 } from 'gl-matrix';
|
5 | import { AABB, Rectangle } from '../shapes';
|
6 | import type { IElement, INode, IParentNode } from '../dom/interfaces';
|
7 | export declare function sortByZIndex(o1: IElement, o2: IElement): number;
|
8 | export declare function dirtifyToRoot(element: INode, affectChildren?: boolean): void;
|
9 | export declare const SceneGraphService: Syringe.DefinedToken;
|
10 | export interface SceneGraphService {
|
11 | matches: <T extends IElement>(query: string, root: T) => boolean;
|
12 | querySelector: <R extends IElement, T extends IElement>(query: string, root: R) => T | null;
|
13 | querySelectorAll: <R extends IElement, T extends IElement>(query: string, root: R) => T[];
|
14 | attach: <C extends INode, P extends INode & IParentNode>(child: C, parent: P, index?: number) => void;
|
15 | detach: <C extends INode>(child: C) => void;
|
16 | getOrigin: (element: INode) => vec3;
|
17 | setOrigin: (element: INode, origin: vec3 | number, y?: number, z?: number) => void;
|
18 | setPosition: (element: INode, position: vec3 | vec2) => void;
|
19 | setLocalPosition: (element: INode, position: vec3 | vec2) => void;
|
20 | scaleLocal: (element: INode, scaling: vec3 | vec2) => void;
|
21 | setLocalScale: (element: INode, scaling: vec3 | vec2) => void;
|
22 | getLocalScale: (element: INode) => vec3;
|
23 | getScale: (element: INode) => vec3;
|
24 | translate: (element: INode, translation: vec3 | number, y?: number, z?: number) => void;
|
25 | translateLocal: (element: INode, translation: vec3 | number, y?: number, z?: number) => void;
|
26 | getPosition: (element: INode) => vec3;
|
27 | getLocalPosition: (element: INode) => vec3;
|
28 | setEulerAngles: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
29 | setLocalEulerAngles: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
30 | rotateLocal: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
31 | rotate: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
32 | getRotation: (element: INode) => quat;
|
33 | setRotation: (element: INode, rotation: quat | number, y?: number, z?: number, w?: number) => void;
|
34 | setLocalRotation: (element: INode, rotation: quat | number, y?: number, z?: number, w?: number) => void;
|
35 | getLocalRotation: (element: INode) => quat;
|
36 | getWorldTransform: (element: INode, transform?: Transform) => mat4;
|
37 | getLocalTransform: (element: INode, transform?: Transform) => mat4;
|
38 | setLocalTransform: (element: INode, transform: mat4) => void;
|
39 | resetLocalTransform: (element: INode) => void;
|
40 | getBounds: (element: INode, render?: boolean) => AABB;
|
41 | getLocalBounds: (element: INode, render?: boolean) => AABB;
|
42 | getGeometryBounds: (element: INode, render?: boolean) => AABB;
|
43 | getBoundingClientRect: (element: INode) => Rectangle;
|
44 | syncHierarchy: (element: INode) => void;
|
45 | }
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 | export declare class DefaultSceneGraphService implements SceneGraphService {
|
52 | private sceneGraphSelectorFactory;
|
53 | matches<T extends IElement>(query: string, root: T): boolean;
|
54 | querySelector<R extends IElement, T extends IElement>(query: string, root: R): T | null;
|
55 | querySelectorAll<R extends IElement, T extends IElement>(query: string, root: R): T[];
|
56 | attach<C extends INode, P extends INode & IParentNode>(child: C, parent: P, index?: number): void;
|
57 | detach<C extends INode>(child: C): void;
|
58 | getOrigin(element: INode): vec3;
|
59 | |
60 |
|
61 |
|
62 |
|
63 |
|
64 | setOrigin(element: INode, origin: vec3 | number, y?: number, z?: number): void;
|
65 | |
66 |
|
67 |
|
68 | rotate: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
69 | |
70 |
|
71 |
|
72 |
|
73 | rotateLocal: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
74 | |
75 |
|
76 |
|
77 | setEulerAngles: (element: INode, degrees: vec3 | number, y?: number, z?: number) => void;
|
78 | |
79 |
|
80 |
|
81 | setLocalEulerAngles(element: INode, degrees: vec3 | number, y?: number, z?: number): void;
|
82 | |
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 | translateLocal: (element: INode, translation: vec3 | number, y?: number, z?: number) => void;
|
92 | |
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 | setPosition: (element: INode, position: vec3 | vec2) => void;
|
99 | |
100 |
|
101 |
|
102 | setLocalPosition(element: INode, position: vec3 | vec2): void;
|
103 | |
104 |
|
105 |
|
106 | scaleLocal(element: INode, scaling: vec3 | vec2): void;
|
107 | setLocalScale(element: INode, scaling: vec3 | vec2): void;
|
108 | |
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 | translate: (element: INode, translation: vec3 | number, y?: number, z?: number) => void;
|
121 | setRotation: () => (element: INode, rotation: quat | number, y?: number, z?: number, w?: number) => void;
|
122 | setLocalRotation(element: INode, rotation: quat | number, y?: number, z?: number, w?: number): void;
|
123 | dirtifyLocal(element: INode, transform: Transform): void;
|
124 | dirtifyWorld(element: INode, transform: Transform): void;
|
125 | getPosition(element: INode): vec3;
|
126 | getRotation(element: INode): quat;
|
127 | getScale(element: INode): vec3;
|
128 | getWorldTransform(element: INode, transform?: Transform): mat4;
|
129 | getLocalPosition(element: INode): vec3;
|
130 | getLocalRotation(element: INode): import("gl-matrix").vec4;
|
131 | getLocalScale(element: INode): vec3;
|
132 | getLocalTransform(element: INode): mat4;
|
133 | setLocalTransform(element: INode, transform: mat4): void;
|
134 | resetLocalTransform(element: INode): void;
|
135 | private getTransformedGeometryBounds;
|
136 | |
137 |
|
138 |
|
139 | getGeometryBounds(element: INode, render?: boolean): AABB;
|
140 | |
141 |
|
142 |
|
143 | getBounds(element: INode, render?: boolean): AABB;
|
144 | |
145 |
|
146 |
|
147 | getLocalBounds(element: INode): AABB;
|
148 | getBoundingClientRect(element: INode): Rectangle;
|
149 | private dirtifyWorldInternal;
|
150 | syncHierarchy(element: INode): void;
|
151 | private sync;
|
152 | private unfreezeParentToRoot;
|
153 | }
|