function rotate_cam_cb(obj, id, pulse) { if (m_nla.is_play()) return; if (_cam_dist === null) return; var camobj = m_scs.get_active_camera(); var default_x = _canvas_elem.width / 2; var default_y = _canvas_elem.height / 2; m_cam.get_camera_angles(camobj, _vec2_tmp); var dx = (default_x - _mouse_x) / _canvas_elem.width * _cam_rot_fac; var dy = (default_y - _mouse_y) / _canvas_elem.height * _cam_rot_fac; var x = _default_cam_rot[0] - dx; var y = -_default_cam_rot[1] - dy; _vec3_tmp[0] = _cam_pivot[0] + _cam_dist * Math.sin(x); _vec3_tmp[1] = _cam_pivot[1] - _cam_dist * Math.cos(x); _vec3_tmp[2] = _cam_pivot[2] + _cam_dist * Math.sin(y); m_cam.static_set_look_at(camobj, _vec3_tmp, _cam_pivot); m_cam.correct_up(camobj); }
function intro_load_cb(data_id) { _hq_loaded = false; _button_clicked = false; _selected_obj = null; _mouse_x = _canvas_elem.width / 2; _mouse_y = _canvas_elem.height / 2; m_assets.enqueue([{id:"config", type:m_assets.AT_JSON, url:"js/intro_config.json"}], process_config); var camobj = m_scs.get_active_camera(); m_cam.get_camera_angles(camobj, _default_cam_rot); setTimeout(function() { var canvas_cont = m_cont.get_container(); canvas_cont.style.opacity = 1; }, 1000); if (!m_main.detect_mobile()) { var ray_test_cb = function(sens_obj, id, pulse) { var sens_val = m_ctl.get_sensor_value(sens_obj, id, 0); var payload = m_ctl.get_sensor_payload(sens_obj, id, 0); var obj = payload.obj_hit; _ray_id = payload.ray_test_id; if (!sens_val) { _selected_obj = null; return; } if (obj != _selected_obj) { _selected_obj = obj; var binfo = _buttons_info[obj.name]; if (binfo && binfo.speaker) m_sfx.play_def(binfo.speaker); } } var ray_sens = m_ctl.create_ray_sensor(camobj, _cam_from, _cam_to, "BUTTON", true, false, true); m_ctl.create_sensor_manifold(null, "BUTTON_HOVER", m_ctl.CT_CONTINUOUS, [ray_sens], function(s){return true}, ray_test_cb); _canvas_elem.addEventListener("mousedown", main_canvas_click, false); _canvas_elem.addEventListener("mousemove", main_canvas_mouse_move, false); setTimeout(function() { if (!_hq_loaded && !_button_clicked) load_HQ_elements(); }, 10000) } else _canvas_elem.addEventListener("touchstart", main_canvas_touch, false); }
function load_cb(data_id) { _mouse_x = _canvas_elem.width / 2; _mouse_y = _canvas_elem.height / 2; m_cam.get_camera_angles(m_scs.get_active_camera(), _default_cam_rot); m_assets.enqueue([["config", m_assets.AT_JSON, "js/intro_config.json"]], process_config, null); _canvas_elem.addEventListener("mousemove", main_canvas_mouse_move, false); _canvas_elem.addEventListener("mouseup", main_canvas_click, false); }
function rotation_cb(rot_x, rot_y) { m_phy.character_rotation_inc(_char_wrapper.phys_body, rot_x, 0); if (rot_y) { m_cam.eye_rotate(camobj, 0, rot_y); m_cam.get_camera_angles(camobj, _vec3_tmp); offset[2] = -dist * Math.cos(_vec3_tmp[1]); offset[1] = -dist * Math.sin(_vec3_tmp[1]); m_cons.append_semi_stiff_cam(camobj, _char_wrapper.target, offset, null, clamp_left, clamp_right, clamp_up, clamp_down); } }
function cam_rotate_cb(obj, id, pulse) { var angles = m_cam.get_camera_angles(obj, _vec2_tmp); var dist = m_cam.target_get_distance(obj); var elapsed = m_ctl.get_sensor_value(obj, id, 0); var hor_angle = elapsed * 0.1; if (angles[1] < _level_conf.VICT_CAM_VERT_ANGLE) var vert_angle = elapsed * 0.05; else var vert_angle = 0; m_cam.target_rotate(obj, hor_angle, vert_angle); if (dist > _level_conf.VICT_CAM_DIST) { dist -= elapsed; m_cam.target_set_distance(obj, dist); } }
var controller_cb = function(obj, id, pulse) { var w = m_ctl.get_sensor_value(obj, id, 0); var d = m_ctl.get_sensor_value(obj, id, 1); var s = m_ctl.get_sensor_value(obj, id, 2); var a = m_ctl.get_sensor_value(obj, id, 3); var r1 = m_ctl.get_sensor_value(obj, id, 4); var r2 = m_ctl.get_sensor_value(obj, id, 5); var l1 = m_ctl.get_sensor_value(obj, id, 6); var l2 = m_ctl.get_sensor_value(obj, id, 7); var left_vaxis = m_ctl.get_sensor_value(obj, id, 8); var left_haxis = m_ctl.get_sensor_value(obj, id, 9); var right_vaxis = m_ctl.get_sensor_value(obj, id, 10); var right_haxis = m_ctl.get_sensor_value(obj, id, 11); var elapsed = m_ctl.get_sensor_value(obj, id, 12); var time = m_ctl.get_sensor_value(obj, id, 13); var rot_value = elapsed * GAMEPAD_AXIS_ROTATION; var velocity = m_cam.get_velocities(obj, _velocity_tmp); if (w) _dest_y_trans += velocity.trans * COCKPIT_TRANS_FACTOR * elapsed; if (s) _dest_y_trans -= velocity.trans * COCKPIT_TRANS_FACTOR * elapsed; if (a) _dest_x_trans -= velocity.trans * COCKPIT_TRANS_FACTOR * elapsed; if (d) _dest_x_trans += velocity.trans * COCKPIT_TRANS_FACTOR * elapsed; if (r1 || r2 || l1 || l2) shoot(time); if (!is_hmd) { _dest_x_trans -= velocity.trans * COCKPIT_TRANS_FACTOR * elapsed * left_vaxis; _dest_y_trans += velocity.trans * COCKPIT_TRANS_FACTOR * elapsed * left_haxis; var cam_angles = m_cam.get_camera_angles(obj, _vec2_tmp); var vert_ang = cam_angles[1] - right_haxis * rot_value; var hor_ang = - right_vaxis * rot_value; m_cam.eye_rotate(obj, hor_ang, vert_ang, false, true); } }
function rotate_cam_cb(obj, id, pulse) { var camobj = m_scs.get_active_camera(); if (!m_cam.is_target_camera(camobj)) return; var elapsed = m_ctl.get_sensor_value(obj, id, 0); var default_x = _canvas_elem.width / 2; var default_y = _canvas_elem.height / 2; m_cam.get_camera_angles(camobj, _vec2_tmp); var c_width = _canvas_elem.width; var dx = (default_x - _mouse_x) / _canvas_elem.width * _cam_rot_fac; var dy = (default_y - _mouse_y) / _canvas_elem.height * _cam_rot_fac; var x = _default_cam_rot[0] - dx; var y = _default_cam_rot[1] - dy; m_cam.target_rotate(camobj, x, y, true, true); }