Skip to content

Commit 96d8b2c

Browse files
authored
3DOM Return types (#1539)
* first check * fixed material * updating kernel * fixed rest of api * fixed half of facade * fixed the rest
1 parent 8d4a865 commit 96d8b2c

24 files changed

+94
-91
lines changed

.eslintrc.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ rules:
3131
# Remove if we switch away from clang-format:
3232
keyword-spacing: off
3333

34+
# clang-format wants async(foo) => {} without a space
35+
space-before-function-paren: off
36+
3437
"@typescript-eslint/explicit-member-accessibility": [error, {"accessibility": "no-public"}]
3538

3639
no-new: warn

packages/3dom/src/api/image.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,28 @@ export class Image extends ThreeDOMElement implements ImageInterface {
2828

2929
private[$uri]: string|null;
3030

31-
private[$name]?: string;
31+
private[$name]: string;
3232

3333
constructor(kernel: ModelKernelInterface, serialized: SerializedImage) {
3434
super(kernel);
3535

3636
this[$kernel] = kernel;
3737

3838
this[$uri] = serialized.uri || null;
39-
this[$name] = serialized.name;
39+
if (serialized.name != null) {
40+
this[$name] = serialized.name;
41+
}
4042
}
4143

42-
get name() {
44+
get name(): string|undefined {
4345
return this[$name];
4446
}
4547

46-
get type() {
48+
get type(): 'embedded'|'external' {
4749
return this.uri != null ? 'external' : 'embedded';
4850
}
4951

50-
get uri() {
52+
get uri(): string|null {
5153
return this[$uri];
5254
}
5355

packages/3dom/src/api/material.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,26 @@ export class Material extends ThreeDOMElement implements MaterialInterface {
7878
/**
7979
* The PBR properties that are assigned to this material, if any.
8080
*/
81-
get pbrMetallicRoughness() {
81+
get pbrMetallicRoughness(): PBRMetallicRoughness {
8282
return this[$pbrMetallicRoughness];
8383
}
8484

85-
get normalTexture() {
85+
get normalTexture(): TextureInfo|null {
8686
return this[$normalTexture];
8787
}
8888

89-
get occlusionTexture() {
89+
get occlusionTexture(): TextureInfo|null {
9090
return this[$occlusionTexture];
9191
}
92-
get emissiveTexture() {
92+
get emissiveTexture(): TextureInfo|null {
9393
return this[$emissiveTexture];
9494
}
9595

9696
/**
9797
* The name of the material. Note that names are optional and not
9898
* guaranteed to be unique.
9999
*/
100-
get name() {
100+
get name(): string {
101101
return this[$name];
102102
}
103103
}

packages/3dom/src/api/model-kernel.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ interface Deferred {
5656
}
5757

5858
const $onMessageEvent = Symbol('onMessageEvent');
59-
const $messageEventHandler = Symbol('messageEventHandler');
6059
const $port = Symbol('port');
6160
const $model = Symbol('model');
6261

@@ -86,8 +85,6 @@ export class ModelKernel implements ModelKernelInterface {
8685

8786
protected[$elementsByType]: ElementsByType = new Map();
8887

89-
protected[$messageEventHandler] = (event: MessageEvent) =>
90-
this[$onMessageEvent](event);
9188
protected[$port]: MessagePort;
9289

9390
protected[$model]: ModelAPI;
@@ -111,7 +108,7 @@ export class ModelKernel implements ModelKernelInterface {
111108
}
112109

113110
this[$port] = port;
114-
this[$port].addEventListener('message', this[$messageEventHandler]);
111+
this[$port].addEventListener('message', this[$onMessageEvent]);
115112
this[$port].start();
116113

117114
this[$model] = this.deserialize('model', serialized);
@@ -121,7 +118,7 @@ export class ModelKernel implements ModelKernelInterface {
121118
* The root scene graph element, a Model, that is the entrypoint for the
122119
* entire scene graph that is backed by this kernel.
123120
*/
124-
get model() {
121+
get model(): ModelAPI {
125122
return this[$model];
126123
}
127124

@@ -225,12 +222,12 @@ export class ModelKernel implements ModelKernelInterface {
225222
* The ModelKernel should be deactivated before it is disposed of, or else
226223
* it will leak in memory.
227224
*/
228-
deactivate() {
225+
deactivate(): void {
229226
this[$port].close();
230-
this[$port].removeEventListener('message', this[$messageEventHandler]);
227+
this[$port].removeEventListener('message', this[$onMessageEvent]);
231228
}
232229

233-
protected[$onMessageEvent](event: MessageEvent) {
230+
protected[$onMessageEvent] = (event: MessageEvent): void => {
234231
const {data} = event;
235232

236233
switch (data && data.type) {
@@ -247,5 +244,5 @@ export class ModelKernel implements ModelKernelInterface {
247244
break;
248245
}
249246
}
250-
}
247+
};
251248
}

packages/3dom/src/api/model.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ export class Model extends ThreeDOMElement implements ModelInterface {
4848
*
4949
* TODO(#1002): This value needs to be sensitive to scene graph order
5050
*/
51-
get materials() {
51+
get materials(): Readonly<Material[]> {
5252
return this[$kernel].getElementsByType('material');
5353
}
5454

5555
/**
5656
* A Model has no owner model; it owns itself.
5757
*/
58-
get ownerModel() {
58+
get ownerModel(): Model {
5959
return this;
6060
}
6161
}

packages/3dom/src/api/pbr-metallic-roughness.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -64,29 +64,29 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
6464
/**
6565
* The base color factor of the material in RGBA format.
6666
*/
67-
get baseColorFactor() {
67+
get baseColorFactor(): Readonly<RGBA> {
6868
return this[$baseColorFactor];
6969
}
7070

7171
/**
7272
* The metalness factor of the material in range [0,1].
7373
*/
74-
get metallicFactor() {
74+
get metallicFactor(): number {
7575
return this[$metallicFactor];
7676
}
7777

7878
/**
7979
* The roughness factor of the material in range [0,1].
8080
*/
81-
get roughnessFactor() {
81+
get roughnessFactor(): number {
8282
return this[$roughnessFactor];
8383
}
8484

85-
get baseColorTexture() {
85+
get baseColorTexture(): TextureInfo|null {
8686
return this[$baseColorTexture];
8787
}
8888

89-
get metallicRoughnessTexture() {
89+
get metallicRoughnessTexture(): TextureInfo|null {
9090
return this[$metallicRoughnessTexture];
9191
}
9292

@@ -95,7 +95,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
9595
*
9696
* @see ../api.ts
9797
*/
98-
async setBaseColorFactor(color: RGBA) {
98+
async setBaseColorFactor(color: RGBA): Promise<void> {
9999
await this[$kernel].mutate(this, 'baseColorFactor', color);
100100
this[$baseColorFactor] = Object.freeze(color) as RGBA;
101101
}
@@ -105,7 +105,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
105105
*
106106
* @see ../api.ts
107107
*/
108-
async setMetallicFactor(factor: number) {
108+
async setMetallicFactor(factor: number): Promise<void> {
109109
await this[$kernel].mutate(this, 'metallicFactor', factor);
110110
this[$metallicFactor] = factor;
111111
}
@@ -115,7 +115,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
115115
*
116116
* @see ../api.ts
117117
*/
118-
async setRoughnessFactor(factor: number) {
118+
async setRoughnessFactor(factor: number): Promise<void> {
119119
await this[$kernel].mutate(this, 'roughnessFactor', factor);
120120
this[$roughnessFactor] = factor;
121121
}

packages/3dom/src/api/sampler.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -36,38 +36,40 @@ export class Sampler extends ThreeDOMElement implements SamplerInterface {
3636
private[$wrapS]: WrapMode;
3737
private[$wrapT]: WrapMode;
3838

39-
private[$name]?: string;
39+
private[$name]: string;
4040

4141
constructor(kernel: ModelKernelInterface, serialized: SerializedSampler) {
4242
super(kernel);
4343

4444
this[$kernel] = kernel;
4545

46-
this[$name] = serialized.name;
46+
if (serialized.name != null) {
47+
this[$name] = serialized.name;
48+
}
4749

4850
this[$minFilter] = serialized.minFilter || null;
4951
this[$magFilter] = serialized.magFilter || null;
5052
this[$wrapS] = serialized.wrapS || 10497;
5153
this[$wrapT] = serialized.wrapT || 10497;
5254
}
5355

54-
get name() {
56+
get name(): string {
5557
return this[$name];
5658
}
5759

58-
get minFilter() {
60+
get minFilter(): MinFilter|null {
5961
return this[$minFilter];
6062
}
6163

62-
get magFilter() {
64+
get magFilter(): MagFilter|null {
6365
return this[$magFilter];
6466
}
6567

66-
get wrapS() {
68+
get wrapS(): WrapMode {
6769
return this[$wrapS];
6870
}
6971

70-
get wrapT() {
72+
get wrapT(): WrapMode {
7173
return this[$wrapT];
7274
}
7375

packages/3dom/src/api/texture-info.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export class TextureInfo extends ThreeDOMElement implements
4040
}
4141
}
4242

43-
get texture() {
43+
get texture(): Texture|null {
4444
return this[$texture];
4545
}
4646

packages/3dom/src/api/texture.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class Texture extends ThreeDOMElement implements TextureInterface {
3030
private[$source]: Image|null = null;
3131
private[$sampler]: Sampler|null = null;
3232

33-
private[$name]?: string;
33+
private[$name]: string;
3434

3535
constructor(kernel: ModelKernelInterface, serialized: SerializedTexture) {
3636
super(kernel);
@@ -39,7 +39,9 @@ export class Texture extends ThreeDOMElement implements TextureInterface {
3939

4040
const {sampler, source, name} = serialized;
4141

42-
this[$name] = name;
42+
if (name != null) {
43+
this[$name] = name;
44+
}
4345

4446
if (sampler != null) {
4547
this[$sampler] = kernel.deserialize('sampler', sampler);
@@ -50,15 +52,15 @@ export class Texture extends ThreeDOMElement implements TextureInterface {
5052
}
5153
}
5254

53-
get name() {
55+
get name(): string {
5456
return this[$name];
5557
}
5658

57-
get sampler() {
59+
get sampler(): Sampler|null {
5860
return this[$sampler];
5961
}
6062

61-
get source() {
63+
get source(): Image|null {
6264
return this[$source];
6365
}
6466

packages/3dom/src/api/three-dom-element.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export class ThreeDOMElement implements ThreeDOMElementInterface {
4040
* The Model of provenance for this scene graph element, or undefined if
4141
* element is itself a Model.
4242
*/
43-
get ownerModel() {
43+
get ownerModel(): Model {
4444
return this[$ownerModel];
4545
}
4646
}

packages/3dom/src/facade/model-graft-manipulator.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import {ModelGraft} from './api.js';
2020
const $modelGraft = Symbol('modelGraft');
2121
const $port = Symbol('port');
2222

23-
const $messageEventHandler = Symbol('messageEventHandler');
2423
const $onMessageEvent = Symbol('onMessageEvent');
2524

2625
/**
@@ -33,26 +32,23 @@ export class ModelGraftManipulator {
3332
protected[$port]: MessagePort;
3433
protected[$modelGraft]: ModelGraft;
3534

36-
protected[$messageEventHandler] = (event: MessageEvent) =>
37-
this[$onMessageEvent](event);
38-
3935
constructor(modelGraft: ModelGraft, port: MessagePort) {
4036
this[$modelGraft] = modelGraft;
4137
this[$port] = port;
42-
this[$port].addEventListener('message', this[$messageEventHandler]);
38+
this[$port].addEventListener('message', this[$onMessageEvent]);
4339
this[$port].start();
4440
}
4541

4642
/**
4743
* Clean up internal state so that the ModelGraftManipulator can be properly
4844
* garbage collected.
4945
*/
50-
dispose() {
51-
this[$port].removeEventListener('message', this[$messageEventHandler]);
46+
dispose(): void {
47+
this[$port].removeEventListener('message', this[$onMessageEvent]);
5248
this[$port].close();
5349
}
5450

55-
async[$onMessageEvent](event: MessageEvent) {
51+
[$onMessageEvent] = async(event: MessageEvent): Promise<void> => {
5652
const {data} = event;
5753
if (data && data.type) {
5854
if (data.type === ThreeDOMMessageType.MUTATE) {
@@ -67,5 +63,5 @@ export class ModelGraftManipulator {
6763
}
6864
}
6965
}
70-
}
66+
};
7167
}

packages/3dom/src/facade/three-js/correlated-scene-graph.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,14 @@ export class CorrelatedSceneGraph {
186186
/**
187187
* The source Three.js GLTF result given to us by a Three.js GLTFLoader.
188188
*/
189-
get threeGLTF() {
189+
get threeGLTF(): ThreeGLTF {
190190
return this[$threeGLTF];
191191
}
192192

193193
/**
194194
* The in-memory deserialized source glTF.
195195
*/
196-
get gltf() {
196+
get gltf(): GLTF {
197197
return this[$gltf];
198198
}
199199

@@ -203,15 +203,15 @@ export class CorrelatedSceneGraph {
203203
* cases where more than one Three.js object corresponds to a single glTF
204204
* element.
205205
*/
206-
get gltfElementMap() {
206+
get gltfElementMap(): GLTFElementToThreeObjectMap {
207207
return this[$gltfElementMap];
208208
}
209209

210210
/**
211211
* A map of individual Three.js objects to corresponding elements in the
212212
* source glTF.
213213
*/
214-
get threeObjectMap() {
214+
get threeObjectMap(): ThreeObjectToGLTFElementHandleMap {
215215
return this[$threeObjectMap];
216216
}
217217

0 commit comments

Comments
 (0)