1.0.0 • Published 10 years ago

voxel-control v1.0.0

Weekly downloads
14
License
MIT
Repository
github
Last release
10 years ago

voxel-control

manipulate voxel-physical objects using a state object. implements basic FPS controls. is a through stream of sorts -- it relies on voxel-engine to call control.tick(dt) to start producing events. it will buffer events when paused.

options

// default values are in terms of 1 voxel width
{ speed: Number(0.0032)                 // starting speed
, walkMaxSpeed: Number(0.0056)          // max walking speed
, runMaxSpeed: Number(0.0112)           // max running speed
, jumpMaxSpeed: Number(0.016)           // max jump speed
, jumpMaxTimer: Number(200)             // maximum amount of time jump will be applied in MS
, jumpSpeed: Number(0.004)              // starting jump speed
, jumpSpeedMove: Number(0.1)            // velocity modifier to use when moving laterally while in the middle of a jump
, accelTimer: Number(200)               // time to reach full speed on X/Y
, accelerationCurve: Function()         // function(current, max) -> [0-1]
                                        // defaults to a sin curve.
, airControl: Boolean(true)             // can player control direction without being on the ground?
, fireRate: Number(0)                   // MS between firing
, discreteFire: Boolean(false)          // does firing require mousedown -> mouseup, or can it be held?
, onfire: Function()                    // function(state) -> undefined
, rotationXMax: Number(33)              // maximum x rotation in a tick
, rotationYMax: Number(33)              // maximum y rotation in a tick
, rotationZMax: Number(33)              // maximum z rotation in a tick
, rotationMax: Number(33)               // maximum rotation in a tick -- other 
                                        // rotation maximums fallback to this value
, rotationXClamp: Number(Math.PI / 2)   // clamp x rotation to +/- this value
, rotationYClamp: Number(Infinity)      // clamp y rotation to this value
, rotationZClamp: Number(0)             // clamp z rotation to this value
, rotationScale: Number(0.002) }        // constant scale of rotation events, applied during tick

api

control(state, opts) -> Control

state is a state object (probably supplied by kb-controls).

opts is an object optionally containing any of the above.

Control#target(target?) -> target

target is the object to be manipulated. Assumed to have .acceleration, .velocity, and .atRestY() -> -1, 0, 1.

if a target is passed, set control to target that argument.

return the current target.

Control#tick(dt) -> undefined

advance the simulation. if there are any listeners for 'data', it will either buffer or emit a data event containing the control state at this tick.

interactStream.pipe(controls) -> controls

the interact module emits dx/dy/dz modifications from mouse movements / pointer lock; it can be piped to this stream.

license

MIT

1.0.0

10 years ago

0.0.9

10 years ago

0.0.8

11 years ago

0.0.7

11 years ago

0.0.6

11 years ago

0.0.5

11 years ago

0.0.4

11 years ago

0.0.3

11 years ago

0.0.1

11 years ago

0.0.0

11 years ago