public DCLBuilderInWorldEntity CreateCatalogItem(CatalogItem catalogItem, bool autoSelect = true, bool isFloor = false) { if (catalogItem.IsNFT() && BuilderInWorldNFTController.i.IsNFTInUse(catalogItem.id)) { return(null); } IsInsideTheLimits(catalogItem); //Note (Adrian): This is a workaround until the mapping is handle by kernel AddSceneMappings(catalogItem); Vector3 startPosition = biwModeController.GetModeCreationEntryPoint(); Vector3 editionPosition = biwModeController.GetCurrentEditionPosition(); DCLBuilderInWorldEntity entity = builderInWorldEntityHandler.CreateEmptyEntity(sceneToEdit, startPosition, editionPosition, false); entity.isFloor = isFloor; entity.SetRotation(Vector3.zero); if (!isFloor) { CreateLoadingObject(entity); } AddShape(catalogItem, entity); AddEntityNameComponent(catalogItem, entity); AddLockedComponent(entity); if (catalogItem.IsSmartItem()) { AddSmartItemComponent(entity); } if (catalogItem.IsVoxel()) { entity.isVoxel = true; } if (autoSelect) { builderInWorldEntityHandler.DeselectEntities(); builderInWorldEntityHandler.Select(entity.rootEntity); } entity.gameObject.transform.eulerAngles = Vector3.zero; biwModeController.CreatedEntity(entity); lastCatalogItemCreated = catalogItem; entity.OnShapeFinishLoading += OnShapeLoadFinish; builderInWorldEntityHandler.EntityListChanged(); builderInWorldEntityHandler.NotifyEntityIsCreated(entity.rootEntity); OnInputDone?.Invoke(); OnSceneObjectPlaced?.Invoke(); return(entity); }