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); }
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; }
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); } }
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); }