public static NodeAttribute GetFromNode(IntPtr ptr) { var attribute = FbxNodeGetAttribute(ptr); if (attribute == IntPtr.Zero) { return(Empty); } switch (FbxNodeGetAttributeType(ptr)) { case FbxNodeType.MESH: var meshAttribute = MeshAttribute.FromSubmesh(attribute); var count = FbxNodeGetAttributeCount(ptr); for (int i = 1; i < count; i++) { meshAttribute = MeshAttribute.Combine( meshAttribute, MeshAttribute.FromSubmesh(FbxNodeGetAttribute(ptr, i))); } return(meshAttribute); case FbxNodeType.CAMERA: return(new CameraAttribute(attribute)); case FbxNodeType.NONE: default: return(Empty); } }
public static MeshAttribute Combine(MeshAttribute meshAttribute1, MeshAttribute meshAttribute2) { var sm = new List <Submesh>(); sm.AddRange(meshAttribute1.Submeshes); sm.AddRange(meshAttribute2.Submeshes); return(new MeshAttribute { Submeshes = sm }); }