#include <boost/algorithm/string.hpp>
#include "Format/GeomReaderBuilder.h"
+#include "Format/AssimpReader.h"
void SceneMain::Initialize(void)
{
- m_DefaultMaterial = lib_graph::MaterialSamples::GetSilver();
+ m_DefaultMaterial = lgr::MaterialSamples::GetSilver();
m_DefaultAlphaMaterial = m_DefaultMaterial;
m_DefaultAlphaMaterial.SetAlphaAll( 0.75f );
m_DefaultTexture.InitializeTexture();
- ClearObjects();
-
m_EnvImg.InitEnvMap();
}
RefreshObjectIndex();
- return reader->Load(*this, filename);
+ if (!reader->Load(*this, filename))
+ return false;
+
+ UpdateCrossSectionIfRequire(false);
+
+ return true;
}
GeomObject* SceneMain::CreateNewGeometry(void)
void SceneMain::SetFrame(int frame)
{
m_CurFrame = frame;
+
for (GeomObject& g : m_Objects)
{
- g.SetFrame(frame);
+ g.SetFrameShape(frame);
}
+ m_Camera.SetFrame(frame);
+
UpdateTransform();
}
bool SceneMain::ReloadObject(GeomObject* obj)
{
- if(!obj->IsFileObject())
+ if (!obj->IsFileObject())
return false;
int idx = FindObjectIdx(obj);
return false;
}
+ if (obj->IsInChild(m_Cursor3d.CloseFaceMBuf))
+ m_Cursor3d.ResetCloseFace();
+
geom::GeomFileFormat fmt = obj->m_FileFormat;
const std::string filename = obj->m_FilePath;
- RemoveItem(idx);
+ boost::ptr_vector<GeomObject>::iterator i;
+ i = m_Objects.begin();
+ i += idx;
+ m_Objects.erase(i);
+
+ m_Sels.ClearSelect();
+
+ std::auto_ptr<GeomFileReader> reader;
+ reader.reset(GeomReaderBuilder::Create(fmt));
+ if (reader.get() == NULL)
+ {
+ assert(false);
+ return false;
+ }
+
+ RefreshObjectIndex();
+
+ if (!reader->Load(*this, filename))
+ return false;
+
+ UpdateCrossSectionIfRequire(false);
- return ImportFile(filename, fmt);
+ return true;
}
int SceneMain::FindObjectIdx(const GeomObject* obj) const
{
for (const GeomObject& o : m_Objects)
{
- if(&o == obj)
+ if (&o == obj)
return o.GetObjectIndex();
}
int kf = 0;
for (const GeomObject& obj : m_Objects)
{
- kf = (std::max)(kf, obj.m_Nodes.GetKeyframeMax());
+ kf = (std::max)(kf, obj.m_GTree.GetKeyframeMax());
}
+ kf = (std::max)(kf, m_Camera.m_SeqTrans.GetNumframes());
+
return kf;
}
return false;
}
+
+bool SceneMain::LoadCameraSeq(const char* filename)
+{
+ AssimpReader reader;
+ return reader.LoadCamera(*this, filename);
+}