@@ -0,0 +1,1635 @@
+package com.haxademic.demo.draw.shapes;%0A%0Aimport com.haxademic.core.app.P;%0Aimport com.haxademic.core.app.PAppletHax;%0Aimport com.haxademic.core.draw.context.DrawUtil;%0Aimport com.haxademic.core.draw.shapes.Shapes;%0A%0Apublic class Demo_Shapes_drawDashedLine_Pyramid %0Aextends PAppletHax %7B%0A%09public static void main(String args%5B%5D) %7B PAppletHax.main(Thread.currentThread().getStackTrace()%5B1%5D.getClassName()); %7D%0A%0A%09public void drawApp() %7B%0A%09%09p.background(0);%0A%09%09p.stroke(255);%0A%09%09p.strokeWeight(1f + 4f * p.mousePercentX());%0A%09%09DrawUtil.setCenterScreen(p.g);%0A%09%09// p.ortho();%0A%09%09DrawUtil.basicCameraFromMouse(p.g);%0A%09%09%0A%09%09float dashLength = 25f + 10f * P.sin(p.frameCount * 0.01f);%0A%09%09%0A%09%09// base%0A%09%09float baseSize = 300f;%0A%09%09float baseSizeHalf = baseSize / 2f;%0A%09%09Shapes.drawDashedLine(p.g, -baseSizeHalf, 0, -baseSizeHalf, baseSizeHalf, 0, -baseSizeHalf, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, baseSizeHalf, 0, -baseSizeHalf, baseSizeHalf, 0, baseSizeHalf, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, baseSizeHalf, 0, baseSizeHalf, -baseSizeHalf, 0, baseSizeHalf, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, -baseSizeHalf, 0, baseSizeHalf, -baseSizeHalf, 0, -baseSizeHalf, dashLength, false);%0A%09%09%0A%09%09// cone%0A%09%09float coneHeight = 190;%0A%09%09Shapes.drawDashedLine(p.g, -baseSizeHalf, 0, -baseSizeHalf, 0, -coneHeight, 0, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, baseSizeHalf, 0, -baseSizeHalf, 0, -coneHeight, 0, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, baseSizeHalf, 0, baseSizeHalf, 0, -coneHeight, 0, dashLength, false);%0A%09%09Shapes.drawDashedLine(p.g, -baseSizeHalf, 0, baseSizeHalf, 0, -coneHeight, 0, dashLength, false);%0A%09%7D%0A%09%0A%7D

Add dashed line pyramid demo