def __get_override_current_frame_value(col, tab): value = None if tab in [const.SOLVER_TAB_BASIC_VALUE, const.SOLVER_TAB_STANDARD_VALUE]: value = lib_col_state.get_solver_range_type_from_collection(col) elif tab == const.SOLVER_TAB_LEGACY_VALUE: value = lib_col.get_override_current_frame_from_collection(col) else: raise ValueError('tab is not supported; tab=%r' % tab) return value
def getRangeTypeValue(self, col): value = lib_col_state.get_solver_range_type_from_collection(col) return value
def compile_collection(col, prog_fn=None): """ Compiles, checks and validates the collection, ready for a solve. :param col: Collection to execute. :type col: Collection :param prog_fn: Progress function that is called each time progress is made. The function should take a single 'int' argument, and the integer is expected to be a percentage value, between 0 and 100. :type prog_fn: None or function """ s = time.time() sol_list = [] solver_tab = col_state.get_solver_tab_from_collection(col) assert isinstance(solver_tab, (str, unicode)) if solver_tab == const.SOLVER_TAB_BASIC_VALUE: sol = mmapi.SolverBasic() range_type = col_state.get_solver_range_type_from_collection(col) if range_type == const.RANGE_TYPE_CURRENT_FRAME_VALUE: frame_num = lib_maya_utils.get_current_frame() frame = mmapi.Frame(frame_num) sol.set_use_single_frame(True) sol.set_single_frame(frame) sol_list.append(sol) else: by_frame = col_state.get_solver_increment_by_frame_from_collection( col) frame_string = col_state.get_solver_frames_from_collection(col) frame_nums = __compile_frame_list(range_type, frame_string, by_frame) frames = [mmapi.Frame(f) for f in frame_nums] sol.set_frame_list(frames) sol_list.append(sol) elif solver_tab == const.SOLVER_TAB_STANDARD_VALUE: sol = mmapi.SolverStandard() range_type = col_state.get_solver_range_type_from_collection(col) if range_type == const.RANGE_TYPE_CURRENT_FRAME_VALUE: frame_num = lib_maya_utils.get_current_frame() frame = mmapi.Frame(frame_num) sol.set_use_single_frame(True) sol.set_single_frame(frame) sol_list.append(sol) else: # Frame numbers by_frame = col_state.get_solver_increment_by_frame_from_collection( col) frame_string = col_state.get_solver_frames_from_collection(col) frame_nums = __compile_frame_list(range_type, frame_string, by_frame) # Root frame numbers root_frame_num_string = col_state.get_solver_root_frames_from_collection( col) if root_frame_num_string is None: start, end = utils_time.get_maya_timeline_range_inner() root_frame_num_string = '{0},{1}'.format(start, end) root_frame_nums = converttypes.stringToIntList( root_frame_num_string) frames = [ mmapi.Frame(f) for f in frame_nums if f not in root_frame_nums ] root_frames = [mmapi.Frame(f) for f in root_frame_nums] sol.set_root_frame_list(root_frames) sol.set_frame_list(frames) global_solve = col_state.get_solver_global_solve_from_collection( col) only_root = col_state.get_solver_only_root_frames_from_collection( col) sol.set_global_solve(global_solve) sol.set_only_root_frames(only_root) sol_list.append(sol) elif solver_tab.lower() == const.SOLVER_TAB_LEGACY_VALUE: step_list = get_solver_steps_from_collection(col) sol_list = compile_solvers_from_steps(col, step_list, prog_fn=prog_fn) else: msg = 'Solver tab value is invalid: %r' raise TypeError(msg % solver_tab) col.set_solver_list(sol_list) e = time.time() LOG.debug('Compile time (GUI): %r seconds', e - s) return