CTRL-C CTRL-V or upload main.js and other files and press Run
function addDefaultCameraAtXYZAndRotationXYZ(x, y, z, rX, rY, rZ) { var camera = createObject(); camera.name = "camera"; var position = new Object(); position.x = x; position.y = y; position.z = z; var rotation = new Object(); rotation.x = rX; rotation.y = rY; rotation.z = rZ; camera.position = position; camera.rotation = rotation; addObject(camera); }; function addDefaultCamera() { addDefaultCameraAtXYZAndRotationXYZ(0,0,0,0,0,0); }; function createObject() { var object = { playAnimation : function(animationName) { playAnimation__private(this.name, animationName); } }; var position = new Object(); position.x = 0; position.y = 0; position.z = 0; var rotation = new Object(); rotation.x = 0; rotation.y = 0; rotation.z = 0; var scale = new Object(); scale.x = 1; scale.y = 1; scale.z = 1; object.position = position; object.rotation = rotation; object.scale = scale; return object; }; function getObject(name) { getObject__private(name); return getObject__private__CallResult; }; function addObject(object) { var x = object.position.x; var y = object.position.y; var z = object.position.z; print(x); print(y); print(z); var rX = object.rotation.x; var rY = object.rotation.y; var rZ = object.rotation.z; var sX = object.scale.x; var sY = object.scale.y; var sZ = object.scale.z; addObject__private(object.name, object.modelPath, x, y, z, rX, rY, rZ, sX, sY, sZ); }; function updateObject(object) { var x = object.position.x; var y = object.position.y; var z = object.position.z; var rX = object.rotation.x; var rY = object.rotation.y; var rZ = object.rotation.z; if (BINDINGS_DEBUG) { print("!!!update object: " + object.name + " x: " + x + " y: " + y + " z: " + z + " rX: " + rX + " rY: " + rY + " rZ: " + rZ); }; updateObject__private(object.name, x, y, z, rX, rY, rZ); }; function removeAllObjects() { removeAllObjects__private(); }; function newObjectWithIdAndPositionXYZrXrYrZsXsYsZ__private(id, x, y, z, rX, rY, rZ, sX, sY, sZ) { var position = new Object(); position.x = x; position.y = y; position.z = z; var rotation = new Object(); rotation.x = rX; rotation.y = rY; rotation.z = rZ; var scale = new Object(); scale.x = sX; scale.y = sY; scale.z = sZ; var object = new Object(); object.name = id; object.position = position; object.rotation = rotation; object.scale = scale; //print("newObjectWithIdAndPosition__private: " + object.name); return object; }; function FreeViewManager(object, speed) { this.isJumpEnabled = false; this.speed = speed; this.objectName = object.name; this.rotateByPointer = function(object) { object.rotation.x -= pointerXdiff(); object.rotation.y += pointerYdiff(); if (object.rotation.y > 89) { object.rotation.y = 89; } else if (object.rotation.y < -89) { object.rotation.y = -89; } }; this.moveByKeys = function(object) { if (isKeyPressed("leftKey")) { translateCamera(object, -this.speed, 0, 0); } else if (isKeyPressed("rightKey")) { translateCamera(object, this.speed, 0, 0); } if (isKeyPressed("upKey")) { translateCamera(object, 0, 0, this.speed); } else if (isKeyPressed("downKey")) { translateCamera(object, 0, 0, -this.speed); } else if (this.isJumpEnabled && isKeyPressed("jumpKey")) { translateCamera(object, 0, this.speed, 0); } }; this.step = function() { var object = getObject("camera"); this.rotateByPointer(object); this.moveByKeys(object); updateObject(object); }; }; function translateCamera(object, x, y, z) { var position = object.position; var rotation = object.rotation; var yaw = radians(-90 - rotation.x); var pitch = radians(-rotation.y); var front = new Vector(); front.x = Math.cos(pitch) * Math.cos(yaw); front.y = Math.sin(pitch); front.z = Math.cos(pitch) * Math.sin(yaw); var cameraUp = newVector(0.0, 1.0, 0.0); var right = normalizeVector(crossVectors(front, cameraUp)); var cameraFront = normalizeVector(front); var a = multipyVectorScalar(cameraFront, z); var b = multipyVectorScalar(right, x); var positionDiff = sumVectors(a, b); var targetPosition = sumVectors(position, positionDiff); targetPosition.y += y; position.x = targetPosition.x; position.y = targetPosition.y; position.z = targetPosition.z; }; function radians(angle) { return angle * 0.0174533; }; function Vector() { this.x = 0; this.y = 0; this.z = 0; this.printout = function() { print("x = " + this.x + "; y = " + this.y + "; z = " + this.z); }; }; function newVector(x, y, z) { var vector = new Vector(); vector.x = x; vector.y = y; vector.z = z; return vector; }; function newVectorFromCopy(vector) { return newVector(vector.x, vector.y, vector.z); }; function sumVectors(lhs, rhs) { var vector = new Vector(); vector.x = lhs.x + rhs.x; vector.y = lhs.y + rhs.y; vector.z = lhs.z + rhs.z; return vector; }; function multipyVectorScalar(vector, scalar) { var vectorCopy = newVectorFromCopy(vector); vectorCopy.x = vectorCopy.x * scalar; vectorCopy.y = vectorCopy.y * scalar; vectorCopy.z = vectorCopy.z * scalar; return vectorCopy; }; function normalizeVector(vector) { var vectorCopy = vector; var w = Math.sqrt(vectorCopy.x * vectorCopy.x + vectorCopy.y * vectorCopy.y + vectorCopy.z * vectorCopy.z); vectorCopy.x = vectorCopy.x / w; vectorCopy.y = vectorCopy.y / w; vectorCopy.z = vectorCopy.z / w; return vectorCopy; }; function crossVectors(lhsVector, rhsVector) { var outputVector = new Object(); outputVector.x = lhsVector.y * rhsVector.z - lhsVector.z * rhsVector.y; outputVector.y = lhsVector.z * rhsVector.x - lhsVector.x * rhsVector.z; outputVector.z = lhsVector.x * rhsVector.y - lhsVector.y * rhsVector.x; return outputVector; }; var controlsByMouse = false; if (initialized != true) { initialized = true; addDefaultCamera(); var cube = createObject(); cube.name = "cube"; cube.modelPath = "com.demensdeum.flamesteelengine.cube.fsglmodel"; cube.position = new Vector(); cube.position.x = 0; cube.position.y = 0; cube.position.z = -6; addObject(cube); if (controlsByMouse) { enablePointerLock(); } else { disablePointerLock(); } freeViewManager = new FreeViewManager(getObject("camera"), 0.1); freeViewManager.isJumpEnabled = true; addText("Flame Steel Engine Runner"); addButton("Rotate!", "rotate"); }; if (controlsByMouse) { freeViewManager.step(); } else { var camera = getObject("camera"); camera.position.z -= 0.01; //print(camera.position.z); if (camera.position.z < -4) { camera.rotation.x += 0.1; camera.position.z = 0; } updateObject(camera); } var cube = getObject("cube"); cube.rotation.y += 0.05; if (isButtonPressed("rotate")) { cube.rotation.x += 2; } updateObject(cube);
Upload files
Run
Loading...