public static void DrawSurfaceOutlines(LineMeshManager visibleLinesMeshManager, LineMeshManager invisibleLinesMeshManager, PolygonMeshManager visibleSurfaceMeshManager, GeometryWireframe[] outlines, Matrix4x4[] transformations, Color visibleInnerColor, Color visibleOuterColor, Color visibleOutlineColor, Color invisibleInnerColor, Color invisibleOuterColor, Color invisibleOutlineColor, Color surfaceColor, float thickness = GUIConstants.thickLineScale) { if (outlines == null) { return; } if (invisibleOutlineColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var transformation = transformations[i]; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleOuterLines, invisibleOutlineColor); } if (outline.invisibleOuterLines != null && outline.invisibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.invisibleOuterLines, invisibleOutlineColor); } if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleInnerLines, invisibleOutlineColor); } if (outline.invisibleInnerLines != null && outline.invisibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.invisibleInnerLines, invisibleOutlineColor); } } } if (invisibleInnerColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var transformation = transformations[i]; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleOuterLines, invisibleInnerColor, dashSize: visibleOuterLineDots); } if (outline.invisibleOuterLines != null && outline.invisibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.invisibleOuterLines, invisibleInnerColor, dashSize: invisibleOuterLineDots); } } } if (invisibleOuterColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var transformation = transformations[i]; if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleInnerLines, invisibleOuterColor, dashSize: visibleInnerLineDots); } if (outline.invisibleInnerLines != null && outline.invisibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.invisibleInnerLines, invisibleOuterColor, dashSize: invisibleInnerLineDots); } } } #if TEST_ENABLED for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; if (outline.invalidLines == null || outline.invalidLines.Length == 0) { continue; } var transformation = transformations[i]; invisibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.invalidLines, Color.red, dashSize: invalidLineDots); } #endif if (visibleOutlineColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var transformation = transformations[i]; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length != 0) { visibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleOuterLines, visibleOutlineColor, thickness: thickness + 2.0f); } if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length != 0) { visibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleInnerLines, visibleOutlineColor, thickness: thickness + 2.0f); } } } if (visibleOuterColor.a >= kMinAlpha || visibleInnerColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var transformation = transformations[i]; if (visibleInnerColor.a >= kMinAlpha && outline.visibleOuterLines != null && outline.visibleOuterLines.Length != 0) { visibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleOuterLines, visibleInnerColor, thickness: thickness * 0.5f); } if (visibleOuterColor.a >= kMinAlpha && outline.visibleInnerLines != null && outline.visibleInnerLines.Length != 0) { visibleLinesMeshManager.DrawLines(transformation, outline.vertices, outline.visibleInnerLines, visibleOuterColor, thickness: thickness * 0.5f); } } } if (surfaceColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; if (outline.visibleTriangles == null || outline.visibleTriangles.Length == 0) { continue; } var transformation = transformations[i]; visibleSurfaceMeshManager.DrawTriangles(transformation, outline.vertices, outline.visibleTriangles, surfaceColor); } } }
public static void DrawTexGenOutlines(LineMeshManager visibleLinesMeshManager, LineMeshManager invisibleLinesMeshManager, PolygonMeshManager visibleSurfaceMeshManager, GeometryWireframe[] outlines, Vector3[] translations, //Int32 brushID, Shape shape, Vector3 translation, int texGenID, Color visibleInnerColor, Color visibleOuterColor, Color visibleOutlineColor, Color invisibleInnerColor, Color invisibleOuterColor, Color invisibleOutlineColor, Color surfaceColor, float thickness = ToolConstants.thickLineScale) { if (outlines == null) { return; } var translationMatrix = MathConstants.identityMatrix; if (invisibleOutlineColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleOuterLines, invisibleOutlineColor); } if (outline.invisibleOuterLines != null && outline.invisibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.invisibleOuterLines, invisibleOutlineColor); } if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleInnerLines, invisibleOutlineColor); } if (outline.invisibleInnerLines != null && outline.invisibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.invisibleInnerLines, invisibleOutlineColor); } } } if (invisibleInnerColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleOuterLines, invisibleInnerColor, dashSize: visibleOuterLineDots); } if (outline.invisibleOuterLines != null && outline.invisibleOuterLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.invisibleOuterLines, invisibleInnerColor, dashSize: invisibleOuterLineDots); } } } if (invisibleOuterColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleInnerLines, invisibleOuterColor, dashSize: visibleInnerLineDots); } if (outline.invisibleInnerLines != null && outline.invisibleInnerLines.Length > 0) { invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.invisibleInnerLines, invisibleOuterColor, dashSize: invisibleInnerLineDots); } } } for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; if (outline.invalidLines == null || outline.invalidLines.Length == 0) { continue; } var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; invisibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.invalidLines, Color.red, dashSize: invalidLineDots); } if (visibleOutlineColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; if (outline.visibleOuterLines != null && outline.visibleOuterLines.Length != 0) { visibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleOuterLines, visibleOutlineColor, thickness: thickness + 2.0f); } if (outline.visibleInnerLines != null && outline.visibleInnerLines.Length != 0) { visibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleInnerLines, visibleOutlineColor, thickness: thickness + 2.0f); } } } if (visibleOuterColor.a >= kMinAlpha || visibleInnerColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; if (visibleInnerColor.a >= kMinAlpha && outline.visibleOuterLines != null && outline.visibleOuterLines.Length != 0) { visibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleOuterLines, visibleInnerColor, thickness: thickness * 0.5f); } if (visibleOuterColor.a >= kMinAlpha && outline.visibleInnerLines != null && outline.visibleInnerLines.Length != 0) { visibleLinesMeshManager.DrawLines(translationMatrix, outline.vertices, outline.visibleInnerLines, visibleOuterColor, thickness: thickness * 0.5f); } } } if (surfaceColor.a >= kMinAlpha) { for (int i = 0; i < outlines.Length; i++) { var outline = outlines[i]; if (outline.visibleTriangles == null || outline.visibleTriangles.Length == 0) { continue; } var translation = translations[i]; translationMatrix.m03 = translation.x; translationMatrix.m13 = translation.y; translationMatrix.m23 = translation.z; visibleSurfaceMeshManager.DrawTriangles(translationMatrix, outline.vertices, outline.visibleTriangles, surfaceColor); } } }