Skip to content

Commit 4a19181

Browse files
committed
object simplification
1 parent 759b3e9 commit 4a19181

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1113
-1765
lines changed

libraries/objectDefaultFiles/scene/AnchoredGroupNode.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,8 @@ class AnchoredGroupNode extends ObjectNode {
1717
*
1818
* @param {ObjectInterface} listener
1919
*/
20-
constructor(listener) {
21-
super(listener, AnchoredGroupNode.TYPE);
22-
}
23-
24-
/**
25-
*
26-
* @param {string} toolId
27-
* @returns {AnchoredGroupNodeState}
28-
*/
29-
getStateForTool(toolId) {
30-
return {};
20+
constructor() {
21+
super(AnchoredGroupNode.TYPE);
3122
}
3223
}
3324

libraries/objectDefaultFiles/scene/AnchoredGroupStore.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

libraries/objectDefaultFiles/scene/BaseEntity.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class BaseEntity {
66
/** @type {{order: number, component: ComponentInterface}[]} */
77
#components;
88

9-
/** @type {EntityInterface} */
9+
/** @type {{[key: string]: BaseEntity}} */
1010
#children;
1111

1212
constructor() {
@@ -84,6 +84,9 @@ class BaseEntity {
8484
*/
8585
updateComponents() {
8686
for (let entry of this.#components) {
87+
if (!entry || !entry.component || !entry.component.update) {
88+
console.log("here");
89+
}
8790
entry.component.update();
8891
}
8992
for (let child of Object.values(this.#children)) {
@@ -117,15 +120,6 @@ class BaseEntity {
117120
delete this.#children[key];
118121
}
119122

120-
/**
121-
*
122-
* @param {string} _name
123-
* @returns {BaseEntity}
124-
*/
125-
createEntity(_name) {
126-
throw Error("Can't instantiate abstract class");
127-
}
128-
129123
/**
130124
*
131125
*/

libraries/objectDefaultFiles/scene/EntityNode.js renamed to libraries/objectDefaultFiles/scene/BaseEntityNode.js

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import ComponentsNode from "./ComponentsNode.js";
2+
import EntitiesNode from "./EntitiesNode.js";
13
import ObjectNode from "./ObjectNode.js";
4+
import TransformComponentNode from "./TransformComponentNode.js";
25

36
/**
47
* @typedef {import("./BaseNode.js").BaseNodeState} BaseNodeState
@@ -16,28 +19,26 @@ import ObjectNode from "./ObjectNode.js";
1619
* @typedef {{getPosition: () => Vector3Value, setPosition: (position: Vector3Value) => void, getRotation: () => QuaternionValue, setRotation: (rotation: QuaternionValue) => void, getScale: () => Vector3Value, setScale: (scale: Vector3Value) => void}} EntityInterface
1720
*/
1821

19-
class EntityNode extends ObjectNode {
22+
class BaseEntityNode extends ObjectNode {
2023
static TYPE = "Object.Entity";
2124

25+
/** @tpye {EntityInterface} */
26+
#entity;
27+
2228
/**
23-
*
24-
* @param {DictionaryInterface} listener
29+
* @param {EntityInterface} entity
2530
* @param {string} type
2631
*/
27-
constructor(listener, type = EntityNode.TYPE) {
28-
super(listener, type);
29-
this.get("components").setEntityNode(this);
30-
if (!this.get("components").has("0")) {
31-
this.get("components").set("0", listener.createTransform(), false);
32-
}
32+
constructor(entity, type = BaseEntityNode.TYPE) {
33+
super(type);
34+
this._set("children", new EntitiesNode(this));
35+
this._set("components", new ComponentsNode(this));
36+
this.#entity = entity
37+
this.setComponent("0", new TransformComponentNode(this.#entity), false);
3338
}
3439

35-
/**
36-
*
37-
* @returns {EntityInterface|null}
38-
*/
39-
getEntity() {
40-
return this.getListener().getEntity();
40+
get entity() {
41+
return this.#entity;
4142
}
4243

4344
/**
@@ -62,20 +63,12 @@ class EntityNode extends ObjectNode {
6263
this.get("children").set(name, entity, makeDirty);
6364
}
6465

65-
createEntity(key, state) {
66-
return this.getListener().createEntity(key, state);
67-
}
68-
69-
createComponent(order, state) {
70-
return this.getListener().createComponent(order, state);
71-
}
72-
7366
/**
7467
*
7568
* @param {number} order
7669
* @param {ComponentNode} component
7770
*/
78-
addComponent(order, component, makeDirty = true) {
71+
setComponent(order, component, makeDirty = true) {
7972
this.get("components").set(order, component, makeDirty);
8073
}
8174

@@ -95,24 +88,29 @@ class EntityNode extends ObjectNode {
9588
return this.getComponentByType(type) !== undefined;
9689
}
9790

98-
setPosition(x, y, z) {
91+
/**
92+
* @param {Vector3Value} value
93+
*/
94+
set position(value) {
9995
const transform = this.get("components").get(0);
100-
transform.setPosition({x, y, z});
96+
transform.position = value;
10197
}
10298

103-
setRotation(x, y, z, w) {
99+
/**
100+
* @param {QuaternionValue} value
101+
*/
102+
set rotation(value) {
104103
const transform = this.get("components").get(0);
105-
transform.setRotation({x, y, z, w});
104+
transform.rotation = value;
106105
}
107106

108-
setScale(x, y, z) {
107+
/**
108+
* @param {Vector3Value} value
109+
*/
110+
set scale(value) {
109111
const transform = this.get("components").get(0);
110-
transform.setScale({x, y, z});
111-
}
112-
113-
dispose() {
114-
this.getEntity().dispose();
112+
transform.scale = value;
115113
}
116114
}
117115

118-
export default EntityNode;
116+
export default BaseEntityNode;

libraries/objectDefaultFiles/scene/BaseEntityStore.js

Lines changed: 0 additions & 50 deletions
This file was deleted.

libraries/objectDefaultFiles/scene/BaseNode.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ class BaseNode {
2828
* @returns {string|null}
2929
*/
3030
getName() {
31-
const parent = this.getParent();
32-
if (parent) {
33-
for (const entry of parent.entries()) {
31+
if (this.parent) {
32+
for (const entry of this.parent.entries()) {
3433
if (entry[1] === this) {
3534
return entry[0];
3635
}
@@ -43,7 +42,7 @@ class BaseNode {
4342
*
4443
* @returns {BaseNode|null}
4544
*/
46-
getParent() {
45+
get parent() {
4746
const parent = this.#parent ? this.#parent.deref() : null;
4847
return parent ? parent : null;
4948
}
@@ -52,7 +51,7 @@ class BaseNode {
5251
* internal use only, doesn't propogate isDirty
5352
* @param {BaseNode|null} parent
5453
*/
55-
setParent(parent) {
54+
set parent(parent) {
5655
this.#parent = parent ? new WeakRef(parent) : null;
5756
}
5857

@@ -139,7 +138,7 @@ class BaseNode {
139138
* @param {BaseNode} node
140139
*/
141140
static setParentDirty(node) {
142-
const parent = node.getParent();
141+
const parent = node.parent;
143142
if (parent && (!parent.isInternalDirty())) {
144143
parent.setInternalDirty();
145144
BaseNode.setParentDirty(parent);
Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,87 @@
11
import ObjectNode from "./ObjectNode.js";
2+
import ValueNode from "./ValueNode.js";
23

34
/**
45
* @typedef {import("./BaseNode.js").BaseNodeDelta} BaseNodeDelta
56
* @typedef {import("./ValueNode.js").ValueNodeDelta} ValueNodeDelta
67
* @typedef {import("./ObjectNode.js").ObjectInterface} ObjectInterface
78
* @typedef {{r: number, g: number, b: number}} ColorValue
89
* @typedef {BaseNodeDelta & {properties?: {r?: ValueNodeDelta, g?: ValueNodeDelta, b?: ValueNodeDelta}}} ColorDelta
10+
* @typedef {(node: ColorNode) => void} onChangedFunc
911
*/
1012

1113
class ColorNode extends ObjectNode {
1214
static TYPE = "Object.Color";
1315

16+
/** @type {onChangedFunc|null} */
17+
#onChanged
18+
1419
/**
1520
*
16-
* @param {ObjectInterface} listener
21+
* @param {ObjectInterface} value
1722
*/
18-
constructor(listener) {
19-
super(listener, ColorNode.TYPE);
23+
constructor(value = {r: 0, g: 0, b: 0}) {
24+
super(ColorNode.TYPE);
25+
this.#addValue("r", value.r);
26+
this.#addValue("g", value.g);
27+
this.#addValue("b", value.b);
28+
this.#onChanged = null;
2029
}
2130

2231
/**
23-
* @param {ColorValue} value
32+
*
33+
* @param {string} key
34+
* @param {number} value
2435
*/
25-
setValue(value) {
26-
this.get("r").value = value.r;
27-
this.get("g").value = value.g;
28-
this.get("b").value = value.b;
36+
#addValue(key, value) {
37+
const node = new ValueNode(value);
38+
node.onChanged = (_node) => {this.#safeOnChanged();};
39+
this._set(key, node);
40+
}
41+
42+
/**
43+
*
44+
*/
45+
#safeOnChanged() {
46+
if (this.#onChanged) {
47+
this.#onChanged(this);
48+
}
49+
}
50+
51+
/**
52+
* @returns {onChangedFunc}
53+
*/
54+
get onChanged() {
55+
return this.#onChanged;
56+
}
57+
58+
/**
59+
* @param {onChangedFunc} onChanged
60+
*/
61+
set onChanged(onChanged) {
62+
this.#onChanged = onChanged;
2963
}
3064

3165
/**
3266
*
3367
* @returns {ColorValue}
3468
*/
35-
getValue() {
69+
get value() {
3670
return {
3771
"r": this.get("r").value,
3872
"g": this.get("g").value,
3973
"b": this.get("b").value
4074
};
4175
}
76+
77+
/**
78+
* @param {ColorValue} value
79+
*/
80+
set value(value) {
81+
this.get("r").value = value.r;
82+
this.get("g").value = value.g;
83+
this.get("b").value = value.b;
84+
}
4285
}
4386

4487
export default ColorNode;

0 commit comments

Comments
 (0)