@@ -19,6 +19,9 @@ import { DisorderedArray } from "./utils/DisorderedArray";
1919 * Entity, be used as components container.
2020 */
2121export class Entity extends EngineObject {
22+ /** @internal */
23+ static _tempComponentConstructors : ComponentConstructor [ ] = [ ] ;
24+
2225 /**
2326 * @internal
2427 */
@@ -508,7 +511,13 @@ export class Entity extends EngineObject {
508511 }
509512
510513 private _createCloneEntity ( ) : Entity {
511- const cloneEntity = new Entity ( this . engine , this . name ) ;
514+ const componentConstructors = Entity . _tempComponentConstructors ;
515+ const components = this . _components ;
516+ for ( let i = 0 , n = components . length ; i < n ; i ++ ) {
517+ componentConstructors [ i ] = components [ i ] . constructor as ComponentConstructor ;
518+ }
519+ const cloneEntity = new Entity ( this . engine , this . name , ...componentConstructors ) ;
520+ componentConstructors . length = 0 ;
512521 const templateResource = this . _templateResource ;
513522 if ( templateResource ) {
514523 cloneEntity . _templateResource = templateResource ;
@@ -521,10 +530,6 @@ export class Entity extends EngineObject {
521530 for ( let i = 0 , n = srcChildren . length ; i < n ; i ++ ) {
522531 cloneEntity . addChild ( srcChildren [ i ] . _createCloneEntity ( ) ) ;
523532 }
524- const components = this . _components ;
525- for ( let i = 0 , n = components . length ; i < n ; i ++ ) {
526- cloneEntity . addComponent ( < ComponentConstructor > components [ i ] . constructor ) ;
527- }
528533 return cloneEntity ;
529534 }
530535
0 commit comments