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; } }