Skip to content

Commit

Permalink
Adds types for Group, adds missing extrude file #297
Browse files Browse the repository at this point in the history
  • Loading branch information
hirako2000 committed Jul 29, 2017
1 parent e659b55 commit 8e52826
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 6 deletions.
105 changes: 105 additions & 0 deletions types/components/meshes/Extrude.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import {MeshComponent, MeshComponentParams} from '../../core/MeshComponent';
import {
BufferGeometry,
CurvePath,
ExtrudeGeometry,
Mesh,
Shape,
Vector
} from 'three';

interface ExtrudeParams extends MeshComponentParams {

/** Geometry parameters */
geometry: {
shapes: Shape | Array<Shape>,
options?: {
/**
* Number of points on the curves.
* Default is 12.
*/
curveSegments?: number;

/**
* Number of points used for subdividing segments along the depth of the extruded spline.
* Default is 1.
*/
steps?: number;

/**
* Depth to extrude the shape. Default is 100.
*/
amount?: number;

/**
* Apply beveling to the shape.
* Default is true.
*/
bevelEnabled?: boolean;

/**
* How deep into the original shape the bevel goes.
* Default is 6.
*/
bevelThickness?: number;

/**
* Distance from the shape outline that the bevel extends.
* Default is bevelThickness minus 2.
*/
bevelSize?: number;

/**
* Number of bevel layers.
* Default is 3.
*/
bevelSegments?: number;

/**
* A 3D spline path along which the shape should be extruded (creates Frames if frames aren't defined).
*/
extrudePath?: CurvePath<Vector>;

/**
* An object containing arrays of tangents, normals, binormals for each step along the extrudePath.
*/
frames?: Object;

/**
* An object that provides UV generator functions
*/
UVGenerator?: Object;
}
};

/**
* Whether to create buffered geometry or not.
* Default is false.
*/
buffer?: boolean;
}

interface ExtrudeParamsOptions {

}

export class Extrude extends MeshComponent {

/**
* @constructor Creates an extruded geometry from a path shape.
* @param params parameters
*/
constructor(params?: ExtrudeParams);

/**
* Build lifecycle creates a mesh using input params.
* @param params
*/
build(params?: ExtrudeParams): Mesh;

/**
* Builds the geometry
* @param params
*/
buildGeometry(params?: ExtrudeParams): ExtrudeGeometry | BufferGeometry;
}
21 changes: 21 additions & 0 deletions types/components/meshes/Group.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import {
MeshComponent,
MeshComponentParams
} from '../../core/MeshComponent';

import {Object3D} from 'three';

export class Group extends MeshComponent {

/**
* @constructor Creates a Group of meshes
* @param objects spread Meshes
*/
constructor(...objects: Array<MeshComponent>);

/**
* Returns a new Object3D
*/
build(): Object3D;

}
3 changes: 2 additions & 1 deletion types/components/meshes/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export * from './Box';
export * from './Cone';
export * from './Cylinder'
export * from './Cylinder';
export * from './Group';
export * from './Dodecahedron';
export * from './Extrude';
export * from './Sphere';
Expand Down
6 changes: 3 additions & 3 deletions types/core/Component.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ export class Component extends ModuleSystem {
constructor(params?: object, defaults?: object, instructions?: object);

/**
* Adds this object to the App.
* Adds this object to a Component (App ,etc)
* Notes: As we work in 3D space - we have an App and objects it contains.
* The App is the parent, objects are its children.
* The App is usually the top the parent, objects are its children.
*/
addTo(parent: App): Promise<Component>;
addTo(parent: App | Component): Promise<Component>;

/**
* Adds a child Component.
Expand Down
5 changes: 3 additions & 2 deletions types/core/MeshComponent.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import {Component} from './Component';
import {CompositionError} from './errors';
import {
Material,
Mesh
Mesh,
Object3D
} from 'three';

interface MeshComponentParams {
Expand Down Expand Up @@ -65,7 +66,7 @@ export class MeshComponent extends Component {
/**
* @throws a CompositionError.
*/
build(): CompositionError | Mesh | Promise<Mesh>;
build(): CompositionError | Mesh | Promise<Mesh> | Object3D;

/**
* @returns a Promised mesh component
Expand Down
7 changes: 7 additions & 0 deletions types/whs-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
Cone,
CubeCamera,
Extrude,
Group,
OrthographicCamera,
PerspectiveCamera,
Sphere
Expand Down Expand Up @@ -142,6 +143,12 @@ extrude = new Extrude({
}
});

let group = new Group();
const object3D = group.build();
sphere.addTo(group);

group = new Group(extrude, cone);

// Cameras

const cubeCamera = new CubeCamera({
Expand Down

0 comments on commit 8e52826

Please sign in to comment.