public void DuplicateSelectedEntities() { BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); buildAction.actionType = BuildInWorldCompleteAction.ActionType.CREATE; List <BuilderInWorldEntityAction> entityActionList = new List <BuilderInWorldEntityAction>(); List <DCLBuilderInWorldEntity> entitiesToDuplicate = new List <DCLBuilderInWorldEntity>(selectedEntities); DeselectEntities(); foreach (DCLBuilderInWorldEntity entityToDuplicate in entitiesToDuplicate) { if (entityToDuplicate.isNFT) { continue; } var entityDuplicated = DuplicateEntity(entityToDuplicate); BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entityDuplicated.rootEntity, entityDuplicated.rootEntity.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entityDuplicated.rootEntity)); entityActionList.Add(builderInWorldEntityAction); SelectEntity(entityDuplicated); } currentActiveMode?.SetDuplicationOffset(duplicateOffset); buildAction.CreateActionType(entityActionList, BuildInWorldCompleteAction.ActionType.CREATE); actionController.AddAction(buildAction); }
private void MouseUp(int buttonID, Vector3 position) { if (!mousePressed || buttonID != 0) { return; } if (isCreatingMultipleVoxels) { lastVoxelCreated.transform.SetParent(null); bool canVoxelsBeCreated = true; foreach (VoxelPrefab voxel in createdVoxels.Values) { if (!voxel.IsAvailable()) { canVoxelsBeCreated = false; break; } } BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); buildAction.actionType = BuildInWorldCompleteAction.ActionType.CREATE; List <BuilderInWorldEntityAction> entityActionList = new List <BuilderInWorldEntityAction>(); foreach (Vector3Int voxelPosition in createdVoxels.Keys) { if (canVoxelsBeCreated) { DecentralandEntity entity = builderInWorldEntityHandler.DuplicateEntity(lastVoxelCreated); entity.gameObject.tag = BuilderInWorldSettings.VOXEL_TAG; entity.gameObject.transform.position = voxelPosition; BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entity, entity.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entity)); entityActionList.Add(builderInWorldEntityAction); } Destroy(createdVoxels[voxelPosition].gameObject); } if (!canVoxelsBeCreated) { builderInWorldEntityHandler.DeleteEntity(lastVoxelCreated); } else { buildAction.CreateActionType(entityActionList, BuildInWorldCompleteAction.ActionType.CREATE); actionController.AddAction(buildAction); } createdVoxels.Clear(); builderInWorldEntityHandler.DeselectEntities(); lastVoxelCreated = null; isCreatingMultipleVoxels = false; mousePressed = false; freeCameraMovement.SetCameraCanMove(true); } }
public void DuplicateSelectedEntities() { BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); buildAction.actionType = BuildInWorldCompleteAction.ActionType.CREATE; List <BuilderInWorldEntityAction> entityActionList = new List <BuilderInWorldEntityAction>(); int amount = selectedEntities.Count; for (int i = 0; i < amount; i++) { if (selectedEntities[i].isNFT) { continue; } DecentralandEntity entityDuplicated = DuplicateEntity(selectedEntities[i]); BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entityDuplicated, entityDuplicated.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entityDuplicated)); entityActionList.Add(builderInWorldEntityAction); } currentActiveMode?.SetDuplicationOffset(duplicateOffset); Cursor.SetCursor(duplicateCursorTexture, Vector2.zero, CursorMode.Auto); buildAction.CreateActionType(entityActionList, BuildInWorldCompleteAction.ActionType.CREATE); actionController.AddAction(buildAction); }
public void CreateActionType(BuilderInWorldEntityAction action, ActionType type) { List <BuilderInWorldEntityAction> list = new List <BuilderInWorldEntityAction>(); list.Add(action); CreateAction(list, type); }
public void CreateChangeFloorAction(SceneObject oldFloor, SceneObject newFloor) { BuilderInWorldEntityAction action = new BuilderInWorldEntityAction(JsonConvert.SerializeObject(oldFloor), JsonConvert.SerializeObject(newFloor)); List <BuilderInWorldEntityAction> list = new List <BuilderInWorldEntityAction>(); list.Add(action); CreateAction(list, ActionType.CHANGE_FLOOR); }
public void CreateActionEntityCreated(DecentralandEntity entity) { BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entity, entity.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entity)); BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); buildAction.CreateActionType(builderInWorldEntityAction, ActionType.CREATE); AddAction(buildAction); }
public void CreateActionEntityDeleted(List <DCLBuilderInWorldEntity> entityList) { BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); List <BuilderInWorldEntityAction> entityActionList = new List <BuilderInWorldEntityAction>(); foreach (DCLBuilderInWorldEntity entity in entityList) { BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entity.rootEntity.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entity.rootEntity), entity.rootEntity.entityId); entityActionList.Add(builderInWorldEntityAction); } buildAction.CreateActionType(entityActionList, BuildInWorldCompleteAction.ActionType.DELETE); AddAction(buildAction); }
protected void TransformActionStarted(DecentralandEntity entity, string type) { BuilderInWorldEntityAction buildModeEntityAction = new BuilderInWorldEntityAction(entity); switch (type) { case "MOVE": buildModeEntityAction.oldValue = entity.gameObject.transform.position; break; case "ROTATE": buildModeEntityAction.oldValue = entity.gameObject.transform.rotation.eulerAngles; break; case "SCALE": buildModeEntityAction.oldValue = entity.gameObject.transform.lossyScale; break; } actionList.Add(buildModeEntityAction); }
public void UndoRedoScaleAction() { BuildInWorldCompleteAction buildModeAction = new BuildInWorldCompleteAction(); Vector3 oldScale = scene.entities[ENTITY_ID].gameObject.transform.localScale; Vector3 newScale = new Vector3(5, 5, 5); BuilderInWorldEntityAction entityAction = new BuilderInWorldEntityAction(ENTITY_ID); entityAction.oldValue = oldScale; entityAction.newValue = newScale; buildModeAction.CreateActionType(entityAction, BuildInWorldCompleteAction.ActionType.SCALE); scene.entities[ENTITY_ID].gameObject.transform.localScale = newScale; actionController.AddAction(buildModeAction); actionController.TryToUndoAction(); Assert.IsTrue(scene.entities[ENTITY_ID].gameObject.transform.localScale == oldScale); actionController.TryToRedoAction(); Assert.IsTrue(scene.entities[ENTITY_ID].gameObject.transform.localScale == newScale); }
public void UndoRedoRotateAction() { BuildInWorldCompleteAction buildModeAction = new BuildInWorldCompleteAction(); Vector3 oldRotation = scene.entities[ENTITY_ID].gameObject.transform.rotation.eulerAngles; Vector3 newRotation = new Vector3(5, 5, 5); BuilderInWorldEntityAction entityAction = new BuilderInWorldEntityAction(ENTITY_ID); entityAction.oldValue = oldRotation; entityAction.newValue = newRotation; buildModeAction.CreateActionType(entityAction, BuildInWorldCompleteAction.ActionType.ROTATE); scene.entities[ENTITY_ID].gameObject.transform.rotation = Quaternion.Euler(newRotation); actionController.AddAction(buildModeAction); actionController.TryToUndoAction(); Assert.IsTrue(scene.entities[ENTITY_ID].gameObject.transform.rotation.eulerAngles == oldRotation); actionController.TryToRedoAction(); Assert.IsTrue(scene.entities[ENTITY_ID].gameObject.transform.rotation.eulerAngles == newRotation); }
public void DuplicateSelectedEntities() { foreach (DCLBuilderInWorldEntity entity in selectedEntities) { if (!DCL.Environment.i.world.sceneBoundsChecker.IsEntityInsideSceneBoundaries(entity.rootEntity)) { return; } } BuildInWorldCompleteAction buildAction = new BuildInWorldCompleteAction(); buildAction.actionType = BuildInWorldCompleteAction.ActionType.CREATE; List <BuilderInWorldEntityAction> entityActionList = new List <BuilderInWorldEntityAction>(); int amount = selectedEntities.Count; for (int i = 0; i < amount; i++) { if (selectedEntities[i].isNFT) { continue; } DecentralandEntity entityDuplicated = DuplicateEntity(selectedEntities[i]); BuilderInWorldEntityAction builderInWorldEntityAction = new BuilderInWorldEntityAction(entityDuplicated, entityDuplicated.entityId, BuilderInWorldUtils.ConvertEntityToJSON(entityDuplicated)); entityActionList.Add(builderInWorldEntityAction); } currentActiveMode.SetDuplicationOffset(duplicateOffset); Cursor.SetCursor(duplicateCursorTexture, Vector2.zero, CursorMode.Auto); buildAction.CreateActionType(entityActionList, BuildInWorldCompleteAction.ActionType.CREATE); actionController.AddAction(buildAction); }