Exemple #1
0
def _format_data(data_line, spaces=5, data_hex=True):
    """Takes a list or tuple of float numbers and return
    formatted line of hexadecimal values in a string."""
    data = ''
    if isinstance(data_line[0], float):
        if data_hex:
            for val in data_line:
                data = data + float_to_hex_string(val) + '  '
        else:
            for val in data_line:
                data = data + str(val) + ' '
        data = data.rstrip()
    elif isinstance(data_line[0], str):
        for val in data_line:
            data = data + '"' + val + '" '
        data = data.rstrip()
    else:
        if spaces == 0:
            for val in data_line:
                data = data + str(val) + ' '
        else:
            for val in data_line:
                data = data + str(val).ljust(spaces, ' ') + ' '
        data = data.rstrip()

    return data
Exemple #2
0
def _format_data(data_line, spaces=5, data_hex=True):
    """Takes a list or tuple of float numbers and return
    formatted line of hexadecimal values in a string."""
    data = ''
    if isinstance(data_line[0], float):
        if data_hex:
            for val in data_line:
                data = data + float_to_hex_string(val) + '  '
        else:
            for val in data_line:
                data = data + str(val) + ' '
        data = data.rstrip()
    elif isinstance(data_line[0], str):
        for val in data_line:
            data = data + '"' + val + '" '
        data = data.rstrip()
    else:
        if spaces == 0:
            for val in data_line:
                data = data + str(val) + ' '
        else:
            for val in data_line:
                data = data + str(val).ljust(spaces, ' ') + ' '
        data = data.rstrip()

    return data
Exemple #3
0
def _format_matrix(mat, ind, offset):
    str_mat = ""
    for line in mat:
        str_line = ""
        for val in line:
            str_line = str_line + " " + float_to_hex_string(val) + " "
        if str_mat == "":
            str_mat = str_line
        else:
            str_mat = str_mat + "\n" + ind + offset + str_line[:-1]
    return str_mat
Exemple #4
0
def _format_matrix(mat, ind, offset):
    str_mat = ""
    for line in mat:
        str_line = ""
        for val in line:
            str_line = str_line + " " + float_to_hex_string(val) + " "
        if str_mat == "":
            str_mat = str_line
        else:
            str_mat = str_mat + "\n" + ind + offset + str_line[:-1]
    return str_mat
Exemple #5
0
def _format_data(data_line, spaces=5, data_hex=True):
    """Takes a list or tuple of float numbers and return
    formatted line of hexadecimal values in a string."""
    data = ''
    if type(data_line[0]) is float:
        if data_hex:
            for val in data_line:
                data = data + float_to_hex_string(val) + '  '
        else:
            for val in data_line:
                data = data + str(val) + ' '
        data = data.rstrip()
    else:
        if spaces == 0:
            for val in data_line:
                data = data + str(val) + ' '
        else:
            for val in data_line:
                data = data + str(val).ljust(spaces, ' ') + ' '
        data = data[:-1]
    return data
