public void LoadFlver(FLVER2 flver, MeshRenderableProxy proxy) { var meshesNode = new NamedEntity(this, null, "Meshes"); Objects.Add(meshesNode); RootObject.AddChild(meshesNode); for (int i = 0; i < flver.Meshes.Count; i++) { var meshnode = new NamedEntity(this, flver.Meshes[i], $@"mesh_{i}"); if (proxy.Submeshes.Count > 0) { meshnode.RenderSceneMesh = proxy.Submeshes[i]; proxy.Submeshes[i].SetSelectable(meshnode); } Objects.Add(meshnode); meshesNode.AddChild(meshnode); } var materialsNode = new NamedEntity(this, null, "Materials"); Objects.Add(materialsNode); RootObject.AddChild(materialsNode); for (int i = 0; i < flver.Materials.Count; i++) { var matnode = new Entity(this, flver.Materials[i]); Objects.Add(matnode); materialsNode.AddChild(matnode); } var layoutsNode = new NamedEntity(this, null, "Layouts"); Objects.Add(layoutsNode); RootObject.AddChild(layoutsNode); for (int i = 0; i < flver.BufferLayouts.Count; i++) { var laynode = new NamedEntity(this, flver.BufferLayouts[i], $@"layout_{i}"); Objects.Add(laynode); layoutsNode.AddChild(laynode); } var bonesNode = new NamedEntity(this, null, "Bones"); Objects.Add(bonesNode); RootObject.AddChild(bonesNode); var boneEntList = new List <TransformableNamedEntity>(); for (int i = 0; i < flver.Bones.Count; i++) { var bonenode = new TransformableNamedEntity(this, flver.Bones[i], flver.Bones[i].Name); bonenode.RenderSceneMesh = Universe.GetBoneDrawable(this, bonenode); Objects.Add(bonenode); boneEntList.Add(bonenode); } for (int i = 0; i < flver.Bones.Count; i++) { if (flver.Bones[i].ParentIndex == -1) { bonesNode.AddChild(boneEntList[i]); } else { boneEntList[flver.Bones[i].ParentIndex].AddChild(boneEntList[i]); } } // Add dummy polys attached to bones var dmysNode = new NamedEntity(this, null, "DummyPolys"); Objects.Add(dmysNode); RootObject.AddChild(dmysNode); for (int i = 0; i < flver.Dummies.Count; i++) { var dmynode = new TransformableNamedEntity(this, flver.Dummies[i], $@"dmy_{i}"); dmynode.RenderSceneMesh = Universe.GetDummyPolyDrawable(this, dmynode); Objects.Add(dmynode); dmysNode.AddChild(dmynode); } }