bool ObjLoader::Load(SceneMain& scene, const std::string& filename)
{
- ObjSplitConfig split_config = scene.m_ObjSplitMode;
-
lib_geo::ObjMesh obj_mesh;
if (!obj_mesh.Load(filename))
return false;
+ bool split_obj = false;
+ bool split_group = false;
std::vector<lib_geo::BaseMesh> mesh_ary;
- if (split_config == ObjSplitConfig::ObjSplit_Object)
- {
- obj_mesh.ConvertToBaseMeshEachObject(mesh_ary);
- if (mesh_ary.empty())
- return true;
- }
- else if (split_config == ObjSplitConfig::ObjSplit_Group)
+ if (scene.m_ObjSplit)
{
- obj_mesh.ConvertToBaseMeshEachGroup(mesh_ary);
- if (mesh_ary.empty())
- return true;
+ if (!obj_mesh.m_Objects.empty())
+ {
+ split_obj = true;
+ obj_mesh.ConvertToBaseMeshEachObject(mesh_ary);
+
+ if (mesh_ary.empty())
+ return true;
+ }
+ else if (!obj_mesh.m_Groups.empty())
+ {
+ split_group = true;
+ obj_mesh.ConvertToBaseMeshEachGroup(mesh_ary);
+
+ if (mesh_ary.empty())
+ return true;
+ }
}
GeomObject* geom = scene.CreateNewGeometry();
OnPostLoadObj(scene, *mbuf, obj_mesh);
std::string object_name;
- if (split_config == ObjSplitConfig::ObjSplit_Object)
+ if (split_obj)
object_name = obj_mesh.m_Objects[i].m_Name;
- else if (split_config == ObjSplitConfig::ObjSplit_Group)
+ else if (split_group)
object_name = obj_mesh.m_Groups[i].m_Name;
if (object_name.empty())
i += sel_idx;
if (i->IsInChild(m_Cursor3d.CloseFaceMBuf))
- {
m_Cursor3d.ResetCloseFace();
- }
m_Objects.erase(i);
+ m_Sels.ClearSelect();
+
RefreshObjectIndex();
}
gl::TextureConfig m_TexConfig;
- ObjSplitConfig m_ObjSplitMode;
+ bool m_ObjSplit;
gl::EnvImage m_EnvImg;
gl::MatcapImage m_MatcapImg;
m_SelMatIdx = -1;
}
+void Selection3D::ClearSelect(void)
+{
+ m_SelObjectIdx = -1;
+ m_SelMeshIdx = -1;
+ m_SelMatIdx = -1;
+}
+
bool Selection3D::IsObjectSelected(void) const
{
return m_SelObjectIdx != -1;
public:
Selection3D(void);
+ void ClearSelect(void);
+
bool IsObjectSelected(void) const;
int GetSelObjectIdx(void) const;
bool FormMain::OpenGeomFile(const QString& path)
{
- if (ui.checkSplitObject->isChecked())
- m_Scene.m_ObjSplitMode = ObjSplitConfig::ObjSplit_Object;
- else if (ui.checkSplitGroup->isChecked())
- m_Scene.m_ObjSplitMode = ObjSplitConfig::ObjSplit_Group;
- else
- m_Scene.m_ObjSplitMode = ObjSplitConfig::ObjSplit_None;
+ m_Scene.m_ObjSplit = ui.checkSplitOBJ->isChecked();
m_ContextShare.BeginDrawTop();
obj_tree->setCurrentItem(NULL);
obj_tree->blockSignals(true);
- PushbackTreeNode(obj_tree, CreateObjectTreeNode(obj));
+ QTreeWidgetItem* n = CreateObjectTreeNode(obj);
+ PushbackTreeNode(obj_tree, n);
+ n->setExpanded(true);
SetPrimayrSelectObjectFromScene();
{
QTreeWidget* obj_tree = ui.treeObjects;
QTreeWidgetItem* ti = obj_tree->currentItem();
+ if (ti == NULL)
+ return;
+
QTreeWidgetItem* pn = ti->parent();
int sel_idx;
m_View3d.ClearRenderMap();
+ obj_tree->setCurrentItem(NULL);
obj_tree->takeTopLevelItem(sel_idx);
ResizeTreeColumns(obj_tree, 4);
<number>1</number>
</property>
<item>
- <widget class="QCheckBox" name="checkSplitObject">
+ <widget class="QCheckBox" name="checkSplitOBJ">
<property name="text">
<string>SplitObject</string>
</property>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="checkSplitGroup">
- <property name="text">
- <string>SplitGroup</string>
- </property>
- </widget>
- </item>
- <item>
<widget class="QCheckBox" name="checkShowOnlySelect">
<property name="text">
<string>ShowOnlySelect</string>
</customwidgets>
<tabstops>
<tabstop>listMaterial</tabstop>
- <tabstop>checkSplitObject</tabstop>
- <tabstop>checkSplitGroup</tabstop>
+ <tabstop>checkSplitOBJ</tabstop>
<tabstop>pushDeleteSelectedObject</tabstop>
<tabstop>buttonClearAllGeoms</tabstop>
<tabstop>pushButtonAddCameraRecord</tabstop>