private Dictionary <Kn5Node, Aabb3> GetAabb3Dictionary() { if (_aabb3s != null) { return(_aabb3s); } var aabb3Dictionary = _aabb3s = new Dictionary <Kn5Node, Aabb3>(); SetAabb(_kn5.RootNode); return(aabb3Dictionary); Aabb3 SetAabb(Kn5Node node) { if (node.NodeClass != Kn5NodeClass.Base) { return(aabb3Dictionary[node] = node.CalculateAabb3(_kn5.RootNode)); } var aabb3 = Aabb3.CreateNew(); foreach (var child in node.Children) { aabb3.Extend(SetAabb(child)); } return(aabb3Dictionary[node] = aabb3); } }
public static Aabb3 CalculateAabb3(this Kn5Node mesh, Kn5Node relativeTo) { var transform = mesh.CalculateTransformRelativeToParent(relativeTo); var aabb = Aabb3.CreateNew(); foreach (var v in mesh.Vertices) { aabb.Extend(Vec3.Transform(v.Position, transform)); } return(aabb); }