Advertisement
Guest User

Untitled

a guest
Jan 14th, 2016
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2.  
  3. b4w.register("example_main", function(exports, require) {
  4.  
  5. var m_app   = require("app");
  6. var m_cons  = require("constraints");
  7. var m_ctl   = require("controls");
  8. var m_data  = require("data");
  9. var m_main  = require("main");
  10. var m_mouse = require("mouse");
  11. var m_phy   = require("physics");
  12. var m_scs   = require("scenes");
  13. var m_trans = require("transform");
  14.  
  15. exports.init = function() {
  16.     m_app.init({
  17.         canvas_container_id: "canvas3d",
  18.         callback: init_cb,
  19.         alpha: false
  20.     });
  21. }
  22.  
  23. function init_cb(canvas_elem, success) {
  24.  
  25.     if (!success) {
  26.         console.log("b4w init failure");
  27.         return;
  28.     }
  29.  
  30.     m_app.enable_controls(canvas_elem);
  31.  
  32.     window.addEventListener("resize", resize);
  33.  
  34.     load();
  35. }
  36.  
  37. function load() {
  38.     // cargamos el .json correspondiente:
  39.     m_data.load("first-person.json", load_cb);
  40. }
  41.  
  42. function load_cb(data_id) {
  43.     // activar el outliner al pasar por encima el raton:
  44.     m_mouse.enable_mouse_hover_outline();
  45.    
  46.     // make camera follow the character
  47.     var camobj = m_scs.get_active_camera();
  48.     var character = m_scs.get_first_character();
  49.     m_cons.append_stiff_trans(camobj, character, [0, 0.7, 0]);
  50.  
  51.     // enable rotation with mouse
  52.     var canvas_elem = m_main.get_canvas_elem();
  53.     canvas_elem.addEventListener("mouseup", function(e) {
  54.         m_mouse.request_pointerlock(canvas_elem);
  55.     }, false);
  56.  
  57.     setup_movement()
  58. }
  59.  
  60. function resize() {
  61.     m_app.resize_to_container();
  62. }
  63.  
  64. function setup_movement() {
  65.  
  66.     var key_a = m_ctl.create_keyboard_sensor(m_ctl.KEY_A);
  67.     var key_s = m_ctl.create_keyboard_sensor(m_ctl.KEY_S);
  68.     var key_d = m_ctl.create_keyboard_sensor(m_ctl.KEY_D);
  69.     var key_w = m_ctl.create_keyboard_sensor(m_ctl.KEY_W);
  70.     var key_space = m_ctl.create_keyboard_sensor(m_ctl.KEY_SPACE);
  71.     var key_shift = m_ctl.create_keyboard_sensor(m_ctl.KEY_SHIFT);
  72.  
  73.     var move_state = {
  74.         left_right: 0,
  75.         forw_back: 0
  76.     }
  77.  
  78.     var move_array = [key_w, key_s, key_a, key_d, key_shift];
  79.     var character = m_scs.get_first_character();
  80.  
  81.     var move_cb = function(obj, id, pulse) {
  82.         if (pulse == 1) {
  83.             switch (id) {
  84.             case "FORWARD":
  85.                 move_state.forw_back = 1;
  86.                 break;
  87.             case "BACKWARD":
  88.                 move_state.forw_back = -1;
  89.                 break;
  90.             case "LEFT":
  91.                 move_state.left_right = 1;
  92.                 break;
  93.             case "RIGHT":
  94.                 move_state.left_right = -1;
  95.                 break;
  96.             case "RUNNING":
  97.                 m_phy.set_character_move_type(obj, m_phy.CM_RUN);
  98.                 break;
  99.             }
  100.         } else {
  101.             switch (id) {
  102.             case "FORWARD":
  103.             case "BACKWARD":
  104.                 move_state.forw_back = 0;
  105.                 break;
  106.             case "LEFT":
  107.             case "RIGHT":
  108.                 move_state.left_right = 0;
  109.                 break;
  110.             case "RUNNING":
  111.                 m_phy.set_character_move_type(obj, m_phy.CM_WALK);
  112.                 break;
  113.             }
  114.         }
  115.  
  116.         m_phy.set_character_move_dir(obj, move_state.forw_back,
  117.                                           move_state.left_right);
  118.     };
  119.  
  120.     m_ctl.create_sensor_manifold(character, "FORWARD", m_ctl.CT_TRIGGER,
  121.             move_array, function(s) {return s[0]}, move_cb);
  122.     m_ctl.create_sensor_manifold(character, "BACKWARD", m_ctl.CT_TRIGGER,
  123.             move_array, function(s) {return s[1]}, move_cb);
  124.     m_ctl.create_sensor_manifold(character, "LEFT", m_ctl.CT_TRIGGER,
  125.             move_array, function(s) {return s[2]}, move_cb);
  126.     m_ctl.create_sensor_manifold(character, "RIGHT", m_ctl.CT_TRIGGER,
  127.             move_array, function(s) {return s[3]}, move_cb);
  128.  
  129.     var running_logic = function(s) {
  130.         return (s[0] || s[1] || s[2] || s[3]) && s[4];
  131.     }
  132.     m_ctl.create_sensor_manifold(character, "RUNNING", m_ctl.CT_TRIGGER,
  133.             move_array, running_logic, move_cb);
  134.  
  135.     var jump_cb = function(obj, id, pulse) {
  136.         m_phy.character_jump(obj);
  137.     }
  138.     m_ctl.create_sensor_manifold(character, "JUMP", m_ctl.CT_SHOT,
  139.             [key_space], null, jump_cb);
  140. }
  141.  
  142. });
  143.  
  144. b4w.require("example_main").init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement