if (this.parentEntity === data.entity) { console.log('Entity FSDemo Loaded'); } else { return; } /** * Images */ this.imageSpoon = GameLib.EntityManager.Instance.findComponentById('g6oggbsg5k'); this.imageEarth = GameLib.EntityManager.Instance.findComponentById('fo1einfper'); this.images = [ this.imageSpoon, this.imageEarth ]; /** * Meshes */ this.meshBox = GameLib.EntityManager.Instance.findComponentById('2ehdod2g2a'); this.meshImageGrid = GameLib.EntityManager.Instance.findComponentById('9qkka13nor'); /** * Geometry */ 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'); /** * Custom Code Components */ this.ccBeforeRender = GameLib.EntityManager.Instance.findComponentById('wlw063ovw9'); this.ccKeyUp = GameLib.EntityManager.Instance.findComponentById('ip0443a52d'); this.ccBeforeRender.entityLoaded = this; this.ccKeyUp.entityLoaded = this; /** * Generates new Attribute Data based on the image index according to 'width' and 'height' */ GameLib.CustomCode.prototype.generateAttributeData = function(index, width, height) { var heightData = this.images[index].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 = z * 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); /** * Builds our instanced geometry */ 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); this.buildInstancedGeometry(0); //@ sourceURL=entiyLoaded.js