Exemple #6
0
def _write_properties_and_data(fw, section, ind, print_info):
    """Takes a single section data and writes all its "properties"
    and "data" to the file."""
    for prop in section.props:
        # if type(prop[1]) == type(None):
        if prop[1] is None:
            fw('%s%s:\n' % (ind, prop[0]))
        # elif type(prop[1]) == type([]):
        elif isinstance(prop[1], type([])):
            if prop[1][0] == '&':
                fw('%s%s: %s\n' % (ind, prop[0], _format_data(prop[1][1])))
            elif prop[1][0] == '&&':
                if len(prop[1][1]) == 1:
                    fw('%s%s: ( %s )\n' % (ind, prop[0], prop[1][1][0]))
                else:
                    fw('%s%s: ( %s )\n' % (ind, prop[0], _format_data(prop[1][1])))
            elif prop[1][0] == 'i':
                fw('%s%s: ( %s )\n' % (ind, prop[0], _format_data(prop[1][1], 0, False)))
            elif prop[1][0] == 'ii':
                fw('%s%s: ( %s )\n' % (ind, prop[0], _format_data(prop[1][1], 0)))
            elif prop[1][0] == '#':
                fw('%s# %s\n' % (ind, prop[0]))
            else:
                fw('%s%s: %s\n' % (ind, prop[0], str(prop[1])[1:-1].replace(",", "").replace("'", "\"")))
        # elif type(prop[1]) == type("") and prop[1] not in (
        elif isinstance(prop[1], type("")) and prop[1] not in (
                "FLOAT", "FLOAT2", "FLOAT3", "FLOAT4", "FLOAT5", "FLOAT6", "FLOAT7", "FLOAT8", "FLOAT9", "FLOAT4x4", "INT", "INT2", "STRING"):
            if prop[0] == '#':
                fw('%s# %s\n' % (ind, prop[1]))
            elif prop[0] == '':
                fw('\n')
            else:
                fw('%s%s: "%s"\n' % (ind, prop[0], prop[1]))
        else:
            fw('%s%s: %s\n' % (ind, prop[0], prop[1]))
        if print_info:
            print('%sProp: %s' % (ind, prop))

    for data_line_i, data_line in enumerate(section.data):
        # print('-- data_line: %s' % str(data_line))
        formated_data_line = None
        # if len(data_line) > 1:
        if data_line[0] == "__bone__":
            formated_data_line = _format_bone(data_line, ind)
            fw('%s%s( %s\n%s   )\n' % (ind, str(data_line_i).ljust(6, ' '), formated_data_line, ind))
        elif data_line[0] == "__string__":
            fw('%s%s( "%s" )\n' % (ind, str(data_line_i).ljust(5, ' '), data_line[1]))
        elif data_line[0] == "__skin__":
            fw('%s%s( ( %s  %s  %s )\n' % (
                ind, str(data_line_i).ljust(6, ' '), float_to_hex_string(data_line[1][0][0]), float_to_hex_string(data_line[1][0][1]),
                float_to_hex_string(data_line[1][0][2])))

            weight_string = ""
            for i_i, i in enumerate(data_line[1][1]):
                if i_i == 0:
                    weight_string = weight_string + str(i[0]).ljust(5, ' ') + float_to_hex_string(i[1])
                else:
                    weight_string = weight_string + "   " + str(i[0]).ljust(5, ' ') + float_to_hex_string(i[1])

            clones_string = ""
            for i_i, i in enumerate(data_line[1][2]):
                if i_i + 1 == len(data_line[1][2]):
                    clones_string = clones_string + str(i[0]).ljust(5, ' ') + str(i[1])
                else:
                    clones_string = clones_string + str(i[0]).ljust(5, ' ') + str(i[1]).ljust(7, ' ')

            fw('%s%sWeights: %s%s\n' % (ind, 8 * " ", str(len(data_line[1][1])).ljust(7, ' '), weight_string))
            fw('%s%sClones: %s%s\n' % (ind, 8 * " ", str(len(data_line[1][2])).ljust(7, ' '), clones_string))
            fw('%s%s)\n' % (ind, 6 * " "))
        elif data_line[0] == "__matrix__":
            # print('MATRIX - data_line: %s' % str(data_line))
            anim_matrix = _format_matrix(data_line[1], ind, str(7 * " "))
            fw('%s%s( %s )\n' % (ind, str(data_line_i).ljust(5, ' '), anim_matrix))
        elif data_line[0] == "__time__":
            # print('TIME - data_line: %s' % str(data_line))
            fw('%s%s( %s )\n' % (ind, str(data_line_i).ljust(5, ' '), float_to_hex_string(data_line[1])))
        else:
            formated_data_line = _format_data(data_line)
            fw('%s%s( %s )\n' % (ind, str(data_line_i).ljust(5, ' '), formated_data_line))
        if print_info:
            print('%sdata: %s' % (ind, formated_data_line))
