public void CopyInto(IGameObject newObject) { //Copy components foreach (var component in AllComponents()) { var newComponent = componentFactory.GetComponent(component.ConcreteType); newObject.AddComponent(component.InterfaceType, newComponent); component.CopyInto(newComponent); } //Copy metadata and layer info foreach (var entry in metadata) { newObject.AddMetadata(entry.Key, entry.Value); } newObject.Layer = Layer; }