106 lines
3.2 KiB
JavaScript
106 lines
3.2 KiB
JavaScript
if (this.parentEntity === data.entity) {
|
|
|
|
console.log('Entity FSDemo Loaded');
|
|
|
|
this.imageSpoon = GameLib.EntityManager.Instance.findComponentById('g6oggbsg5k');
|
|
this.imageEarth = GameLib.EntityManager.Instance.findComponentById('fo1einfper');
|
|
|
|
this.meshBox = GameLib.EntityManager.Instance.findComponentById('2ehdod2g2a');
|
|
this.meshImageGrid = GameLib.EntityManager.Instance.findComponentById('9qkka13nor');
|
|
|
|
this.instancedGeometry = GameLib.EntityManager.Instance.findComponentById('s5dfh75zza');
|
|
this.boxGeometry = GameLib.EntityManager.Instance.findComponentById('pwzyukkviy');
|
|
|
|
/**
|
|
* Textures
|
|
*/
|
|
this.textureWhite = GameLib.EntityManager.Instance.findComponentById('642tyh30uo');
|
|
|
|
/**
|
|
* Materials
|
|
*/
|
|
this.materialRawPhong = GameLib.EntityManager.Instance.findComponentById('r153c4450d');
|
|
|
|
this.ccBeforeRender = GameLib.EntityManager.Instance.findComponentById('wlw063ovw9');
|
|
this.ccKeyUp = GameLib.EntityManager.Instance.findComponentById('ip0443a52d');
|
|
|
|
this.ccBeforeRender.entityLoaded = this;
|
|
this.ccKeyUp.entityLoaded = this;
|
|
}
|
|
|
|
GameLib.CustomCode.prototype.generateAttributeData = function(index, width, height) {
|
|
|
|
var heightData = this.images[this.currentImageIndex].getHeightData();
|
|
|
|
var offsets = [];
|
|
var scales = [];
|
|
var orientations = [];
|
|
|
|
var x, y, z = 0;
|
|
|
|
for (x = 0; x < width; x++) {
|
|
for (y = 0; y < height; y++) {
|
|
z = heightData[(y * width) + x] * 10;
|
|
scale = height * 0.19;
|
|
offsets.push((x - 64) * 2, (64 - y) * 2, z);
|
|
orientations.push(0, 0, 0, 1);
|
|
scales.push(scale, scale, scale);
|
|
}
|
|
}
|
|
|
|
return {
|
|
offsets : offsets,
|
|
scales : scales,
|
|
orientations : orientations
|
|
};
|
|
|
|
}.bind(this);
|
|
|
|
GameLib.CustomCode.prototype.buildInstancedGeometry = function(index) {
|
|
|
|
var attributeData = this.generateAttributeData(index, 128, 128);
|
|
|
|
var uniforms = Object.assign(
|
|
THREE.UniformsLib['lights'],
|
|
THREE.UniformsLib['common'],
|
|
{
|
|
map : {
|
|
value : this.textureWhite.instance
|
|
}
|
|
}
|
|
);
|
|
|
|
uniforms.diffuse.value.r = 0.47;
|
|
uniforms.diffuse.value.g = 0.72;
|
|
uniforms.diffuse.value.b = 1.0;
|
|
|
|
this.materialRawPhong.instance.uniforms = uniforms;
|
|
|
|
this.instancedGeometry.instance.index = this.boxGeometry.instance.index;
|
|
this.instancedGeometry.instance.groups = this.boxGeometry.instance.groups;
|
|
this.instancedGeometry.instance.attributes.position = this.boxGeometry.instance.attributes.position;
|
|
this.instancedGeometry.instance.attributes.normal = this.boxGeometry.instance.attributes.normal;
|
|
this.instancedGeometry.instance.attributes.uv = this.boxGeometry.instance.attributes.uv;
|
|
|
|
var offsetAttribute = new THREE.InstancedBufferAttribute(
|
|
new Float32Array(attributeData.offsets),
|
|
3
|
|
).setDynamic(true);
|
|
|
|
var orientationAttribute = new THREE.InstancedBufferAttribute(
|
|
new Float32Array(attributeData.orientations),
|
|
4
|
|
);
|
|
|
|
var scaleAttribute = new THREE.InstancedBufferAttribute(
|
|
new Float32Array(attributeData.scales),
|
|
3
|
|
).setDynamic(true);
|
|
|
|
this.instancedGeometry.instance.addAttribute('offset', offsetAttribute);
|
|
this.instancedGeometry.instance.addAttribute('orientation', orientationAttribute);
|
|
this.instancedGeometry.instance.addAttribute('scale', scaleAttribute);
|
|
|
|
}.bind(this);
|
|
|
|
//@ sourceURL=entiyuLoaded.js
|