コード例 #1
0
    public void highLightRoad(Pair <Curve, float> c_offset)
    {
        GameObject    highlighter    = Instantiate(CurveRendererPrefab, transform);
        CurveRenderer renderer       = highlighter.GetComponent <CurveRenderer>();
        Material      normalMaterial = Resources.Load <Material>("Materials/Rolling");

        renderer.CreateMesh(c_offset.First, 0.3f, normalMaterial, offset: c_offset.Second, z_offset: 0.03f);
        highLighters.Add(c_offset, highlighter);
    }
コード例 #2
0
    void drawLinear3DObject(Curve curve, Linear3DObject obj)
    {
        float margin_0 = obj.margin_0;
        float margin_1 = obj.margin_1;

        if (Algebra.isclose(margin_0 + margin_1, curve.length))
        {
            return;
        }
        Debug.Assert(margin_0 >= 0 && margin_1 >= 0);

        /*
         * if (margin_0 + margin_1 >= curve.length){
         *  Debug.LogError(margin_0 + " ; " + margin_1 + " >= " + curve.length + " at: " + curve);
         * }
         */
        if (margin_0 + margin_1 > curve.length)
        {
            return;
        }

        if (curve.length > 0 && (margin_0 > 0 || margin_1 > 0))
        {
            curve = curve.cut(margin_0 / curve.length, 1f - margin_1 / curve.length);
        }
        if (obj.dashInterval == 0f)
        {
            GameObject rendins = Instantiate(rend, transform);
            rendins.transform.parent = this.transform;
            CurveRenderer decomp = rendins.GetComponent <CurveRenderer>();
            decomp.CreateMesh(curve, obj.offset, obj.linearMaterial, obj.crossMaterial, obj.cross_section);
        }
        else
        {
            Debug.Assert(obj.dashLength > 0f);
            List <Curve> dashed = curve.segmentation(obj.dashLength + obj.dashInterval);
            if (!Algebra.isclose(dashed.Last().length, dashLength + dashInterval))
            {
                dashed.RemoveAt(dashed.Count - 1);
            }
            foreach (Curve singledash in dashed)
            {
                List <Curve> vacant_and_dashed = singledash.split(obj.dashInterval / (obj.dashLength + obj.dashInterval));
                if (vacant_and_dashed.Count == 2)
                {
                    GameObject rendins = Instantiate(rend, transform);
                    rendins.transform.parent = this.transform;
                    CurveRenderer decomp = rendins.GetComponent <CurveRenderer>();
                    decomp.CreateMesh(vacant_and_dashed[1], obj.offset, obj.linearMaterial, obj.crossMaterial, obj.cross_section);
                }
            }
        }
    }
コード例 #3
0
    public void generate(Polygon polygon, float H, string materialconfig)
    {
        GameObject rendins = Instantiate(rend, transform);

        rendins.transform.parent = this.transform;
        CurveRenderer decomp = rendins.GetComponent <CurveRenderer>();

        switch (materialconfig)
        {
        default:
            decomp.CreateMesh(polygon, H, Resources.Load <Material>("Materials/roadsurface"));
            break;
        }
    }
コード例 #4
0
    void drawLinear2DObject(Curve curve, Linear2DObject sep)
    {
        float margin_0 = sep.margin_0;
        float margin_1 = sep.margin_1;

        if (Algebra.isclose(margin_0 + margin_1, curve.length))
        {
            return;
        }
        Debug.Assert(margin_0 + margin_1 < curve.length);
        if (margin_0 + margin_1 > curve.length)
        {
            return;
        }

        if (curve.length > 0 && (margin_0 > 0 || margin_1 > 0))
        {
            curve = curve.cut(margin_0 / curve.length, 1f - margin_1 / curve.length);
        }
        if (!sep.dashed)
        {
            GameObject    rendins = Instantiate(rend, transform);
            CurveRenderer decomp  = rendins.GetComponent <CurveRenderer> ();
            decomp.CreateMesh(curve, sep.width, sep.material, offset: sep.offset, z_offset: 0.02f);
        }
        else
        {
            List <Curve> dashed = curve.segmentation(dashLength + dashInterval);
            if (!Algebra.isclose(dashed.Last().length, dashLength + dashInterval))
            {
                dashed.RemoveAt(dashed.Count - 1);
            }
            foreach (Curve singledash in dashed)
            {
                List <Curve> vacant_and_dashed = singledash.split(dashInterval / (dashLength + dashInterval));

                if (vacant_and_dashed.Count == 2)
                {
                    GameObject    rendins = Instantiate(rend, transform);
                    CurveRenderer decomp  = rendins.GetComponent <CurveRenderer> ();
                    decomp.CreateMesh(vacant_and_dashed [1], sep.width, sep.material, offset: sep.offset, z_offset: 0.02f);
                }
            }
        }
    }