Skip to content

Instantly share code, notes, and snippets.

@NHQ
Created January 17, 2013 06:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NHQ/4554208 to your computer and use it in GitHub Desktop.
Save NHQ/4554208 to your computer and use it in GitHub Desktop.
var createDrone = require('../');
var createEngine = require('voxel-engine');
var createTerrain = require('voxel-perlin-terrain');
// create the game
var game = createEngine({
generateVoxelChunk: createTerrain({scaleFactor:10}),
chunkDistance: 2,
materials: ['obsidian', 'grass', 'dirt', 'plank'],
texturePath: './textures/'
});
var container = document.getElementById('container');
game.appendTo(container);
container.addEventListener('click', function() {
game.requestPointerLock(container);
});
// add some trees
var createTree = require('voxel-forest');
for (var i = 0; i < 20; i++) {
createTree(game, { bark: 4, leaves: 2 });
}
// ability to explode voxels
var explode = require('voxel-debris')(game);
game.on('mousedown', function (pos) {
if (erase) explode(pos);
else game.createBlock(pos, 1);
});
var erase = true;
function ctrlToggle (ev) { erase = !ev.ctrlKey }
window.addEventListener('keydown', ctrlToggle);
window.addEventListener('keyup', ctrlToggle);
// Handle entering a command
window.addEventListener('keyup', function(e) {
if (e.keyCode !== 13) return;
var el = document.getElementById('cmd');
if (document.activeElement === el) {
var res;
try {
if (el.value !== '') res = eval('drone.' + el.value);
} catch (err) {
res = err.message;
}
el.setAttribute('placeholder', res);
el.value = '';
el.blur();
} else {
el.focus();
}
});
// create a drone
var drone = window.drone = createDrone(game);
var item = drone.item();
item.mesh.position.set(0, 0, -300);
game.addItem(item);
// show the video monitor
drone.viewCamera();
// log navdata
//drone.on('navdata', console.log.bind(console));
// fly the drone
/*setTimeout(function() {
drone.takeoff();
setTimeout(function() {
drone.animateLeds('blinkGreenRed', 30, 10);
}, 2000);
return;
var cmds = [
'front', 'clockwise', 'front',
'back', 'clockwise', 'back',
'left', 'clockwise', 'left',
'right', 'clockwise', 'right',
];
var i = 0;
(function loop() {
if (i >= cmds.length) {
//drone.stop();
drone.land();
return;
}
var cmd = cmds[i++];
drone.stop();
console.log(cmd);
drone[cmd](0.5);
setTimeout(loop, cmd === 'clockwise' ? 2000 : 5000);
}());
}, 5000);*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment