Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/modules/bpy_types.py')
-rw-r--r--release/scripts/modules/bpy_types.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index 92dbd2dbd0e..c1a37d10961 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -21,11 +21,13 @@
from _bpy import types as bpy_types
import _bpy
-StructRNA = bpy_types.Struct.__bases__[0]
-StructMetaPropGroup = _bpy.StructMetaPropGroup
+StructRNA = bpy_types.bpy_struct
+StructMetaPropGroup = bpy_types.bpy_struct_meta_idprop
# StructRNA = bpy_types.Struct
bpy_types.BlendDataLibraries.load = _bpy._library_load
+bpy_types.BlendDataLibraries.write = _bpy._library_write
+bpy_types.BlendData.user_map = _bpy._rna_id_collection_user_map
class Context(StructRNA):
@@ -34,8 +36,10 @@ class Context(StructRNA):
def copy(self):
from types import BuiltinMethodType
new_context = {}
- generic_attrs = (list(StructRNA.__dict__.keys()) +
- ["bl_rna", "rna_type", "copy"])
+ generic_attrs = (
+ *StructRNA.__dict__.keys(),
+ "bl_rna", "rna_type", "copy",
+ )
for attr in dir(self):
if not (attr.startswith("_") or attr in generic_attrs):
value = getattr(self, attr)
@@ -205,7 +209,7 @@ class _GenericBone:
@property
def basename(self):
"""The name of this bone before any '.' character"""
- #return self.name.rsplit(".", 1)[0]
+ # return self.name.rsplit(".", 1)[0]
return self.name.split(".")[0]
@property
@@ -405,28 +409,24 @@ class Mesh(bpy_types.ID):
:type faces: iterable object
"""
+ from itertools import chain, islice, accumulate
+
+ face_lengths = tuple(map(len, faces))
+
self.vertices.add(len(vertices))
self.edges.add(len(edges))
- self.loops.add(sum((len(f) for f in faces)))
+ self.loops.add(sum(face_lengths))
self.polygons.add(len(faces))
- vertices_flat = [f for v in vertices for f in v]
- self.vertices.foreach_set("co", vertices_flat)
- del vertices_flat
-
- edges_flat = [i for e in edges for i in e]
- self.edges.foreach_set("vertices", edges_flat)
- del edges_flat
-
- # this is different in bmesh
- loop_index = 0
- for i, p in enumerate(self.polygons):
- f = faces[i]
- loop_len = len(f)
- p.loop_start = loop_index
- p.loop_total = loop_len
- p.vertices = f
- loop_index += loop_len
+ self.vertices.foreach_set("co", tuple(chain.from_iterable(vertices)))
+ self.edges.foreach_set("vertices", tuple(chain.from_iterable(edges)))
+
+ vertex_indices = tuple(chain.from_iterable(faces))
+ loop_starts = tuple(islice(chain([0], accumulate(face_lengths)), len(faces)))
+
+ self.polygons.foreach_set("loop_total", face_lengths)
+ self.polygons.foreach_set("loop_start", loop_starts)
+ self.polygons.foreach_set("vertices", vertex_indices)
# if no edges - calculate them
if faces and (not edges):