2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 11:07:44 +00:00

More space-tree work

This commit is contained in:
Jack Andersen
2016-01-10 16:17:08 -10:00
parent 7f07e516e9
commit 1a5f3bec0d
7 changed files with 111 additions and 51 deletions

View File

@@ -10,9 +10,9 @@ using YAMLNode = Athena::io::YAMLNode;
namespace URDE
{
Specter::View* ViewManager::BuildSpaceViews(URDE::Space* space)
Specter::View* ViewManager::BuildSpaceViews()
{
m_rootSpaceView = space->buildSpaceView(m_viewResources);
m_rootSpaceView = m_rootSpace->buildSpaceView(m_viewResources);
return m_rootSpaceView;
}
@@ -31,30 +31,32 @@ SplashScreen* ViewManager::SetupSplashView()
return m_splash.get();
}
void ViewManager::RootSpaceViewBuilt(Specter::View *view)
{
std::vector<Specter::View*>& cViews = m_rootView->accessContentViews();
cViews.clear();
cViews.push_back(view);
printf("RootView Set: %p [%p]\n\n", m_rootView.get(), view);
cViews.push_back(m_splash.get());
m_rootView->updateSize();
}
void ViewManager::SetupEditorView()
{
m_rootSpace.reset(new RootSpace(*this));
SplitSpace* split = new SplitSpace(*this, nullptr);
SplitSpace* split = new SplitSpace(*this, nullptr, Specter::SplitView::Axis::Horizontal);
m_rootSpace->setChild(std::unique_ptr<Space>(split));
split->setChildSlot(0, std::make_unique<ResourceBrowser>(*this, split));
split->setChildSlot(1, std::make_unique<ResourceBrowser>(*this, split));
std::vector<Specter::View*>& cViews = m_rootView->accessContentViews();
cViews.clear();
cViews.push_back(BuildSpaceViews(m_rootSpace.get()));
cViews.push_back(m_splash.get());
m_rootView->updateSize();
BuildSpaceViews();
}
void ViewManager::SetupEditorView(ConfigReader& r)
{
m_rootSpace.reset(Space::NewRootSpaceFromConfigStream(*this, r));
std::vector<Specter::View*>& cViews = m_rootView->accessContentViews();
cViews.clear();
cViews.push_back(BuildSpaceViews(m_rootSpace.get()));
cViews.push_back(m_splash.get());
m_rootView->updateSize();
BuildSpaceViews();
}
void ViewManager::SaveEditorView(ConfigWriter& w)
@@ -118,10 +120,13 @@ bool ViewManager::proc()
{
m_viewResources.resetPixelFactor(m_reqPf);
Specter::RootView* root = SetupRootView();
std::vector<Specter::View*>& cViews = root->accessContentViews();
if (m_rootSpace)
cViews.push_back(BuildSpaceViews(m_rootSpace.get()));
cViews.push_back(SetupSplashView());
BuildSpaceViews();
else
{
std::vector<Specter::View*>& cViews = m_rootView->accessContentViews();
cViews.push_back(SetupSplashView());
}
root->updateSize();
m_updatePf = false;
}
@@ -132,6 +137,12 @@ bool ViewManager::proc()
if (m_splash)
m_splash->think();
if (m_deferSplit)
{
m_deferSplit->spaceSplit(m_deferSplitAxis, m_deferSplitThisSlot);
m_deferSplit = nullptr;
}
++m_editorFrames;
if (m_rootSpaceView && m_editorFrames <= 30)
m_rootSpaceView->setMultiplyColor(Zeus::CColor::lerp({1,1,1,0}, {1,1,1,1}, m_editorFrames / 30.0));