public Task BuildTreeAsync(IGeometryComponent geo) { if (!geo.IsValid) { return(Task.FromResult(0)); } return(Task.Run(() => { var norm = geo.Normals.IsDefaultOrEmpty ? null : ConvertToVector3f(geo.Normals); DMeshLocal = DMesh3Builder.Build(ConvertToVector3f(geo.Positions), geo.Indices, norm); //var sm = new LaplacianMeshSmoother(DMesh); //sm.Initialize(); //sm.SolveAndUpdateMesh(); //DMesh = sm.Mesh; TreeLocal = new DMeshAABBTree3(DMeshLocal); TreeLocal.Build(); box = new BoundingBox(DMeshLocal.GetBounds()); IsBuilt = true; return this; })); }
public void Handle(IGeometryComponent com) { components.Add(com); }