Exemple #7
0
def _write_properties_and_data(fw, section, ind, print_info):
    """Takes a single section data and writes all its "properties"
    and "data" to the file."""
    for prop in section.props:
        # if type(prop[1]) == type(None):
        if prop[1] is None:
            fw('%s%s:\n' % (ind, prop[0]))
        # elif type(prop[1]) == type([]):
        elif isinstance(prop[1], type([])):
            if prop[1][0] == '&':
                fw('%s%s: %s\n' % (ind, prop[0], _format_data(prop[1][1])))
            elif prop[1][0] == '&&':
                if len(prop[1][1]) == 1:
                    fw('%s%s: ( %s )\n' % (ind, prop[0], prop[1][1][0]))
                else:
                    fw('%s%s: ( %s )\n' %
                       (ind, prop[0], _format_data(prop[1][1])))
            elif prop[1][0] == 'i':
                fw('%s%s: ( %s )\n' %
                   (ind, prop[0], _format_data(prop[1][1], 0, False)))
            elif prop[1][0] == 'ii':
                fw('%s%s: ( %s )\n' %
                   (ind, prop[0], _format_data(prop[1][1], 0)))
            elif prop[1][0] == '#':
                fw('%s# %s\n' % (ind, prop[0]))
            else:
                fw('%s%s: %s\n' % (ind, prop[0], str(prop[1])[1:-1].replace(
                    ",", "").replace("'", "\"")))
        # elif type(prop[1]) == type("") and prop[1] not in (
        elif isinstance(prop[1], type("")) and prop[1] not in (
                "FLOAT", "FLOAT2", "FLOAT3", "FLOAT4", "FLOAT5", "FLOAT6",
                "FLOAT7", "FLOAT8", "FLOAT9", "FLOAT4x4", "INT", "INT2",
                "STRING"):
            if prop[0] == '#':
                fw('%s# %s\n' % (ind, prop[1]))
            elif prop[0] == '':
                fw('\n')
            else:
                fw('%s%s: "%s"\n' % (ind, prop[0], prop[1]))
        else:
            fw('%s%s: %s\n' % (ind, prop[0], prop[1]))
        if print_info:
            print('%sProp: %s' % (ind, prop))

    for data_line_i, data_line in enumerate(section.data):
        # print('-- data_line: %s' % str(data_line))
        formated_data_line = None
        # if len(data_line) > 1:
        if data_line[0] == "__bone__":
            formated_data_line = _format_bone(data_line, ind)
            fw('%s%s( %s\n%s   )\n' %
               (ind, str(data_line_i).ljust(6, ' '), formated_data_line, ind))
        elif data_line[0] == "__string__":
            fw('%s%s( "%s" )\n' %
               (ind, str(data_line_i).ljust(5, ' '), data_line[1]))
        elif data_line[0] == "__skin__":
            fw('%s%s( ( %s  %s  %s )\n' %
               (ind, str(data_line_i).ljust(
                   6, ' '), float_to_hex_string(data_line[1][0][0]),
                float_to_hex_string(data_line[1][0][1]),
                float_to_hex_string(data_line[1][0][2])))

            weight_string = ""
            for i_i, i in enumerate(data_line[1][1]):
                if i_i == 0:
                    weight_string = weight_string + str(i[0]).ljust(
                        5, ' ') + float_to_hex_string(i[1])
                else:
                    weight_string = weight_string + "   " + str(i[0]).ljust(
                        5, ' ') + float_to_hex_string(i[1])

            clones_string = ""
            for i_i, i in enumerate(data_line[1][2]):
                if i_i + 1 == len(data_line[1][2]):
                    clones_string = clones_string + str(i[0]).ljust(
                        5, ' ') + str(i[1])
                else:
                    clones_string = clones_string + str(i[0]).ljust(
                        5, ' ') + str(i[1]).ljust(7, ' ')

            fw('%s%sWeights: %s%s\n' % (ind, 8 * " ", str(len(
                data_line[1][1])).ljust(7, ' '), weight_string))
            fw('%s%sClones: %s%s\n' % (ind, 8 * " ", str(len(
                data_line[1][2])).ljust(7, ' '), clones_string))
            fw('%s%s)\n' % (ind, 6 * " "))
        elif data_line[0] == "__matrix__":
            # print('MATRIX - data_line: %s' % str(data_line))
            anim_matrix = _format_matrix(data_line[1], ind, str(7 * " "))
            fw('%s%s( %s )\n' %
               (ind, str(data_line_i).ljust(5, ' '), anim_matrix))
        elif data_line[0] == "__time__":
            # print('TIME - data_line: %s' % str(data_line))
            fw('%s%s( %s )\n' % (ind, str(data_line_i).ljust(
                5, ' '), float_to_hex_string(data_line[1])))
        else:
            formated_data_line = _format_data(data_line)
            fw('%s%s( %s )\n' %
               (ind, str(data_line_i).ljust(5, ' '), formated_data_line))
        if print_info:
            print('%sdata: %s' % (ind, formated_data_line))