void update_geometry(FScene s) { if (bUpdatePending == false && curve_timestamp == curve.Timestamp) { return; } if (curve.VertexCount < 2) { return; } update_vertices(s); int N = (curve.Closed) ? curve.VertexCount + 1 : curve.VertexCount; Vector3f[] vertices = new Vector3f[N]; for (int i = 0; i < N; ++i) { vertices[i] = (Vector3f)curve[i % curve.VertexCount]; } curveObject.SetVertices(vertices); float fWidth = VRUtil.EstimateStableCurveWidth(s, Frame3f.Identity, curve, SceneGraphConfig.DefaultSceneCurveVisualDegrees); if (fWidth > 0) { curveObject.SetLineWidth(fWidth); } bUpdatePending = false; curve_timestamp = curve.Timestamp; }
public static fPolylineGameObject CreatePolylineGO(string sName, List <Vector3f> vVertices, Colorf color, float fLineWidth) { GameObject go = new GameObject(sName); CurveRendererImplementation curveRen = CurveRendererSource.Build(); curveRen.initialize(go, new Colorf(Colorf.Black, 0.75f)); fPolylineGameObject fgo = new fPolylineGameObject(go, curveRen); fgo.SetColor(color); fgo.SetLineWidth(fLineWidth); fgo.SetVertices(vVertices); return(fgo); }
public static fPolylineGameObject CreatePolylineGO(string sName, List <Vector3f> vVertices, fMaterial material, bool bSharedMaterial, float fLineWidth, LineWidthType widthType) { GameObject go = new GameObject(sName); CurveRendererImplementation curveRen = CurveRendererSource.Build(widthType); curveRen.initialize(go, material, bSharedMaterial); fPolylineGameObject fgo = new fPolylineGameObject(go, curveRen); fgo.SetLineWidth(fLineWidth); if (vVertices != null) { fgo.SetVertices(vVertices); } return(fgo); }
void update_geometry(FScene s) { if (bUpdatePending == false && curve_timestamp == curve.Timestamp) { return; } if (curve.VertexCount < 2) { return; } update_vertices(s); verticesf.Clear(); buffer.Clear(); for (int i = 0; i < curve.VertexCount; ++i) { buffer.Add(curve[i % curve.VertexCount]); } if (CurveProcessorF != null) { CurveProcessorF(buffer); } int Nmod = buffer.Count; int N = (curve.Closed) ? buffer.Count + 1 : buffer.Count; for (int i = 0; i < N; ++i) { verticesf.Add((Vector3f)buffer[i % Nmod]); } curveObject.SetVertices(verticesf); float fWidth = VRUtil.EstimateStableCurveWidth(s, Frame3f.Identity, curve, SceneGraphConfig.DefaultSceneCurveVisualDegrees); if (fWidth > 0) { curveObject.SetLineWidth(fWidth); } bUpdatePending = false; curve_timestamp = curve.Timestamp; }