public static ArrowHelper Create(Renderer renderer, Vector3 dir, Vector3 origin, float length = 1, Color? color = null, float? headLength = null, float? headWidth = null) { var c = color.HasValue ? color.Value : new Color(0xffff00); if (lineGeometry == null) { lineGeometry = new Geometry(); lineGeometry.vertices.Add(Vector3.Zero); lineGeometry.vertices.Add(Vector3.UnitY); lineGeometry.vertexColors = new List<Color>() { c, c, }; } if (coneGeometry == null) { coneGeometry = new CylinderGeometry(0, 0.5f, 1, 5, 1); var m = Matrix4.MakeTranslation(0, -0.5f, 0); coneGeometry.Apply(m); } var arrowHelper = new ArrowHelper(); // dir is assumed to be normalized var head = headLength.HasValue ? headLength.Value : 0.2f * length; var width = headWidth.HasValue ? headWidth.Value : 0.2f * head; arrowHelper.Position = origin; arrowHelper.line = new Line(lineGeometry, new LineBasicMaterial(renderer) { Diffuse = c, VertexColors = Net.Renderers.VertexColorMode.Vertex }); arrowHelper.line.matrixAutoUpdate = false; arrowHelper.Add(arrowHelper.line); arrowHelper.cone = new Mesh(coneGeometry, new MeshBasicMaterial(renderer) { Diffuse = c }); arrowHelper.cone.matrixAutoUpdate = false; arrowHelper.Add(arrowHelper.cone); arrowHelper.SetDirection(dir.Normalized()); arrowHelper.SetLength(length, head, width); return arrowHelper; }
public static ArrowHelper Create(Renderer renderer, Vector3 dir, Vector3 origin, float length = 1, Color?color = null, float?headLength = null, float?headWidth = null) { var c = color.HasValue ? color.Value : new Color(0xffff00); if (lineGeometry == null) { lineGeometry = new Geometry(); lineGeometry.vertices.Add(Vector3.Zero); lineGeometry.vertices.Add(Vector3.UnitY); lineGeometry.vertexColors = new List <Color>() { c, c, }; } if (coneGeometry == null) { coneGeometry = new CylinderGeometry(0, 0.5f, 1, 5, 1); var m = Matrix4.MakeTranslation(0, -0.5f, 0); coneGeometry.Apply(m); } var arrowHelper = new ArrowHelper(); // dir is assumed to be normalized var head = headLength.HasValue ? headLength.Value : 0.2f * length; var width = headWidth.HasValue ? headWidth.Value : 0.2f * head; arrowHelper.Position = origin; arrowHelper.line = new Line(lineGeometry, new LineBasicMaterial(renderer) { Diffuse = c, VertexColors = Net.Renderers.VertexColorMode.Vertex }); arrowHelper.line.matrixAutoUpdate = false; arrowHelper.Add(arrowHelper.line); arrowHelper.cone = new Mesh(coneGeometry, new MeshBasicMaterial(renderer) { Diffuse = c }); arrowHelper.cone.matrixAutoUpdate = false; arrowHelper.Add(arrowHelper.cone); arrowHelper.SetDirection(dir.Normalized()); arrowHelper.SetLength(length, head, width); return(arrowHelper); }