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); } } }
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); } }
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); } } }