コード例 #1
0
    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);
    }
コード例 #2
0
    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);
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    public void CreateActionType(BuilderInWorldEntityAction action, ActionType type)
    {
        List <BuilderInWorldEntityAction> list = new List <BuilderInWorldEntityAction>();

        list.Add(action);
        CreateAction(list, type);
    }
コード例 #5
0
    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);
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    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);
    }
コード例 #8
0
    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);
    }
コード例 #9
0
    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);
    }
コード例 #10
0
    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);
    }
コード例 #11
0
    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);
    }