Spread a virus in voxel.js
Spread a virus in voxel.js.
Might make a good base for a fire or water module as well ;)
// create a virusvar virus = require'voxel-virus'// pass a copy of the gamegame: game// which material index of virus// can use a material name instead, ie 'obsidian'// or false to not change the materialmaterial: 0// how fast in milliseconds to spreadrate: 3000// how many iterations before dying// set to 0 to never decay (and eventually crash your game)decay: 10// how virulent; between 0 and 1// 0 wont spread// 1 spreads to all surrounding blocksvirulence: 0.5// how it spreads// by default it will remove the block// and spread to surrounding blocksvar self = this;if selfdecay > 0 level++;selfgamesetBlockblock 0;selfaroundblockforEachselfinfectb level;;;// on fire, infect blockgameon'fire'var vec = gamecameraVector;var pos = gamecameraPosition;virusinfectgameraycastpos vec 100voxel;;// on tick, spread the virusgameon'tick' virustickbindvirus;
block to position of block
[0, 0, 0] to infect.
level is the
current number of iteration the infection is on.
To infect the block you're looking at:
gameon'fire'var vec = gamecameraVector;var pos = gamecameraPosition;virusinfectgameraycastpos vec 100voxel;;
Push the iterations forward. Needs to be added to the game tick to keep in time with the game simulation.
Returns block positions around the given
randomly not select blocks.
var around = virusaround0 0 0;// around equals an array of blocks up, down, left, right, front and back
An array of blocks that are currently infected with time or iteration prepended.
virusinfected =time blocktime block// ...;
With npm do:
npm install voxel-virus
Use browserify to
- 0.2.1 - update for firstname.lastname@example.org
- 0.2.0 - infect doesnt default to the block you're looking at
- 0.1.1 - update for email@example.com. infect doesnt ignore air voxels.
- 0.1.0 - initial release
Copyright (c) 2013 Kyle Robinson Young
Licensed under the MIT license.