static void DrawFalloffSphere(float radius, PolyLineProc& lp) { float u; Point3 pt[3]; lp.SetLineColor(GetUIColor(COLOR_SEL_GIZMOS)); // XY pt[0] = Point3(radius,0.0f,0.0f); for (int i=1; i<=NUM_SEGS; i++) { u = float(i)/float(NUM_SEGS) * TWOPI; pt[1].x = (float)cos(u) * radius; pt[1].y = (float)sin(u) * radius; pt[1].z = 0.0f; lp.proc(pt,2); pt[0] = pt[1]; } // YZ pt[0] = Point3(0.0f,radius,0.0f); for (int i=1; i<=NUM_SEGS; i++) { u = float(i)/float(NUM_SEGS) * TWOPI; pt[1].y = (float)cos(u) * radius; pt[1].z = (float)sin(u) * radius; pt[1].x = 0.0f; lp.proc(pt,2); pt[0] = pt[1]; } // ZX pt[0] = Point3(0.0f,0.0f,radius); for (int i=1; i<=NUM_SEGS; i++) { u = float(i)/float(NUM_SEGS) * TWOPI; pt[1].z = (float)cos(u) * radius; pt[1].x = (float)sin(u) * radius; pt[1].y = 0.0f; lp.proc(pt,2); pt[0] = pt[1]; } }
void MirrorMod::DrawGizmo(float size,PolyLineProc& lp) { Point3 v0(0,0,0), pv0(0,0,0), v1(0,0,0), pv1(0,0,0); int ct=0; int axis; pblock->GetValue(PB_AXIS,0,axis,FOREVER); switch (axis) { case 0: case 1: case 2: v0[axis] = -1.0f; pv0[(axis+1)%3] = 1.0f; pv0[(axis+2)%3] = 1.0f; ct=1; break; case 3: case 4: case 5: v0[(axis)%3] = -1.0f; pv0[(axis+1)%3] = 1.0f; pv0[(axis+2)%3] = 1.0f; v1[(axis+1)%3] = -1.0f; pv1[(axis+2)%3] = 1.0f; pv1[(axis+3)%3] = 1.0f; ct=2; break; } Point3 pts[20]; SetupAxisPoints(v0, pv0, size, pts); lp.proc(pts,5); lp.proc(pts+5,2); lp.proc(pts+7,3); lp.proc(pts+10,3); lp.proc(pts+13,3); lp.proc(pts+16,3); if (ct==2) { SetupAxisPoints(v1, pv1, size, pts); lp.proc(pts,5); lp.proc(pts+5,2); lp.proc(pts+7,3); lp.proc(pts+10,3); lp.proc(pts+13,3); lp.proc(pts+16,3); } }