iv-3d-lib
Version:
A reusable ThreeJS library providing features for Ivee 3D Editor.
107 lines (97 loc) • 4.49 kB
text/typescript
import { SimpleDictionary } from './simple-dictionary';
import { NameValue } from './name-value';
import { KGen } from './k-gen';
export class Iv3dPlugin {
id: string;
type: Iv3dPluginType = Iv3dPluginType.none;
name: string;
cfg: NameValue[] = [];
static createSkyboxPlugin(): Iv3dPlugin {
let p: Iv3dPlugin = <Iv3dPlugin>{
id: KGen.uuid(),
type: Iv3dPluginType.skybox,
cfg: [
<NameValue>{ id: KGen.uuid(6), name: 'srcFile', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'size', value: 1024 }
]
};
return p;
}
static createThreejsTerrainPlugin(): Iv3dPlugin {
let p: Iv3dPlugin = <Iv3dPlugin>{
id: KGen.uuid(),
type: Iv3dPluginType.threejsTerrain,
cfg: [
<NameValue>{ id: KGen.uuid(6), name: 'shaderNoiseId', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'diffuseTexture1FilePath', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'diffuseTexture2FilePath', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'detailTextureFilePath', value: '' },
]
};
return p;
}
static createMirrorCubePlugin(): Iv3dPlugin {
let p: Iv3dPlugin = <Iv3dPlugin>{
id: KGen.uuid(),
type: Iv3dPluginType.mirrorCube,
cfg: [
<NameValue>{ id: KGen.uuid(6), name: 'near', value: 0.1 },
<NameValue>{ id: KGen.uuid(6), name: 'far', value: 10000 },
<NameValue>{ id: KGen.uuid(6), name: 'resolution', value: 1024 },
<NameValue>{ id: KGen.uuid(6), name: 'dimension_x', value: 400 },
<NameValue>{ id: KGen.uuid(6), name: 'dimension_y', value: 400 },
<NameValue>{ id: KGen.uuid(6), name: 'dimension_z', value: 10 },
<NameValue>{ id: KGen.uuid(6), name: 'position_x', value: 100 },
<NameValue>{ id: KGen.uuid(6), name: 'position_y', value: 100 },
<NameValue>{ id: KGen.uuid(6), name: 'position_z', value: 100 },
]
};
return p;
}
static createGoogleMapsPlugin(): Iv3dPlugin {
let p: Iv3dPlugin = <Iv3dPlugin>{
id: KGen.uuid(),
type: Iv3dPluginType.googleMaps,
cfg: [
<NameValue>{ id: KGen.uuid(6), name: 'place', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'origin', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'destination', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'zoom', value: '15' },
<NameValue>{ id: KGen.uuid(6), name: 'key', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'width', value: 'window.innerWidth' },
<NameValue>{ id: KGen.uuid(6), name: 'height', value: 'window.innerHeight' },
<NameValue>{ id: KGen.uuid(6), name: 'position_x', value: '0' },
<NameValue>{ id: KGen.uuid(6), name: 'position_y', value: '0' },
<NameValue>{ id: KGen.uuid(6), name: 'position_z', value: '0' },
<NameValue>{ id: KGen.uuid(6), name: 'rotation_x', value: '0' },
<NameValue>{ id: KGen.uuid(6), name: 'rotation_y', value: '0' },
<NameValue>{ id: KGen.uuid(6), name: 'rotation_z', value: '0' },
]
};
return p;
}
static createTextAttrLinesPlugin(): Iv3dPlugin {
let p: Iv3dPlugin = <Iv3dPlugin>{
id: KGen.uuid(),
type: Iv3dPluginType.textAttrLines,
cfg: [
<NameValue>{ id: KGen.uuid(6), name: 'textMeshId', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'shaderId', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'amplitude', value: '' },
<NameValue>{ id: KGen.uuid(6), name: 'customColor', value: '' },
]
};
return p;
}
}
export enum Iv3dPluginType {
none = <any>'',
camera = <any>'camera',
skybox = <any>'skybox',
dataSource = <any>'dataSource',
threejsTerrain = <any>'threejsTerrain',
mirrorCube = <any>'mirrorCube',
googleMaps = <any>'googleMaps',
textAttrLines = <any>'textAttrLines',
custom = <any>'custom'
}