{
aiMesh* mesh = ai_scene->mMeshes[i];
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
lib_geo::BaseMesh& mesh_dst = mbuf->m_Mesh;
mbuf->m_Name = mesh->mName.C_Str();
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
mqo_obj.ConvertToBaseMesh(mbuf->m_Mesh);
OnPostLoadObj(scene, *mbuf, obj_mesh);
}
+ scene.RefreshObjectIndex();
+
geom->m_Name = FileUtil::GetFileTitle(filename);
geom->m_FileFormat = GeomFileFormat::Obj;
geom->m_FilePath = filename;
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
+
lib_geo::BaseMesh& mesh_dst = mbuf->m_Mesh;
ply_mesh.ConvertToBaseMesh(mesh_dst);
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
lib_geo::BaseMesh& m = mbuf->m_Mesh;
m.m_Verts.reserve(pm.vertices.size());
{
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
lib_geo::BaseMesh& mesh_dst = mbuf->m_Mesh;
lib_geo::StlMesh stl_mesh;
bool IsInChild(const MeshBuf* mbuf) const;
+ void SetObjectIndex(int idx)
+ {
+ m_ObjectIndex = idx;
+ }
+
int GetObjectIndex(void) const
{
return m_ObjectIndex;
{
public:
MeshBuf(GeomObject* parent = NULL) :
- m_Parent(parent),
m_MBufIdx(-1),
+ m_WholeIndex(-1),
+ m_Parent(parent),
m_Visible(true)
{
}
public:
int m_MBufIdx;
+ int m_WholeIndex;
+
bool m_Visible;
std::string m_Name;
void SceneMain::RefreshObjectIndex(void)
{
+ size_t io = 0;
for (size_t i = 0; i < m_Objects.size(); ++i)
{
GeomObject& o = m_Objects[i];
- o.m_ObjectIndex = (int)i;
+ o.SetObjectIndex((int)i);
for (size_t j = 0; j < o.m_MeshAry.size(); ++j)
{
MeshBuf& m = o.m_MeshAry[j];
m.m_MBufIdx = (int)j;
+ m.m_WholeIndex = (int)(j + io);
}
+ io += o.m_MeshAry.size();
}
}
lib_graph::color4f c;
if (cs_config.m_MultiColor)
- c = IndexColor::GetColor(obj->GetObjectIndex());
+ c = IndexColor::GetColor(mbuf->m_WholeIndex);
else
c.set(1.0, 0.0, 0.0, 1.0);
GeomObject* obj = scene.CreateNewGeometry();
MeshBuf* mbuf = obj->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
obj->m_Name = "vertscript";
obj->m_VertexOnlyMode = true;
if (scene.m_Sels.IsMBufSelected())
glStencilFunc(GL_NOTEQUAL, mbuf.GetDecWholeIdx() + 1, ~0);
else
- glStencilFunc(GL_NOTEQUAL, mbuf.GetParent()->m_ObjectIndex + 1, ~0);
+ glStencilFunc(GL_NOTEQUAL, mbuf.GetParent()->GetObjectIndex() + 1, ~0);
glColor3d(1, 0.5, 0);
glLineWidth(3.0f);
if (scene.m_Sels.IsMBufSelected())
glStencilFunc(GL_ALWAYS, m_Mesh->GetDecWholeIdx() + 1, ~0);
else
- glStencilFunc(GL_ALWAYS, m_Mesh->GetParent()->m_ObjectIndex + 1, ~0);
+ glStencilFunc(GL_ALWAYS, m_Mesh->GetParent()->GetObjectIndex() + 1, ~0);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
}
mat_initialized = true;
}
- return &index_mats[mbuf.GetParent()->GetObjectIndex() % 6];
+ return &index_mats[mbuf.m_WholeIndex % 6];
}
if (m_Config->m_UseFixMaterial)
{
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
lib_geo::BaseMeshGen::GenSphere( mbuf->m_Mesh , 1.0f , 20 , 20 );
{
GeomObject* geom = scene.CreateNewGeometry();
MeshBuf* mbuf = geom->CreateNewMeshBuf();
+ scene.RefreshObjectIndex();
int slice = 32;
float width = 10.0f;
if (m_Scene->m_Sels.IsMBufSelected())
glStencilFunc(GL_NOTEQUAL, mbuf.GetDecWholeIdx() + 1, ~0);
else
- glStencilFunc(GL_NOTEQUAL, mbuf.GetParent()->m_ObjectIndex + 1, ~0);
+ glStencilFunc(GL_NOTEQUAL, mbuf.GetParent()->GetObjectIndex() + 1, ~0);
glColor3d(1, 0.5, 0);
glLineWidth(3.0f);
{
GeomObject* obj = mbuf->GetParent();
if (cs_config.m_MultiColor)
- glColor4fv(IndexColor::GetColorRev(obj->GetObjectIndex()).v());
+ glColor4fv(IndexColor::GetColorRev(mbuf->m_WholeIndex).v());
else
glColor3d(1, 0, 0);
new_midx = f.m_MatIdx;
}
- emit SelectedObjectChanged(close_mbuf->GetParent()->m_ObjectIndex, close_mbuf->m_MBufIdx);
+ emit SelectedObjectChanged(close_mbuf->GetParent()->GetObjectIndex(), close_mbuf->m_MBufIdx);
if (new_midx != -1)
emit SelectedMatChanged(new_midx);
}