matrix-engine
Version:
basic_timeline improved, VT func setup vide html element id with name arg.- DISABLE RAYCAST DEBUG TEST [2.3.3] Fix for GUI win desktop [2.3.0] DestrucMesh solution & loading convex objs for physics BASIC, SpriteAnimation CPU/texture solution added, Improv
168 lines (148 loc) • 4.69 kB
JavaScript
/**
*@Author Nikola Lukic
*@Description Matrix Engine Api Example
@name basic_FBO
*/
import App from "../program/manifest";
export var runThis = (world) => {
// Camera
App.camera.SceneController = true;
// Image texs
var tex = {
source: ["res/images/complex_texture_1/diffuse.webp"],
mix_operation: "multiply",
params: {
TEXTURE_MAG_FILTER: world.GL.gl.NEAREST,
TEXTURE_MIN_FILTER: world.GL.gl.NEAREST
}
};
// world.Add("cubeLightTex", 0.2, "myCube", tex);
// App.scene.myCube.position.SetZ(-9);
// App.scene.myCube.position.SetX(1);
// App.scene.myCube.position.SetY(0.6);
// App.scene.myCube.activateShadows('spot');
var textuteImageSamplers2 = {
source: [
"res/bvh-skeletal-base/swat-guy/textures/Ch15_1001_Diffuse.png",
"res/bvh-skeletal-base/swat-guy/textures/Ch15_1001_Diffuse.png"
],
mix_operation: "multiply"
};
// Load obj seq animation
const createObjSequence = (objName) => {
function onLoadObj(meshes) {
App.meshes = meshes;
for(let key in meshes) {
matrixEngine.objLoader.initMeshBuffers(world.GL.gl, meshes[key]);
}
var textuteImageSamplers2 = {
source: [
"res/bvh-skeletal-base/swat-guy/textures/Ch15_1001_Diffuse.png"
],
mix_operation: "multiply", // ENUM : multiply , divide
params: {
TEXTURE_MAG_FILTER: world.GL.gl.NEAREST,
TEXTURE_MIN_FILTER: world.GL.gl.NEAREST
}
};
setTimeout(function() {
var animArg = {
id: objName,
meshList: meshes,
// sumOfAniFrames: 61, No need if `animations` exist!
currentAni: 0,
// speed: 3, No need if `animations` exist!
// upgrade - optimal
animations: {
active: 'walk',
walk: {
from: 0,
to: 35,
speed: 3
},
walkPistol: {
from: 36,
to: 60,
speed: 3
}
}
};
world.Add("obj", 1, objName,
textuteImageSamplers2,
meshes[objName],
animArg
);
App.scene[objName].position.y = -1;
App.scene[objName].position.z = -2;
App.scene[objName].rotation.rotationSpeed.y = 50;
}, 1);
}
matrixEngine.objLoader.downloadMeshes(
matrixEngine.objLoader.makeObjSeqArg(
{
id: objName,
path: "res/bvh-skeletal-base/swat-guy/anims/swat-multi",
from: 1,
to: 61
}),
onLoadObj
);
};
createObjSequence('player');
// FBO BASIC
world.Add("cubeLightTex", 2.5, "myMirror", tex);
App.scene.myMirror.position.SetZ(-15);
App.scene.myMirror.position.SetX(-3);
App.scene.myMirror.position.SetY(2.5);
App.scene.myMirror.rotation.rotz = 90;
App.scene.myMirror.setFBO({
cameraX: 0,
cameraY: 0,
cameraZ: 5,
pitch: 12,
yaw: 0
});
// Easy manipilation
// App.scene.myMirror.FBO.settings.cameraX = 0
world.Add("cubeLightTex", 2.5, "myMirrorUP", tex);
App.scene.myMirrorUP.position.SetZ(-15);
App.scene.myMirrorUP.position.SetX(3);
App.scene.myMirrorUP.position.SetY(2.5);
App.scene.myMirrorUP.rotation.rotz = 90
App.scene.myMirrorUP.setFBO({
cameraX: 0,
cameraY: 0,
cameraZ: 2,
pitch: 0,
yaw: 1
});
// world.Add("cubeLightTex", 2.5, "myMirrorBottom", tex);
// App.scene.myMirrorBottom.position.SetZ(-15);
// App.scene.myMirrorBottom.position.SetX(3);
// App.scene.myMirrorBottom.position.SetY(-2.5);
// App.scene.myMirrorBottom.rotation.rotz = 90
// App.scene.myMirrorBottom.setFBO({
// cameraX: 0,
// cameraY: 0,
// cameraZ: 2,
// pitch: 0,
// yaw: 1
// });
// App.scene.myMirror.rotation.rotationSpeed.z = 10;
// App.scene.myMirrorBottom.activateShadows();
// TEST ALSO ANIMATIONLINE
// matrixEngine.matrixWorld.world.useAnimationLine({sequenceSize: 500});
// Click event
canvas.addEventListener('mousedown', (ev) => {
matrixEngine.raycaster.checkingProcedure(ev);
});
addEventListener("ray.hit.event", function(e) {
e.detail.hitObject.LightsData.ambientLight.r =
matrixEngine.utility.randomFloatFromTo(0, 2);
e.detail.hitObject.LightsData.ambientLight.g =
matrixEngine.utility.randomFloatFromTo(0, 2);
e.detail.hitObject.LightsData.ambientLight.b =
matrixEngine.utility.randomFloatFromTo(0, 2);
// console.info(e.detail);
});
};