Ejemplo n.º 1
0
        public void ConfirmNewStep(Vertex[] tempbuffer)
        {
            if (stepsUndone.Count > 0)
            {
                stepsUndone.Clear();
            }
            if (stepsDone.Count >= 50)
            {
                stepsDone.RemoveAt(0);
            }
            switch (currentStepType)
            {
            case EditingStep.StepType.none:
                return;

            case EditingStep.StepType.vertices:
                if (prevTempBuffer == null)
                {
                    return;
                }
                if (tempbuffer == null)
                {
                    prevTempBuffer = null;
                    return;
                }
                stepsDone.Add(new EditingStep(prevTempBuffer, tempbuffer));
                break;

            case EditingStep.StepType.position:
                var step = new EditingStep(prevTempPos, obj.m_position);
                step.axisUsed = axisUsed;
                stepsDone.Add(step);
                break;

            case EditingStep.StepType.rotation:
                stepsDone.Add(new EditingStep(prevTempRot, obj.m_rotation));
                break;

            case EditingStep.StepType.moveTo:
                stepsDone.Add(new EditingStep(prevTempPos, obj.m_position, prevTempRot, obj.m_rotation));
                break;

            case EditingStep.StepType.mirrorX:
            case EditingStep.StepType.mirrorY:
            case EditingStep.StepType.mirrorZ:
                stepsDone.Add(new EditingStep(currentStepType));
                break;

            case EditingStep.StepType.stretchX:
            case EditingStep.StepType.stretchY:
            case EditingStep.StepType.stretchZ:
                stepsDone.Add(new EditingStep(currentStepType, currentStretchFactor));
                break;
            }
            prevTempBuffer       = null;
            currentStretchFactor = 1f;
            currentStepType      = EditingStep.StepType.none;
            axisUsed             = AxisEditionState.none;
        }
 public void InitializeNewStep(EditingStep.StepType type, float stretchFactor) // for stretching
 {
     if (currentStepType != EditingStep.StepType.none)                         // if already registering an action then don't overlap the other one, just make it one action.
     {
         return;
     }
     currentStepType      = type;
     currentStretchFactor = stretchFactor;
 }
        public void InitializeNewStep(EditingStep.StepType type, Vertex[] tempbuffer)
        {
            if (currentStepType != EditingStep.StepType.none) // if already registering an action then don't overlap the other one, just make it one action.
            {
                return;
            }
            switch (type)
            {
            case EditingStep.StepType.vertices:
                if (tempbuffer == null)
                {
                    return;
                }
                prevTempBuffer  = tempbuffer.CloneArray();
                currentStepType = type;
                break;

            case EditingStep.StepType.position:
                prevTempPos     = obj.m_position;
                currentStepType = type;
                break;

            case EditingStep.StepType.rotation:
                prevTempRot     = obj.m_rotation;
                currentStepType = type;
                break;

            case EditingStep.StepType.moveTo:
                prevTempRot     = obj.m_rotation;
                prevTempPos     = obj.m_position;
                currentStepType = type;
                break;

            case EditingStep.StepType.mirrorX:
            case EditingStep.StepType.mirrorY:
            case EditingStep.StepType.mirrorZ:
                currentStepType = type;
                break;
            }
        }