@@ -760,40 +760,34 @@ def ensure_tri_modifier(self, b_obj):
760760 else :
761761 b_obj .modifiers .new ('Triangulate' , 'TRIANGULATE' )
762762
763- def add_defined_tangents (self , trishape , tangents , bitangents , as_extra_data ):
763+ def add_defined_tangents (self , n_geom , tangents , bitangents , as_extra_data ):
764764 # check if size of tangents and bitangents is equal to num_vertices
765- if not (len (tangents ) == len (bitangents ) == trishape .data .num_vertices ):
766- raise NifError (f'Number of tangents or bitangents does not agree with number of vertices in { trishape .name } ' )
765+ if not (len (tangents ) == len (bitangents ) == n_geom .data .num_vertices ):
766+ raise NifError (f'Number of tangents or bitangents does not agree with number of vertices in { n_geom .name } ' )
767767
768768 if as_extra_data :
769769 # if tangent space extra data already exists, use it
770770 # find possible extra data block
771- for extra in trishape .get_extra_datas ():
771+ extra_name = b'Tangent space (binormal & tangent vectors)'
772+ for extra in n_geom .get_extra_datas ():
772773 if isinstance (extra , NifFormat .NiBinaryExtraData ):
773- if extra .name == b'Tangent space (binormal & tangent vectors)' :
774+ if extra .name == extra_name :
774775 break
775776 else :
776- extra = None
777- if not extra :
778- # otherwise, create a new block and link it
777+ # create a new block and link it
779778 extra = NifFormat .NiBinaryExtraData ()
780- extra .name = b'Tangent space (binormal & tangent vectors)'
781- trishape .add_extra_data (extra )
782-
779+ extra .name = extra_name
780+ n_geom .add_extra_data (extra )
783781 # write the data
784782 extra .binary_data = np .concatenate ((tangents , bitangents ), axis = 0 ).astype ('<f' ).tobytes ()
785783 else :
786784 # set tangent space flag
787- trishape .data .extra_vectors_flags = 16
785+ n_geom .data .extra_vectors_flags = 16
788786 # XXX used to be 61440
789787 # XXX from Sid Meier's Railroad
790- trishape .data .tangents .update_size ()
791- trishape .data .bitangents .update_size ()
792- for vec , data_tans in zip (tangents , trishape .data .tangents ):
793- data_tans .x = vec [0 ]
794- data_tans .y = vec [1 ]
795- data_tans .z = vec [2 ]
796- for vec , data_bins in zip (bitangents , trishape .data .bitangents ):
797- data_bins .x = vec [0 ]
798- data_bins .y = vec [1 ]
799- data_bins .z = vec [2 ]
788+ n_geom .data .tangents .update_size ()
789+ for n_v , b_v in zip (n_geom .data .tangents , tangents ):
790+ n_v .x , n_v .y , n_v .z = b_v
791+ n_geom .data .bitangents .update_size ()
792+ for n_v , b_v in zip (n_geom .data .bitangents , bitangents ):
793+ n_v .x , n_v .y , n_v .z = b_v
0 commit comments