Skip to content

Commit

Permalink
3DOM Return types (google#1539)
Browse files Browse the repository at this point in the history
* first check

* fixed material

* updating kernel

* fixed rest of api

* fixed half of facade

* fixed the rest
  • Loading branch information
elalish authored Sep 15, 2020
1 parent 8d4a865 commit 96d8b2c
Show file tree
Hide file tree
Showing 24 changed files with 94 additions and 91 deletions.
3 changes: 3 additions & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ rules:
# Remove if we switch away from clang-format:
keyword-spacing: off

# clang-format wants async(foo) => {} without a space
space-before-function-paren: off

"@typescript-eslint/explicit-member-accessibility": [error, {"accessibility": "no-public"}]

no-new: warn
Expand Down
12 changes: 7 additions & 5 deletions packages/3dom/src/api/image.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,28 @@ export class Image extends ThreeDOMElement implements ImageInterface {

private[$uri]: string|null;

private[$name]?: string;
private[$name]: string;

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

this[$kernel] = kernel;

this[$uri] = serialized.uri || null;
this[$name] = serialized.name;
if (serialized.name != null) {
this[$name] = serialized.name;
}
}

get name() {
get name(): string|undefined {
return this[$name];
}

get type() {
get type(): 'embedded'|'external' {
return this.uri != null ? 'external' : 'embedded';
}

get uri() {
get uri(): string|null {
return this[$uri];
}

Expand Down
10 changes: 5 additions & 5 deletions packages/3dom/src/api/material.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,26 @@ export class Material extends ThreeDOMElement implements MaterialInterface {
/**
* The PBR properties that are assigned to this material, if any.
*/
get pbrMetallicRoughness() {
get pbrMetallicRoughness(): PBRMetallicRoughness {
return this[$pbrMetallicRoughness];
}

get normalTexture() {
get normalTexture(): TextureInfo|null {
return this[$normalTexture];
}

get occlusionTexture() {
get occlusionTexture(): TextureInfo|null {
return this[$occlusionTexture];
}
get emissiveTexture() {
get emissiveTexture(): TextureInfo|null {
return this[$emissiveTexture];
}

/**
* The name of the material. Note that names are optional and not
* guaranteed to be unique.
*/
get name() {
get name(): string {
return this[$name];
}
}
15 changes: 6 additions & 9 deletions packages/3dom/src/api/model-kernel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ interface Deferred {
}

const $onMessageEvent = Symbol('onMessageEvent');
const $messageEventHandler = Symbol('messageEventHandler');
const $port = Symbol('port');
const $model = Symbol('model');

Expand Down Expand Up @@ -86,8 +85,6 @@ export class ModelKernel implements ModelKernelInterface {

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

protected[$messageEventHandler] = (event: MessageEvent) =>
this[$onMessageEvent](event);
protected[$port]: MessagePort;

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

this[$port] = port;
this[$port].addEventListener('message', this[$messageEventHandler]);
this[$port].addEventListener('message', this[$onMessageEvent]);
this[$port].start();

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

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

protected[$onMessageEvent](event: MessageEvent) {
protected[$onMessageEvent] = (event: MessageEvent): void => {
const {data} = event;

switch (data && data.type) {
Expand All @@ -247,5 +244,5 @@ export class ModelKernel implements ModelKernelInterface {
break;
}
}
}
};
}
4 changes: 2 additions & 2 deletions packages/3dom/src/api/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,14 @@ export class Model extends ThreeDOMElement implements ModelInterface {
*
* TODO(#1002): This value needs to be sensitive to scene graph order
*/
get materials() {
get materials(): Readonly<Material[]> {
return this[$kernel].getElementsByType('material');
}

/**
* A Model has no owner model; it owns itself.
*/
get ownerModel() {
get ownerModel(): Model {
return this;
}
}
16 changes: 8 additions & 8 deletions packages/3dom/src/api/pbr-metallic-roughness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,29 +64,29 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
/**
* The base color factor of the material in RGBA format.
*/
get baseColorFactor() {
get baseColorFactor(): Readonly<RGBA> {
return this[$baseColorFactor];
}

/**
* The metalness factor of the material in range [0,1].
*/
get metallicFactor() {
get metallicFactor(): number {
return this[$metallicFactor];
}

/**
* The roughness factor of the material in range [0,1].
*/
get roughnessFactor() {
get roughnessFactor(): number {
return this[$roughnessFactor];
}

get baseColorTexture() {
get baseColorTexture(): TextureInfo|null {
return this[$baseColorTexture];
}

get metallicRoughnessTexture() {
get metallicRoughnessTexture(): TextureInfo|null {
return this[$metallicRoughnessTexture];
}

Expand All @@ -95,7 +95,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
*
* @see ../api.ts
*/
async setBaseColorFactor(color: RGBA) {
async setBaseColorFactor(color: RGBA): Promise<void> {
await this[$kernel].mutate(this, 'baseColorFactor', color);
this[$baseColorFactor] = Object.freeze(color) as RGBA;
}
Expand All @@ -105,7 +105,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
*
* @see ../api.ts
*/
async setMetallicFactor(factor: number) {
async setMetallicFactor(factor: number): Promise<void> {
await this[$kernel].mutate(this, 'metallicFactor', factor);
this[$metallicFactor] = factor;
}
Expand All @@ -115,7 +115,7 @@ export class PBRMetallicRoughness extends ThreeDOMElement implements
*
* @see ../api.ts
*/
async setRoughnessFactor(factor: number) {
async setRoughnessFactor(factor: number): Promise<void> {
await this[$kernel].mutate(this, 'roughnessFactor', factor);
this[$roughnessFactor] = factor;
}
Expand Down
16 changes: 9 additions & 7 deletions packages/3dom/src/api/sampler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,38 +36,40 @@ export class Sampler extends ThreeDOMElement implements SamplerInterface {
private[$wrapS]: WrapMode;
private[$wrapT]: WrapMode;

private[$name]?: string;
private[$name]: string;

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

this[$kernel] = kernel;

this[$name] = serialized.name;
if (serialized.name != null) {
this[$name] = serialized.name;
}

this[$minFilter] = serialized.minFilter || null;
this[$magFilter] = serialized.magFilter || null;
this[$wrapS] = serialized.wrapS || 10497;
this[$wrapT] = serialized.wrapT || 10497;
}

get name() {
get name(): string {
return this[$name];
}

get minFilter() {
get minFilter(): MinFilter|null {
return this[$minFilter];
}

get magFilter() {
get magFilter(): MagFilter|null {
return this[$magFilter];
}

get wrapS() {
get wrapS(): WrapMode {
return this[$wrapS];
}

get wrapT() {
get wrapT(): WrapMode {
return this[$wrapT];
}

Expand Down
2 changes: 1 addition & 1 deletion packages/3dom/src/api/texture-info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class TextureInfo extends ThreeDOMElement implements
}
}

get texture() {
get texture(): Texture|null {
return this[$texture];
}

Expand Down
12 changes: 7 additions & 5 deletions packages/3dom/src/api/texture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export class Texture extends ThreeDOMElement implements TextureInterface {
private[$source]: Image|null = null;
private[$sampler]: Sampler|null = null;

private[$name]?: string;
private[$name]: string;

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

const {sampler, source, name} = serialized;

this[$name] = name;
if (name != null) {
this[$name] = name;
}

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

get name() {
get name(): string {
return this[$name];
}

get sampler() {
get sampler(): Sampler|null {
return this[$sampler];
}

get source() {
get source(): Image|null {
return this[$source];
}

Expand Down
2 changes: 1 addition & 1 deletion packages/3dom/src/api/three-dom-element.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class ThreeDOMElement implements ThreeDOMElementInterface {
* The Model of provenance for this scene graph element, or undefined if
* element is itself a Model.
*/
get ownerModel() {
get ownerModel(): Model {
return this[$ownerModel];
}
}
14 changes: 5 additions & 9 deletions packages/3dom/src/facade/model-graft-manipulator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import {ModelGraft} from './api.js';
const $modelGraft = Symbol('modelGraft');
const $port = Symbol('port');

const $messageEventHandler = Symbol('messageEventHandler');
const $onMessageEvent = Symbol('onMessageEvent');

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

protected[$messageEventHandler] = (event: MessageEvent) =>
this[$onMessageEvent](event);

constructor(modelGraft: ModelGraft, port: MessagePort) {
this[$modelGraft] = modelGraft;
this[$port] = port;
this[$port].addEventListener('message', this[$messageEventHandler]);
this[$port].addEventListener('message', this[$onMessageEvent]);
this[$port].start();
}

/**
* Clean up internal state so that the ModelGraftManipulator can be properly
* garbage collected.
*/
dispose() {
this[$port].removeEventListener('message', this[$messageEventHandler]);
dispose(): void {
this[$port].removeEventListener('message', this[$onMessageEvent]);
this[$port].close();
}

async[$onMessageEvent](event: MessageEvent) {
[$onMessageEvent] = async(event: MessageEvent): Promise<void> => {
const {data} = event;
if (data && data.type) {
if (data.type === ThreeDOMMessageType.MUTATE) {
Expand All @@ -67,5 +63,5 @@ export class ModelGraftManipulator {
}
}
}
}
};
}
8 changes: 4 additions & 4 deletions packages/3dom/src/facade/three-js/correlated-scene-graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,14 @@ export class CorrelatedSceneGraph {
/**
* The source Three.js GLTF result given to us by a Three.js GLTFLoader.
*/
get threeGLTF() {
get threeGLTF(): ThreeGLTF {
return this[$threeGLTF];
}

/**
* The in-memory deserialized source glTF.
*/
get gltf() {
get gltf(): GLTF {
return this[$gltf];
}

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

/**
* A map of individual Three.js objects to corresponding elements in the
* source glTF.
*/
get threeObjectMap() {
get threeObjectMap(): ThreeObjectToGLTFElementHandleMap {
return this[$threeObjectMap];
}

Expand Down
Loading

0 comments on commit 96d8b2c

Please sign in to comment.