mediocre-blog/assets/viz/1/quil/middleware.js

118 lines
4.3 KiB
JavaScript
Raw Normal View History

2018-11-12 20:29:37 +00:00
// Compiled by ClojureScript 1.9.473 {}
goog.provide('quil.middleware');
goog.require('cljs.core');
goog.require('quil.middlewares.fun_mode');
goog.require('quil.middlewares.navigation_3d');
goog.require('quil.middlewares.navigation_2d');
/**
* Introduces function mode. Adds 'update' function which takes current
* state and returns new state. Makes all other functions (setup, draw,
* mouse-click, etc) state-aware. See wiki for more details.
*/
quil.middleware.fun_mode = (function quil$middleware$fun_mode(options){
return quil.middlewares.fun_mode.fun_mode.call(null,options);
});
/**
* Enables navigation in 3D space. Similar to how it is done in
* shooters: WASD navigation, space is go up, drag mouse to look around.
* This middleware requires fun-mode.
*
*
* Navigation
*
* * Drag mouse to look around. You can change settings to bind
* mouse-moved instead of mouse-dragged to look around. See
* customization info below.
*
* * Keyboard:
* * w - go forward
* * s - go backward
* * a - strafe left
* * d - strafe right
* * space - go up
* * z - go down, can't bind to ctrl, limitation of Processing
*
*
* Customization
*
* You can customize this middleware by providing map as
* :navigation-3d option in defsketch/sketch. Map can have following
* optional keys:
*
* :position - vector of 3 numbers, initial camera position. Default
* is the same as in 'camera' function.
*
* :straight - vector of 3 numbers, direction you'll be looking at.
* Default is [0 0 -1] (looking down).
*
* :up - vector of 3 numbers, 'up' direction. Default is [0 1 0].
*
* :pixels-in-360 - number, mouse sensitivity. Defines how many pixels
* you need to move/drag you mouse to rotate 360 degrees.
* The less the number the more sensitive is mouse.
* Default is 1000.
*
* :step-size - number, number of pixels you move on each key event (wasd).
* Default is 20.
*
* :rotate-on - keyword, either :mouse-dragged or :mouse-moved. Specifies
* on which mouse event camera should rotate. Default is
* :mouse-dragged.
*
*
* Accessing position information from sketch
*
* navigation-3d uses fun-mode under the hood so all position-related
* information is stored in the state map. It means that you can access in
* draw/update/any handler and modify it if you need to. Position
* information is a map which is stored under :navigation-3d key in the
* state map. Position consists of 3 values: :position, :straight and :up.
* See "Customization" section above for more details.
*
* Usage example:
*
* (q/defsketch my-sketch
* ...
* :middleware [m/fun-mode m/navigation-3d])
*
* See wiki article for more(?) details:
* https://github.com/quil/quil/wiki/Navigation-3D
*/
quil.middleware.navigation_3d = (function quil$middleware$navigation_3d(options){
return quil.middlewares.navigation_3d.navigation_3d.call(null,options);
});
/**
* Enables navigation over 2D sketch. Drag mouse to change the center of the
* sketch and mouse wheel controls zoom. This middleware requires fun-mode.
*
* Customization
*
* You can customize this middleware by providing map as
* :navigation-2d option in defsketch/sketch. Map can have following
* optional keys:
*
* :position - vector of 2 numbers, x and y - center of the screen.
* Default is width/2, height/2.
*
* :zoom - number indicating current zoom level. Default is 1.
*
* Accessing position information from sketch
*
* navigation-2d uses fun-mode under the hood so all position-related
* information is stored in the state map. It means that you can access in
* draw/update/any handler and modify it if you need to. Position
* information is a map which is stored under :navigation-2d key in the
* state map. Position consists of 2 values: :position and :zoom.
* See "Customization" section above for more details.
*
* Usage example:
*
* (q/defsketch my-sketch
* ...
* :middleware [m/fun-mode m/navigation-2d])
*/
quil.middleware.navigation_2d = (function quil$middleware$navigation_2d(options){
return quil.middlewares.navigation_2d.navigation_2d.call(null,options);
});
//# sourceMappingURL=middleware.js.map