parseGeoNode method
dynamic
parseGeoNode(
- Map geoNode,
- dynamic skeleton
)
Implementation
parseGeoNode(Map geoNode, skeleton) {
var geoInfo = {};
geoInfo["vertexPositions"] =
(geoNode["Vertices"] != null) ? geoNode["Vertices"]["a"] : [];
geoInfo["vertexIndices"] = (geoNode["PolygonVertexIndex"] != null)
? geoNode["PolygonVertexIndex"]["a"]
: [];
if (geoNode["LayerElementColor"] != null) {
geoInfo["color"] =
this.parseVertexColors(geoNode["LayerElementColor"][0]);
}
if (geoNode["LayerElementMaterial"] != null) {
geoInfo["material"] =
this.parseMaterialIndices(geoNode["LayerElementMaterial"][0]);
}
if (geoNode["LayerElementNormal"] != null) {
geoInfo["normal"] = this.parseNormals(geoNode["LayerElementNormal"][0]);
}
if (geoNode["LayerElementUV"] != null) {
geoInfo["uv"] = [];
var i = 0;
while (geoNode["LayerElementUV"][i] != null) {
if (geoNode["LayerElementUV"][i]["UV"] != null) {
geoInfo["uv"].add(this.parseUVs(geoNode["LayerElementUV"][i]));
}
i++;
}
}
geoInfo["weightTable"] = {};
if (skeleton != null) {
geoInfo["skeleton"] = skeleton;
if (skeleton["rawBones"] != null)
skeleton["rawBones"].asMap().forEach((i, rawBone) {
// loop over the bone's vertex indices and weights
rawBone["indices"].asMap().forEach((j, index) {
if (geoInfo["weightTable"][index] == null)
geoInfo["weightTable"][index] = [];
geoInfo["weightTable"][index].add({
"id": i,
"weight": rawBone["weights"][j],
});
});
});
}
return geoInfo;
}