Exemplo n.º 1
0
        override protected void UpdateGeometry_internal()
        {
            // generate mesh tube
            TubeGenerator meshGen = new TubeGenerator()
            {
                Vertices = new List <Vector3d>(curve.Vertices), Capped = true,
                Polygon  = polygon,
                Frame    = new Frame3f(Vector3f.Zero, Vector3f.AxisY)
            };

            meshGen.Generate();
            Mesh newMesh = meshGen.MakeUnityMesh(false);

            meshGO.SetMesh(newMesh);

            // apparently this is expensive?
            if (DeferRebuild == false)
            {
                meshGO.GetComponent <MeshCollider>().sharedMesh = meshGO.GetComponent <MeshFilter>().sharedMesh;
            }

            // expand local bounds
            add_to_bounds(newMesh.bounds.min);
            add_to_bounds(newMesh.bounds.max);
        }
Exemplo n.º 2
0
        void update_geometry()
        {
            if (bUpdatePending == false && curve_timestamp == curve.Timestamp)
            {
                return;
            }
            if (curve.VertexCount < 2)
            {
                return;
            }

            // generate mesh tube
            TubeGenerator meshGen = new TubeGenerator()
            {
                Vertices = new List <Vector3d>(curve.Vertices), Capped = true,
                Polygon  = polygon
                           //, Frame = new Frame3f(Vector3f.Zero, Vector3f.AxisY)
            };

            meshGen.Generate();
            meshObject.SetMesh(meshGen.MakeUnityMesh(false));

            bUpdatePending  = false;
            curve_timestamp = curve.Timestamp;
        }
Exemplo n.º 3
0
        void validate_tube_meshes()
        {
            Polygon2d circle = Polygon2d.MakeCircle(Radius, Slices);

            for (int i = 0; i < CurveSet.Length; ++i)
            {
                TubeGenerator gen = new TubeGenerator(CurveSet[i].curve, circle)
                {
                    NoSharedVertices = false
                };
                gen.Generate();
                CurveSet[i].tubeMeshGO = GameObjectFactory.CreateMeshGO("tube_" + i.ToString(),
                                                                        gen.MakeUnityMesh(), false, true);
                CurveSet[i].tubeMeshGO.SetMaterial(curveMaterial, true);
                parentGO.AddChild(CurveSet[i].tubeMeshGO, false);
            }
        }
Exemplo n.º 4
0
        override protected void Create_internal(fMaterial useMaterial)
        {
            if (polygon == null)
            {
                polygon = Polygon2d.MakeCircle(0.3f, 8);
            }

            // generate mesh tube
            TubeGenerator meshGen = new TubeGenerator()
            {
                Vertices = new List <Vector3d>(curve.Vertices), Capped = true,
                Polygon  = polygon,
                Frame    = new Frame3f(Vector3f.Zero, Vector3f.AxisY)
            };

            meshGen.Generate();
            Mesh m = meshGen.MakeUnityMesh(false);

            meshGO = UnityUtil.CreateMeshGO("tube_mesh", m, useMaterial, true);
            AppendNewGO(meshGO, RootGameObject, false);
        }