Example #1
0
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);
    } 

}
Example #2
0
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
    });
}
Example #3
0
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);
}
Example #4
0
/**
 * 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();
}
Example #5
0
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
    }
}
Example #6
0
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);
}
Example #7
0
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))
    }
}
Example #8
0
/**
 * 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");

}
Example #9
0
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);
    }
Example #11
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;
}
Example #12
0
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);
}
Example #13
0
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]);
}
Example #14
0
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);
}
Example #15
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);
}
Example #16
0
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);
}
Example #17
0
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";
    });
}
Example #18
0
 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);
     }
 }
Example #19
0
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);
    }
Example #21
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];
  }
}
Example #22
0
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));
    }
}
Example #23
0
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);
}
Example #24
0
/**
 * 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);
}
Example #25
0
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;
}
Example #26
0
 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);
Example #27
0
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;
}
Example #28
0
    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();
        };
    };
Example #29
0
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;
}
Example #30
0
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();
}