diff --git a/packages/three_js_core/lib/objects/group.dart b/packages/three_js_core/lib/objects/group.dart index 4ef9a5d2..3cb11d29 100755 --- a/packages/three_js_core/lib/objects/group.dart +++ b/packages/three_js_core/lib/objects/group.dart @@ -30,4 +30,18 @@ class Group extends Object3D { Group.fromJson(Map json, Map rootJson):super.fromJson(json, rootJson) { type = 'Group'; } + + @override + Group clone ([bool? recursive = true]) { + return Group()..copy(this, recursive); + } + + @override + Group copy(Object3D source, [bool? recursive]) { + super.copy(source, recursive); + if(source is Group) { + this.userData = Map.from(source.userData); + } + return this; + } } diff --git a/packages/three_js_core/lib/objects/line.dart b/packages/three_js_core/lib/objects/line.dart index e1f80bc3..607014e5 100755 --- a/packages/three_js_core/lib/objects/line.dart +++ b/packages/three_js_core/lib/objects/line.dart @@ -55,8 +55,8 @@ class Line extends Object3D { Line copy(Object3D source, [bool? recursive]) { super.copy(source); - material = source.material; - geometry = source.geometry; + material = source.material?.clone(); + geometry = source.geometry?.clone(); return this; } diff --git a/packages/three_js_core/lib/objects/line_segments.dart b/packages/three_js_core/lib/objects/line_segments.dart index d4c12b27..cba6cd7a 100755 --- a/packages/three_js_core/lib/objects/line_segments.dart +++ b/packages/three_js_core/lib/objects/line_segments.dart @@ -56,4 +56,9 @@ class LineSegments extends Line { return this; } + + @override + LineSegments clone([bool? recursive = true]) { + return LineSegments(this.geometry)..copy(this, recursive); + } }