Merge pull request #270 from WhitestormJS/#269

PR for #269
This commit is contained in:
Hirako 2017-07-03 15:00:21 +07:00 committed by GitHub
commit b13bb983dd
8 changed files with 120 additions and 34 deletions

View File

@ -0,0 +1,22 @@
import {
CameraComponent,
CameraComponentParams
} from '../../core';
import {CubeCamera as CubeCameraNative} from 'three';
interface CubeCameraParams extends CameraComponentParams {
near?: number,
far?: number,
cubeResolution?: number
}
export class CubeCamera extends CameraComponent {
/**
* @param params
*/
constructor(params?: CubeCameraParams);
build(): CubeCameraNative;
}

View File

@ -0,0 +1,25 @@
import {
CameraComponent,
CameraComponentParams
} from '../../core';
import {OrthographicCamera as OrthographicCameraNative} from 'three';
interface OrthographicCameraParams extends CameraComponentParams {
near?: number,
far?: number,
left?: number,
right?: number,
top?: number,
bottom?: number
}
export class OrthographicCamera extends CameraComponent {
/**
* @param params
*/
constructor(params?: OrthographicCameraParams);
build(): OrthographicCameraNative;
}

View File

@ -0,0 +1,23 @@
import {
CameraComponent,
CameraComponentParams
} from '../../core';
import {PerspectiveCamera as PerspectiveCameraNative} from 'three';
interface PerspectiveCameraParams extends CameraComponentParams {
near?: number,
far?: number,
fov?: number,
aspect?: number
}
export class PerspectiveCamera extends CameraComponent {
/**
* @param params
*/
constructor(params?: PerspectiveCameraParams);
build(): PerspectiveCameraNative;
}

1
types/components/cameras/index.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export * from './CubeCamera';

View File

@ -1 +1,2 @@
export * from './meshes';
export * from './cameras';

View File

@ -1,45 +1,34 @@
import {Component} from './Component';
import {CompositionError} from '../core'
export interface defaults {
build: true;
export interface CameraComponentParams {
build?: boolean;
position: {
x: 0,
y: 0,
z: 0
position?: {
x?: number,
y?: number,
z?: number
};
rotation: {
x: 0,
y: 0,
z: 0
rotation?: {
x?: number,
y?: number,
z?: number
};
}
export class CameraComponent extends Component {
/*
* Creates a new CameraComponent
* TODO define params & instuctions interface
* TODO define instuctions interface
*/
constructor(params?: object, defaults?: defaults, instructions?: object);
constructor(params?: CameraComponentParams, defaults?: CameraComponentParams, instructions?: object);
/*
* TODO
*/
build(): Error;
build(): CompositionError;
/*
* TODO
*/
wrap(): any;
wrap(): Promise<CameraComponent>;
/*
* TODO
*/
copy(source: Component): CameraComponent;
copy(source: CameraComponent): CameraComponent;
/*
* TODO
*/
clone(): CameraComponent;
}

View File

@ -1,10 +1,6 @@
import {ModuleSystem} from './ModuleSystem';
import {App} from './App';
export class AddPromise {
// TODO
}
export class Component extends ModuleSystem {
/**
*
@ -16,12 +12,12 @@ export class Component extends ModuleSystem {
* Notes: As we work in 3D space - we have an App and objects it contains.
* The App is the parent, objects are its children.
*/
addTo(parent: App): AddPromise;
addTo(parent: App): Promise<Component>;
/**
* TODO
*/
add(object: object): AddPromise;
add(object: object): Promise<Component>;
/**
* TODO

View File

@ -8,7 +8,13 @@ import {
} from "./core";
import {MeshStandardMaterial} from 'three';
import {Box, Sphere} from './components';
import {
Box,
Sphere,
CubeCamera,
OrthographicCamera,
PerspectiveCamera
} from './components';
const app = new App();
app.start();
@ -65,3 +71,26 @@ const sphere = new Sphere({
material: new MeshStandardMaterial()
});
sphere.addTo(app);
const cubeCamera = new CubeCamera({
build: false,
position: {
x: 1,
y: 10,
z: 0
}
});
const nativeCubeCamera = cubeCamera.build();
const orthographicCamera = new OrthographicCamera({
build: false,
far: 100
});
const orthographicCameraNative = orthographicCamera.build();
const perspectiveCamera = new PerspectiveCamera({
build: false,
far: 100
});
const perspectiveCameraNative = orthographicCamera.build();