Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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;
        }