public virtual void PostHook(NodeExporter exporter, Transform trans, Types.Node gltfNode) { }
public IndexedResource <Transform> ForceExport(Transform trans) { var go = trans.gameObject; IndexedResource <Mesh> meshResource = null; int?skinIndex = null; var mr = go.GetComponent <MeshRenderer>(); var smr = go.GetComponent <SkinnedMeshRenderer>(); if (mr != null) { var meshFilter = mr.gameObject.GetComponent <MeshFilter>(); var sharedMesh = meshFilter.sharedMesh; meshResource = Meshes.Export(mr, sharedMesh); } else if (smr != null) { var sharedMesh = smr.sharedMesh; meshResource = Meshes.Export(smr, sharedMesh); if (smr.bones.Length > 0) { skinIndex = ExportSkin(smr, sharedMesh).Index; } } var t = CoordUtils.ConvertSpace(go.transform.localPosition); var r = CoordUtils.ConvertSpace(go.transform.localRotation); var s = go.transform.localScale; var gltfNode = new Types.Node { Name = go.name, Mesh = meshResource != null ? (int?)meshResource.Index : null, Skin = skinIndex, Matrix = null, Translation = new float[] { t.x, t.y, t.z }, Rotation = new float[] { r.x, r.y, r.z, r.w }, Scale = new float[] { s.x, s.y, s.z }, }; var nodesIndices = new List <int>(); for (int i = 0; i < go.transform.childCount; ++i) { var c = go.transform.GetChild(i); var nodeResource = Export(c.gameObject); nodesIndices.Add(nodeResource.Index); } if (nodesIndices.Count > 0) { gltfNode.Children = nodesIndices.ToArray(); } foreach (var h in Hooks) { h.PostHook(this, trans, gltfNode); } return(new IndexedResource <Transform> { Index = Types.GltfExtensions.AddNode(Gltf, gltfNode), Value = trans, }); }
public virtual void PostHook(NodeImporter impoter, Transform trans, Types.Node gltfNode) { }