public void DuplicateSnapped(SnappedPrimitive primitiveData, out NewPrimitive newPrimitive, out NewPrimitive clone) { newPrimitive = primitivesConverter.SnappedToNew(primitiveData); newPrimitive.UpdateCurvesGeometry(); sessionData.NewPrimitives.Add(newPrimitive); clone = primitivesConverter.NewToNew(newPrimitive, newPrimitive.GetType(), new Vector3D(0, 0, 0)); SelectPrimitive(newPrimitive); }
public void CycleDuplicates(NewPrimitive originalDuplicate, ref NewPrimitive currentDuplicate, Vector3D currentDragVector) { var targetTypes = primitivesConverter.GetTargetTypes(originalDuplicate); var currIndex = Array.IndexOf(targetTypes, currentDuplicate.GetType()); var nextIndex = (currIndex + 1) % targetTypes.Length; sessionData.NewPrimitives.Remove(currentDuplicate); currentDuplicate = primitivesConverter.NewToNew(originalDuplicate, targetTypes[nextIndex], currentDragVector); currentDuplicate.UpdateCurvesGeometry(); sessionData.NewPrimitives.Add(currentDuplicate); SelectPrimitive(currentDuplicate); }