r3-custom-code/tuby5lj4di.js

106 lines
3.2 KiB
JavaScript
Raw Normal View History

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