Exemple #1
0
function update_objects_dynamics(objects) {

    var anim_arms = [];

    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];

        if (obj._render && (obj._render.type == "DYNAMIC" ||
                obj._render.type == "CAMERA"))
            m_trans.update_transform(obj);

        // try to use default animation
        if (obj["b4w_use_default_animation"] && m_anim.is_animatable(obj)) {
            m_anim.apply_def(obj);
            m_anim.play(obj, null, m_anim.SLOT_ALL);

            if (obj.type == "ARMATURE")
                anim_arms.push(obj);
        }
    }

    // optimization
    if (!anim_arms.length)
        return;

    // auto apply armature default animation to meshes
    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];

        if (!m_util.is_mesh(obj))
            continue;

        for (var j = 0; j < anim_arms.length; j++) {
            var armobj = anim_arms[j];

            if (m_anim.get_first_armature_object(obj) != armobj)
                continue;

            var anim_name =
                m_anim.get_anim_by_slot_num(armobj, m_anim.SLOT_0);

            if (!anim_name)
                continue;

            var slot_num = m_anim.apply_to_first_empty_slot(obj, anim_name);
            var behavior = armobj["b4w_cyclic_animation"] ? m_anim.AB_CYCLIC :
                                                    m_anim.AB_FINISH_RESET;

            m_anim.set_behavior(obj, behavior, slot_num);
            m_anim.play(obj, null, slot_num);
        }
    }
}
Exemple #2
0
function process_event_start(obj, ev, frame, elapsed) {

    // subtract elapsed because play() occures before animation calcuations
    var init_anim_frame = ev.frame_offset - elapsed * cfg_ani.framerate;

    if (m_particles.has_particles(obj) && m_particles.has_anim_particles(obj)) {
        m_anim.apply_def(obj);
        m_anim.set_current_frame_float(obj, init_anim_frame);
        m_anim.play(obj);
    } else if (m_util.is_armature(obj) || m_util.is_mesh(obj) || m_cam.is_camera(obj)) {
        m_anim.apply(obj, ev.action);
        m_anim.set_current_frame_float(obj, init_anim_frame);
        m_anim.play(obj);
    } else if (m_sfx.is_speaker(obj)) {
        // TODO: speakers are special
        var when = 0;
        var duration = (ev.frame_end - frame) / cfg_ani.framerate;
        m_sfx.play(obj, when, duration);
    }
}
Exemple #3
0
function update_objects_dynamics(objects) {

    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];

        if (obj._render && (obj._render.type == "DYNAMIC" ||
                obj._render.type == "CAMERA"))
            m_trans.update_transform(obj);

        // try to use default animation
        if (obj["b4w_use_default_animation"] && m_anim.is_animatable(obj)) {
            m_anim.apply_def(obj);
            m_anim.play(obj, null, m_anim.SLOT_ALL);
        }
    }
}