Exemplo n.º 1
0
    var start_animation_cb = function(obj, id, pulse) {
        var mclick_value = m_ctl.get_sensor_value(obj, id, 0);
        var tclick_value = m_ctl.get_sensor_value(obj, id, 1);
        var timeline = m_ctl.get_sensor_value(obj, id, 2);

        if (mclick_value || tclick_value) {
            var payload = mclick_value ?
                    m_ctl.get_sensor_payload(obj, id, 0):
                    m_ctl.get_sensor_payload(obj, id, 1);
            var canv_coords = m_cont.client_to_canvas_coords(
                    payload.coords[0], payload.coords[1],
                    _vec2_tmp);

            var obj = m_scs.pick_object(canv_coords[0], canv_coords[1]);

            if (obj) {
                var clicked_planet = get_planet_by_geom(obj);
                if (clicked_planet) {
                    // check second click on planet

                    if (clicked_planet.focused) {
                        _focusing = false;
                    } else {
                        _focusing = true;
                    }

                    // init sun data
                    _sun.start_time = timeline;
                    var sun_trans = m_trans.get_translation_rel(_sun.geom, _vec3_tmp);
                    _sun.start_trans_length = m_vec3.length(sun_trans);

                    // init orbit
                    _orbits.start_time = timeline;
                    _orbits.start_scale = m_trans.get_scale(_orbits.front);

                    // init data of planet animations
                    for (var i = 0; i < _planets.length; i++) {
                        var planet = _planets[i];

                        var trans = m_trans.get_translation_rel(planet.armature, _vec3_tmp);
                        if (_focusing) {
                            m_vec3.copy(trans, planet.original_trans);
                            if (planet.geom == obj) {
                                planet.focused = true;
                            } else {
                                planet.focused = false;
                            }
                        } else {
                            planet.focused = false;
                        }

                        planet.start_scale = m_trans.get_scale(planet.armature);
                        planet.start_time = timeline;
                        planet.start_trans_length = m_vec3.length(trans);
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
    /**
    * Clones the "Shrub" object to designates empty objects
    */
    function setup_plants(){
      for (var i = 0; i < shrub_empties.length; i++) {
        var empty = shrub_empties[i];
        var emptyLocation = m_trans.get_translation(empty);
        var emptyRotation = m_trans.get_rotation(empty);
        var emptyScale = m_trans.get_scale(empty);

        var currentObject = m_obj.copy(shrub, "Shrub"+i, false);

        m_trans.set_translation(currentObject, emptyLocation[0],emptyLocation[1],emptyLocation[2]);
        m_trans.set_rotation(currentObject, emptyRotation[0], emptyRotation[1], emptyRotation[2], emptyRotation[3]);
        m_trans.set_scale(currentObject, emptyScale);

        m_scene.append_object(currentObject);
      }
    }