function main_canvas_up(e) { if (e.button != 0) return; if (e.preventDefault) e.preventDefault(); var x = m_mouse.get_coords_x(e); var y = m_mouse.get_coords_y(e); var obj = m_scenes.pick_object(x, y); if (obj) switch(m_scenes.get_object_name(obj)) { case "Cube": var target = m_scenes.get_object_by_name("Target_cube"); var eye = m_scenes.get_object_by_name("Eye_cube"); break; case "Cone": var target = m_scenes.get_object_by_name("Target_cone"); var eye = m_scenes.get_object_by_name("Eye_cone"); break; default: return; } if (eye && target) { var camobj = m_scenes.get_active_camera(); var pos_view = m_transform.get_translation(eye); var pos_target = m_transform.get_translation(target); start_camera_animation(camobj, pos_view, pos_target); } }
function draw_lines() { var line1 = m_scs.get_object_by_name("Line1"); var num_points = 200; var max_height = 10; var w = 30; var amp = 1; var positions1 = new Float32Array(3 * num_points); var positions2 = new Float32Array(3 * num_points); for (var i = 0; i < num_points; i++) { var t = i / num_points; positions1[3*i ] = amp * Math.cos(w*t + Math.PI); positions1[3*i+1] = max_height * t; positions1[3*i+2] = amp * Math.sin(w*t + Math.PI); positions2[3*i ] = amp * Math.cos(w*t); positions2[3*i+1] = max_height * t; positions2[3*i+2] = amp * Math.sin(w*t); } m_geom.draw_line(line1, positions1); m_mat.set_line_params(line1, { color: new Float32Array([1.0, 0.0, 0.0, 1.0]), width: 5 }); var line2 = m_scs.get_object_by_name("Line2"); m_geom.draw_line(line2, positions2, true); m_mat.set_line_params(line2, { color: new Float32Array([0.0, 0.0, 1.0, 1.0]), width: 5 }); }
function remove_some_copies() { var deep_copy = m_scs.get_object_by_name("deep_copy2"); var shallow_copy = m_scs.get_object_by_name("shallow_copy2"); m_scs.remove_object(deep_copy); m_scs.remove_object(shallow_copy); }
/** * callback executed when the scene is loaded */ function load_cb(data_id) { m_game_ui.close_load_screen(true); m_app.enable_controls(); m_app.enable_camera_controls(); // place your code here m_notifications.setupIcons(3); charTom = m_scenes.get_object_by_name("Tom_Office"); m_animation.apply(charTom,"Tom_EnterX_B4W_BAKED"); m_animation.set_behavior(charTom, m_animation.AB_FINISH_STOP); m_animation.play(charTom, function(){ m_animation.apply(charTom,"Tom_idleXX_B4W_BAKED"); m_animation.set_behavior(charTom, m_animation.AB_CYCLIC); m_animation.play(charTom); }); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Level_2"), "pointer"); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Exit"), "pointer"); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Plant"), "pointer"); var canvas = m_container.get_canvas(); canvas.addEventListener("mouseup", on_mouse_up); canvas.addEventListener("mousedown", on_mouse_down); if (m_main.is_paused()) m_main.resume(); m_game_ui.set_game_hidden(false); document.getElementById('mod_header').style.animationPlayState = 'running'; document.getElementById('quiz_wrapper').style.display = 'block'; start_quiz(); }
function init_orbits() { _orbits = { front: m_scs.get_object_by_name("orbits_front"), back: m_scs.get_object_by_name("orbits_back"), start_scale: 1, start_time: -Infinity } }
function demo_link_click(e) { m_data.activate_media(); var letters_arm = m_scs.get_object_by_name('beads_armature'); var spk = m_scs.get_object_by_name("Speaker"); m_sfx.play_def(spk); m_anim.apply(letters_arm, "flying_letters"); m_anim.play(letters_arm, letters_obj_cb); }
function init_sun() { var geom = m_scs.get_object_by_name("Sun_geom"); _sun = { geom: m_scs.get_object_by_name("Sun_geom"), crown_geom: m_scs.get_object_by_name("Sun_crown_geom"), lamp: m_scs.get_object_by_name("Lamp"), start_time: -Infinity, start_trans_length: 0, origin_trans: m_trans.get_translation_rel(geom, new Float32Array(3)) } }
/** * callback executed when the scene is loaded */ function load_cb(data_id) { m_app.enable_controls(); m_app.enable_camera_controls(); document.addEventListener( 'mousemove', onDocumentMouseMove, false ); shot.addEventListener( 'click', shotting, false ); LTCTRF = m_scs.get_object_by_name("LTCTRF"); LTCTRB = m_scs.get_object_by_name("LTCTRB"); MotoMain = m_scs.get_object_by_name("MotoMain"); }
function geometry_change(indices, positions) { var plane_blue = m_scs.get_object_by_name("Plane"); var plane_red = m_scs.get_object_by_name("Plane.002"); var indices = new Uint16Array([0,1,2,3,4,5]); var positions_blue = new Float32Array([0,1,0, -1,0,1, 1,0,-1, 1,0,-1, -1,0,1, 1,0,1]); var positions_red = new Float32Array([-9,1,-9, -10,0,-8, -8,0,-10, -8,0,-10, -10,0,-8, -8,0,-8]); m_geom.override_geometry(plane_blue, "Material", indices, positions_blue, false); m_geom.override_geometry(plane_red, "Material.002", indices, positions_red, false); // update object's boundings after mesh geometry changing m_obj.update_boundings(plane_blue); m_obj.update_boundings(plane_red); }
function MouseRot(event) { mouseX = event.clientX - windowHalfX; mouseY = event.clientY - windowHalfY; var rotAtoR = mouseX * (Math.PI/180) * 0.025; var TyreFL = m_scs.get_object_by_name("TyreFL"); var TyreFR = m_scs.get_object_by_name("TyreFR"); m_trans.set_rotation_euler(TyreFL, 0, rotAtoR, 0); m_trans.set_rotation_euler(TyreFR, 0, Math.PI + rotAtoR, 0); }
function create_planet(name) { var planet = { name: name, empty: m_scs.get_object_by_name(name + EMPTY_SUFF), geom: m_scs.get_object_by_name(name + GEOM_SUFF), empty_action: name + EMPTY_ACTION_SUFF, geom_action: name + GEOM_ACTION_SUFF, armature: m_scs.get_object_by_name(name + ARMATURE_SUFF), focused: false, start_time: -Infinity, start_scale: 1, original_trans: new Float32Array(3), start_trans_length: 1 } return planet; }
function load_cb(data_id) { m_app.enable_camera_controls(false, false, false, m_cont.get_canvas()); init_controls(); var spawner = m_scenes.get_object_by_name("spawner"); m_trans.get_translation(spawner, spawner_pos); }
function move_bone(delta_trans) { var bone_info = _bones_info[_controlled_bone]; var base_tsr = bone_info.base_tsr; var max_tsr = bone_info.max_tsr; var min_tsr = bone_info.min_tsr; var phy_objs = bone_info.phy_objs; var slider_val = bone_info.slider_value; var rig = m_scs.get_object_by_name("character_rig"); slider_val += delta_trans; slider_val = Math.min(slider_val, 1.0); slider_val = Math.max(slider_val, -1.0); bone_info.slider_value = slider_val; if (slider_val > 0.0) var tsr = max_tsr; else { var tsr = min_tsr; slider_val *= -1; } m_tsr.interpolate(base_tsr, tsr, slider_val, _tsr8_tmp); m_armat.set_bone_tsr_rel(rig, _controlled_bone, _tsr8_tmp); for (var i = 0; i < phy_objs.length; i++) m_phy.sync_transform(phy_objs[i]); }
function kill(golem_wrapper) { var golem = golem_wrapper.empty; var golem_death_empty = m_scs.get_object_by_name(m_conf.GOLEMS_DEATH_EMPTY); var golem_death = m_scs.get_object_by_dupli_name(m_conf.GOLEMS_DEATH_EMPTY, m_conf.GOLEMS_DEATH_RIG); var golem_death_blow = m_scs.get_object_by_dupli_name(m_conf.GOLEMS_DEATH_EMPTY, m_conf.GOLEMS_DEATH_BLOW); var trans = _vec3_tmp; var quat = _quat4_tmp; m_trans.get_translation(golem, trans); m_trans.get_rotation(golem, quat); m_trans.set_translation_v(golem_death_empty, trans); m_trans.set_rotation_v(golem_death_empty, quat); m_anim.apply(golem_death, "golem_death"); m_anim.set_behavior(golem_death, m_anim.AB_FINISH_STOP); m_anim.play(golem_death); m_anim.play(golem_death_blow); m_sfx.stop(golem_wrapper.walk_speaker); m_trans.set_translation_v(golem, m_conf.DEFAULT_POS); m_gems.spawn(trans); golem_wrapper.island_id = -1; golem_wrapper.hp = 100; set_state(golem_wrapper, m_conf.GS_NONE) m_obelisks.change_gems_num(golem_wrapper.island_id, 0); }
exports.init_spawn = function(elapsed_sensor) { var spawn_points = []; var spawn_quats = []; for (var i = 0; i < m_conf.GOLEM_SPAWN_POINTS.length; i++) { var spawn_obj = m_scs.get_object_by_name(m_conf.GOLEM_SPAWN_POINTS[i]); var spawn_pos = m_trans.get_translation(spawn_obj); var spawn_rot = m_trans.get_rotation(spawn_obj); spawn_points.push(spawn_pos); spawn_quats.push(spawn_rot); } function golems_spawn_cb(obj, id) { var golem_wrapper = get_first_free_golem(); if (!golem_wrapper) return; var elapsed = m_ctl.get_sensor_value(obj, id, 0); _golems_spawn_timer -= elapsed; if (_golems_spawn_timer <= 0) { _golems_spawn_timer = m_conf.GOLEMS_SPAWN_INTERVAL; var island_id = get_random_available_island(); if (island_id == null) // no available islands return; spawn(golem_wrapper, island_id, spawn_points, spawn_quats); } } m_ctl.create_sensor_manifold(null, "GOLEMS_SPAWN", m_ctl.CT_CONTINUOUS, [elapsed_sensor], null, golems_spawn_cb); }
function setup_random_bonus_spawn(level_conf) { var timer = m_ctl.create_timer_sensor(level_conf.BONUS_SPAWN_PERIOD, true); var sphere_empty = m_scs.get_object_by_name(level_conf.BONUS_SPAWN_SPHERE); var bonus_spawn_sphere = m_scs.get_object_by_dupli_name( level_conf.BONUS_SPAWN_SPHERE, level_conf.BONUS_SPAWN_SPHERE); m_anim.set_behavior(bonus_spawn_sphere, m_anim.AB_FINISH_RESET); m_anim.set_frame(bonus_spawn_sphere, 0); function ray_cb(id, fract, obj, time, pos, norm) { var spawned = m_bonuses.spawn(pos); if (spawned) { m_trans.set_translation_v(sphere_empty, pos); m_anim.play(bonus_spawn_sphere); } } function bonus_spawn_cb(obj, id, pulse) { var from = _vec3_tmp; var DIST = 20 from[0] = 2 * DIST * Math.random() - DIST; from[1] = 20; from[2] = 2 * DIST * Math.random() - DIST; var to = _vec3_tmp_2; _vec3_tmp_2[0] = from[0]; _vec3_tmp_2[2] = from[2]; _vec3_tmp_2[1] = -10; m_phy.append_ray_test_ext(null, from, to, "GROUND", ray_cb, true, false, true, false); } m_ctl.create_sensor_manifold(null, "BONUS_SPAWN", m_ctl.CT_SHOT, [timer], null, bonus_spawn_cb); }
function load_cb(data_id) { m_app.enable_controls(); m_app.enable_camera_controls(); // "Generic" anchor may be created (or replaced) anytime var cyl_text = document.createElement("span"); cyl_text.id = "cyl_anchor"; cyl_text.style.position = "absolute"; cyl_text.style.backgroundColor = "yellow"; cyl_text.style.color = "black"; cyl_text.style.padding = "5px"; cyl_text.innerHTML = "Cylinder (Generic)"; document.body.appendChild(cyl_text); var cyl_anchor = m_scs.get_object_by_name("CylAnchor"); m_anchors.attach_move_cb(cyl_anchor, function(x, y, appearance, obj, elem) { var anchor_elem = document.getElementById("cyl_anchor"); anchor_elem.style.left = x + "px"; anchor_elem.style.top = y + "px"; if (appearance == "visible") anchor_elem.style.visibility = "visible"; else anchor_elem.style.visibility = "hidden"; }); }
function reset_pos(bonus_array) { for (var i = 0; i < bonus_array.length; i++) { var empty_name = bonus_array[i]; var empty_obj = m_scs.get_object_by_name(empty_name); m_trans.set_translation_v(empty_obj, m_conf.DEFAULT_POS); } }
exports.init = function(elapsed_sensor) { _golems_spawn_timer = m_conf.GOLEMS_SPAWN_INTERVAL; for (var i = 0; i < m_conf.GOLEMS_EMPTIES.length; i++) { var empty_name = m_conf.GOLEMS_EMPTIES[i]; var golem_empty = m_scs.get_object_by_name(empty_name); var golem = m_scs.get_object_by_dupli_name(empty_name, "golem_collider"); var golem_rig = m_scs.get_object_by_dupli_name(empty_name, "golem_armature"); var golem_wrapper = init_golem_wrapper(golem, golem_rig, golem_empty); golem_wrapper.walk_speaker = m_scs.get_object_by_dupli_name(empty_name, m_conf.GOLEM_WALK_SPEAKER); golem_wrapper.attack_speaker = m_scs.get_object_by_dupli_name(empty_name, m_conf.GOLEM_ATTACK_SPEAKER); golem_wrapper.hit_speaker = m_scs.get_object_by_dupli_name(empty_name, m_conf.GOLEM_HIT_SPEAKER); golem_wrapper.getout_speaker = m_scs.get_object_by_dupli_name(empty_name, m_conf.GOLEM_GETOUT_SPEAKER); m_ctl.create_sensor_manifold(golem_wrapper, "GOLEM", m_ctl.CT_CONTINUOUS, [elapsed_sensor], null, golem_ai_cb); _golems_wrappers.push(golem_wrapper); } m_combat.set_enemies(_golems_wrappers); }
function tyreRot() { var rotAtoR = mouseX * (Math.PI/180) * 0.025; var curTime = Date.now(); console.log(curTime); var TyreFL = m_scs.get_object_by_name("TyreFL"); var TyreFR = m_scs.get_object_by_name("TyreFR"); m_trans.set_rotation_euler(TyreFL, curTime, rotAtoR, 0); m_trans.set_rotation_euler(TyreFR, curTime, Math.PI + rotAtoR, 0); }
exports.gobj = function(name) { if (game_objects[name] !== undefined) return game_objects[name]; else { game_objects[name] = m_scenes.get_object_by_name(name); return game_objects[name]; } }
function prepare_speakers(node, instance_id) { var inst = node.instances[instance_id]; inst.action.speakers = []; var sounds = node.payload.sound; for (var i in sounds) { inst.action.speakers.push(m_scenes.get_object_by_name(sounds[i].name)); } }
function load_cb(root) { var letters_arm = m_scs.get_object_by_name('beads_armature'); var run_button = document.getElementById("run_button"); m_anim.stop(letters_arm); run_button.addEventListener("mousedown", demo_link_click, false); }
/** * callback executed when the scene is loaded */ function load_cb(data_id) { m_game_ui.close_load_screen(true); m_app.enable_controls(); m_app.enable_camera_controls(); //m_cfg.set("enable_outlining",true); // place your code here m_notifications.setupIcons(4); charPizza = m_scenes.get_object_by_name("Pizza_Arm"); charSue = m_scenes.get_object_by_name("Sue_Office"); charWater = m_scenes.get_object_by_name("water_rig"); m_animation.apply(charSue,"dmt_sue_idle_B4W_BAKED"); m_animation.set_behavior(charSue, m_animation.AB_CYCLIC); m_animation.play(charSue); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Toaster"), "pointer"); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Counter_Basin"), "pointer"); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Pizza_Box"), "pointer"); m_scene_mouse.set_hover_cursor(m_scenes.get_object_by_name("Light_Switch"), "pointer"); var canvas = m_container.get_canvas(); canvas.addEventListener("mouseup", on_mouse_up); canvas.addEventListener("mousedown", on_mouse_down); m_line_speed.freeze(); if (qs["skip_intro"] == "1") end_cutscene(); else play_cutscene(true); }
function init_cockpit() { var cockpit = { cockpit_empty: m_scs.get_object_by_name("cockpit"), cockpit_mesh_obj: m_scs.get_object_by_dupli_name("cockpit", "cockpit"), camera_asteroids_obj: m_scs.get_object_by_name("Camera_asteroids"), laser_obj: m_scs.get_object_by_dupli_name("cockpit", "laser"), laser_arm: m_scs.get_object_by_dupli_name("cockpit", "laser_arm"), lighting: m_scs.get_object_by_name("lighting"), cockpit_light: m_scs.get_object_by_name("cockpit_light"), speaker_strike: m_scs.get_object_by_dupli_name("cockpit", "speaker_laser_strike"), speaker_alarm: m_scs.get_object_by_dupli_name("cockpit", "speaker_alarm"), speaker_ast_hit: m_scs.get_object_by_dupli_name("cockpit", "asteroid_hit"), crosshair_obj: m_scs.get_object_by_name("crosshair"), crosshair_base_obj: m_scs.get_object_by_name("crosshair_base"), environment_empty: m_scs.get_object_by_name("environment"), environment_tunnel_obj: m_scs.get_object_by_dupli_name("environment", "Circle"), environment_sphere_obj: m_scs.get_object_by_dupli_name("environment", "Sphere"), environment_arm: m_scs.get_object_by_dupli_name("environment", "environment_arm"), hp: COCKPIT_MAX_HP }; return cockpit; }
setTimeout(function(){ m_scenes.apply_outline_anim_def(m_scenes.get_object_by_name("Conveyor_Control.001")); setTimeout(function(){ m_scenes.apply_outline_anim_def(m_scenes.get_object_by_name("Motor_Gearbox_Lid")); setTimeout(function(){ m_scenes.apply_outline_anim_def(m_scenes.get_object_by_name("Isolator_Motor")); },1000); },1000); },1000);
function init_bonus_wrapper(empty_name, type, bonus_name) { var bonus_wrapper = { empty: m_scs.get_object_by_name(empty_name), body: m_scs.get_object_by_dupli_name(empty_name, bonus_name), lifetime: m_conf.BONUS_LIFETIME, type: type, is_spawned: false } return bonus_wrapper; }
var success_cb = function(local_media_stream) { var video = document.createElement("video"); video.setAttribute("autoplay", "true"); video.src = window.URL.createObjectURL(local_media_stream); var error_cap = m_scn.get_object_by_name("Text"); m_scn.hide_object(error_cap); var obj = m_scn.get_object_by_name("tv"); var context = m_tex.get_canvas_ctx(obj, "Texture.001"); var update_canvas = function() { context.drawImage(video, 0, 0, video.videoWidth, video.videoHeight, 0, 0, context.canvas.width, context.canvas.height); m_tex.update_canvas_ctx(obj, "Texture.001"); setTimeout(function() {update_canvas()}, TIME_DELAY); } video.onloadedmetadata = function(e) { update_canvas(); }; };
function init_bonus_wrapper(empty_name, type, bonus_name) { var empty = m_scs.get_object_by_name(empty_name); var body = m_scs.get_object_by_dupli_name(empty_name, bonus_name); var bonus_wrapper = { empty: empty, body: body, lifetime: m_conf.BONUS_LIFETIME, type: type } return bonus_wrapper; }
function load_cb(data_id, success) { if (!success) { console.log("b4w load failure"); return; } var error_cap = m_scn.get_object_by_name("Text"); m_app.enable_camera_controls(); if (Boolean(get_user_media())) start_video(); }