Moved edit mode buttons onto a toolbar, fixed a couple bugs
This commit is contained in:
parent
4d87ef0312
commit
009c42f281
|
@ -67,7 +67,7 @@ void CAnimEventLoader::LoadEvents(IInputStream& rEVNT, bool IsEchoes)
|
||||||
|
|
||||||
if (SoundID != 0xFFFF)
|
if (SoundID != 0xFFFF)
|
||||||
{
|
{
|
||||||
SSoundInfo SoundInfo = mpEventData->Entry()->Project()->AudioManager()->GetSoundInfo(SoundID);
|
SSoundInfo SoundInfo = gpResourceStore->Project()->AudioManager()->GetSoundInfo(SoundID);
|
||||||
|
|
||||||
if (SoundInfo.pAudioGroup)
|
if (SoundInfo.pAudioGroup)
|
||||||
mpEventData->AddEvent(CharIndex, SoundInfo.pAudioGroup->ID());
|
mpEventData->AddEvent(CharIndex, SoundInfo.pAudioGroup->ID());
|
||||||
|
|
|
@ -24,6 +24,7 @@ CProjectOverviewDialog::CProjectOverviewDialog(QWidget *pParent)
|
||||||
connect(mpUI->CookPackageButton, SIGNAL(clicked()), this, SLOT(CookPackage()));
|
connect(mpUI->CookPackageButton, SIGNAL(clicked()), this, SLOT(CookPackage()));
|
||||||
connect(mpUI->CookAllDirtyPackagesButton, SIGNAL(clicked(bool)), this, SLOT(CookAllDirtyPackages()));
|
connect(mpUI->CookAllDirtyPackagesButton, SIGNAL(clicked(bool)), this, SLOT(CookAllDirtyPackages()));
|
||||||
|
|
||||||
|
connect(gpEdApp, SIGNAL(ActiveProjectChanged(CGameProject*)), this, SLOT(ActiveProjectChanged(CGameProject*)));
|
||||||
connect(gpEdApp, SIGNAL(AssetsModified()), this, SLOT(SetupPackagesList()));
|
connect(gpEdApp, SIGNAL(AssetsModified()), this, SLOT(SetupPackagesList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +33,13 @@ CProjectOverviewDialog::~CProjectOverviewDialog()
|
||||||
delete mpUI;
|
delete mpUI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CProjectOverviewDialog::ActiveProjectChanged(CGameProject *pProj)
|
||||||
|
{
|
||||||
|
mpProject = pProj;
|
||||||
|
SetupWorldsList();
|
||||||
|
SetupPackagesList();
|
||||||
|
}
|
||||||
|
|
||||||
void CProjectOverviewDialog::ExportGame()
|
void CProjectOverviewDialog::ExportGame()
|
||||||
{
|
{
|
||||||
QString IsoPath = UICommon::OpenFileDialog(this, "Select ISO", "*.iso *.gcm *.tgc *.wbfs");
|
QString IsoPath = UICommon::OpenFileDialog(this, "Select ISO", "*.iso *.gcm *.tgc *.wbfs");
|
||||||
|
|
|
@ -25,6 +25,7 @@ public:
|
||||||
~CProjectOverviewDialog();
|
~CProjectOverviewDialog();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void ActiveProjectChanged(CGameProject *pProj);
|
||||||
void ExportGame();
|
void ExportGame();
|
||||||
void LoadWorld();
|
void LoadWorld();
|
||||||
void LaunchEditor();
|
void LaunchEditor();
|
||||||
|
@ -34,9 +35,6 @@ public slots:
|
||||||
|
|
||||||
void SetupWorldsList();
|
void SetupWorldsList();
|
||||||
void SetupPackagesList();
|
void SetupPackagesList();
|
||||||
|
|
||||||
signals:
|
|
||||||
void ActiveProjectChanged(CGameProject *pNewProj);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CPROJECTOVERVIEWDIALOG_H
|
#endif // CPROJECTOVERVIEWDIALOG_H
|
||||||
|
|
|
@ -62,12 +62,15 @@ public:
|
||||||
mpMaster = pMaster;
|
mpMaster = pMaster;
|
||||||
mTemplates.clear();
|
mTemplates.clear();
|
||||||
|
|
||||||
for (u32 iTemp = 0; iTemp < mpMaster->NumScriptTemplates(); iTemp++)
|
if (mpMaster)
|
||||||
mTemplates << mpMaster->TemplateByIndex(iTemp);
|
{
|
||||||
|
for (u32 iTemp = 0; iTemp < mpMaster->NumScriptTemplates(); iTemp++)
|
||||||
|
mTemplates << mpMaster->TemplateByIndex(iTemp);
|
||||||
|
|
||||||
qSort(mTemplates.begin(), mTemplates.end(), [](CScriptTemplate *pLeft, CScriptTemplate *pRight) -> bool {
|
qSort(mTemplates.begin(), mTemplates.end(), [](CScriptTemplate *pLeft, CScriptTemplate *pRight) -> bool {
|
||||||
return pLeft->Name() < pRight->Name();
|
return pLeft->Name() < pRight->Name();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,13 +76,16 @@ CWorldEditor::CWorldEditor(QWidget *parent)
|
||||||
mpWorldInfoSidebar->setHidden(true);
|
mpWorldInfoSidebar->setHidden(true);
|
||||||
mpScriptSidebar = new CScriptEditSidebar(this);
|
mpScriptSidebar = new CScriptEditSidebar(this);
|
||||||
mpScriptSidebar->setHidden(true);
|
mpScriptSidebar->setHidden(true);
|
||||||
SetSidebarWidget(mpWorldInfoSidebar);
|
|
||||||
|
|
||||||
|
// Initialize edit mode toolbar
|
||||||
mpEditModeButtonGroup = new QButtonGroup(this);
|
mpEditModeButtonGroup = new QButtonGroup(this);
|
||||||
mpEditModeButtonGroup->addButton( ui->EditWorldInfoButton, eWEM_WorldInfo );
|
|
||||||
mpEditModeButtonGroup->addButton( ui->EditScriptButton, eWEM_EditScript );
|
|
||||||
connect(mpEditModeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(ChangeEditMode(int)));
|
connect(mpEditModeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(ChangeEditMode(int)));
|
||||||
|
|
||||||
|
AddEditModeButton( QIcon(":/icons/World.png"), "Edit World Info",eWEM_EditWorldInfo );
|
||||||
|
AddEditModeButton( QIcon(":/icons/Modify.png"), "Edit Script", eWEM_EditScript );
|
||||||
|
|
||||||
|
ChangeEditMode(eWEM_EditWorldInfo);
|
||||||
|
|
||||||
// Initialize actions
|
// Initialize actions
|
||||||
addAction(ui->ActionIncrementGizmo);
|
addAction(ui->ActionIncrementGizmo);
|
||||||
addAction(ui->ActionDecrementGizmo);
|
addAction(ui->ActionDecrementGizmo);
|
||||||
|
@ -449,6 +452,9 @@ void CWorldEditor::CloseProject()
|
||||||
|
|
||||||
bool CWorldEditor::Save()
|
bool CWorldEditor::Save()
|
||||||
{
|
{
|
||||||
|
if (!mpArea)
|
||||||
|
return true;
|
||||||
|
|
||||||
bool SaveAreaSuccess = mpArea->Entry()->Save();
|
bool SaveAreaSuccess = mpArea->Entry()->Save();
|
||||||
bool SaveEGMCSuccess = mpArea->PoiToWorldMap() ? mpArea->PoiToWorldMap()->Entry()->Save() : true;
|
bool SaveEGMCSuccess = mpArea->PoiToWorldMap() ? mpArea->PoiToWorldMap()->Entry()->Save() : true;
|
||||||
bool SaveWorldSuccess = mpWorld->Entry()->Save();
|
bool SaveWorldSuccess = mpWorld->Entry()->Save();
|
||||||
|
@ -478,6 +484,7 @@ bool CWorldEditor::SaveAndRepack()
|
||||||
|
|
||||||
void CWorldEditor::ChangeEditMode(int Mode)
|
void CWorldEditor::ChangeEditMode(int Mode)
|
||||||
{
|
{
|
||||||
|
// This function is connected to the edit mode QButtonGroup.
|
||||||
ChangeEditMode((EWorldEditorMode) Mode);
|
ChangeEditMode((EWorldEditorMode) Mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,7 +496,7 @@ void CWorldEditor::ChangeEditMode(EWorldEditorMode Mode)
|
||||||
|
|
||||||
switch (Mode)
|
switch (Mode)
|
||||||
{
|
{
|
||||||
case eWEM_WorldInfo:
|
case eWEM_EditWorldInfo:
|
||||||
SetSidebarWidget(mpWorldInfoSidebar);
|
SetSidebarWidget(mpWorldInfoSidebar);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -525,7 +532,7 @@ void CWorldEditor::OnActiveProjectChanged(CGameProject *pProj)
|
||||||
Settings.setValue("WorldEditor/RecentProjectsList", RecentProjectsList);
|
Settings.setValue("WorldEditor/RecentProjectsList", RecentProjectsList);
|
||||||
UpdateOpenRecentActions();
|
UpdateOpenRecentActions();
|
||||||
|
|
||||||
ChangeEditMode(eWEM_WorldInfo);
|
ChangeEditMode(eWEM_EditWorldInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CWorldEditor::OnLinksModified(const QList<CScriptObject*>& rkInstances)
|
void CWorldEditor::OnLinksModified(const QList<CScriptObject*>& rkInstances)
|
||||||
|
@ -846,6 +853,19 @@ void CWorldEditor::UpdateNewLinkLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************ PROTECTED ************
|
// ************ PROTECTED ************
|
||||||
|
void CWorldEditor::AddEditModeButton(QIcon Icon, QString ToolTip, EWorldEditorMode Mode)
|
||||||
|
{
|
||||||
|
ASSERT(mpEditModeButtonGroup->button(Mode) == nullptr);
|
||||||
|
|
||||||
|
QPushButton *pButton = new QPushButton(Icon, "", this);
|
||||||
|
pButton->setCheckable(true);
|
||||||
|
pButton->setToolTip(ToolTip);
|
||||||
|
pButton->setIconSize(QSize(24, 24));
|
||||||
|
|
||||||
|
ui->EditModeToolBar->addWidget(pButton);
|
||||||
|
mpEditModeButtonGroup->addButton(pButton, Mode);
|
||||||
|
}
|
||||||
|
|
||||||
void CWorldEditor::SetSidebarWidget(QWidget *pWidget)
|
void CWorldEditor::SetSidebarWidget(QWidget *pWidget)
|
||||||
{
|
{
|
||||||
if (mpCurSidebarWidget)
|
if (mpCurSidebarWidget)
|
||||||
|
|
|
@ -35,7 +35,7 @@ class CWorldEditor;
|
||||||
|
|
||||||
enum EWorldEditorMode
|
enum EWorldEditorMode
|
||||||
{
|
{
|
||||||
eWEM_WorldInfo,
|
eWEM_EditWorldInfo,
|
||||||
eWEM_EditScript
|
eWEM_EditScript
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,6 +125,7 @@ public slots:
|
||||||
void UpdateNewLinkLine();
|
void UpdateNewLinkLine();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void AddEditModeButton(QIcon Icon, QString ToolTip, EWorldEditorMode Mode);
|
||||||
void SetSidebarWidget(QWidget *pWidget);
|
void SetSidebarWidget(QWidget *pWidget);
|
||||||
void GizmoModeChanged(CGizmo::EGizmoMode Mode);
|
void GizmoModeChanged(CGizmo::EGizmoMode Mode);
|
||||||
|
|
||||||
|
|
|
@ -234,140 +234,6 @@
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QFrame" name="EditModeFrame">
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::NoFrame</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Sunken</enum>
|
|
||||||
</property>
|
|
||||||
<property name="lineWidth">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>3</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="EditWorldInfoButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>32</width>
|
|
||||||
<height>32</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>32</width>
|
|
||||||
<height>32</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>World Edit Mode</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../Icons.qrc">
|
|
||||||
<normaloff>:/icons/World.png</normaloff>:/icons/World.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
|
||||||
<size>
|
|
||||||
<width>24</width>
|
|
||||||
<height>24</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="checkable">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="EditScriptButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>32</width>
|
|
||||||
<height>32</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>32</width>
|
|
||||||
<height>32</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Script Edit Mode</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../Icons.qrc">
|
|
||||||
<normaloff>:/icons/Modify.png</normaloff>:/icons/Modify.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
|
||||||
<size>
|
|
||||||
<width>24</width>
|
|
||||||
<height>24</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="checkable">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>546</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
@ -482,6 +348,23 @@
|
||||||
<addaction name="menuTools"/>
|
<addaction name="menuTools"/>
|
||||||
<addaction name="menuView"/>
|
<addaction name="menuView"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QToolBar" name="EditModeToolBar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>toolBar</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="toolBarArea">
|
||||||
|
<enum>RightToolBarArea</enum>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="toolBarBreak">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
<action name="ActionSave">
|
<action name="ActionSave">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../Icons.qrc">
|
<iconset resource="../Icons.qrc">
|
||||||
|
@ -852,6 +735,33 @@
|
||||||
<string>Resource Browser</string>
|
<string>Resource Browser</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="ActionEditWorldInfoMode">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../Icons.qrc">
|
||||||
|
<normaloff>:/icons/World.png</normaloff>:/icons/World.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit World Info</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="ActionEditScriptMode">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../Icons.qrc">
|
||||||
|
<normaloff>:/icons/Modify.png</normaloff>:/icons/Modify.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit Script</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
|
|
@ -15,6 +15,7 @@ WCreateTab::WCreateTab(CWorldEditor *pEditor, QWidget *pParent /*= 0*/)
|
||||||
mpEditor->Viewport()->installEventFilter(this);
|
mpEditor->Viewport()->installEventFilter(this);
|
||||||
|
|
||||||
connect(mpEditor, SIGNAL(LayersModified()), this, SLOT(OnLayersChanged()));
|
connect(mpEditor, SIGNAL(LayersModified()), this, SLOT(OnLayersChanged()));
|
||||||
|
connect(gpEdApp, SIGNAL(ActiveProjectChanged(CGameProject*)), this, SLOT(OnActiveProjectChanged(CGameProject*)));
|
||||||
connect(ui->SpawnLayerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnSpawnLayerChanged(int)));
|
connect(ui->SpawnLayerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnSpawnLayerChanged(int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,9 +58,9 @@ bool WCreateTab::eventFilter(QObject *pObj, QEvent *pEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************ PUBLIC SLOTS ************
|
// ************ PUBLIC SLOTS ************
|
||||||
void WCreateTab::OnMapChanged()
|
void WCreateTab::OnActiveProjectChanged(CGameProject *pProj)
|
||||||
{
|
{
|
||||||
EGame Game = mpEditor->CurrentGame();
|
EGame Game = (pProj ? pProj->Game() : eUnknownGame);
|
||||||
CMasterTemplate *pMaster = CMasterTemplate::MasterForGame(Game);
|
CMasterTemplate *pMaster = CMasterTemplate::MasterForGame(Game);
|
||||||
ui->TemplateView->SetMaster(pMaster);
|
ui->TemplateView->SetMaster(pMaster);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public:
|
||||||
inline CScriptLayer* SpawnLayer() const { return mpSpawnLayer; }
|
inline CScriptLayer* SpawnLayer() const { return mpSpawnLayer; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void OnMapChanged();
|
void OnActiveProjectChanged(CGameProject *pProj);
|
||||||
void OnLayersChanged();
|
void OnLayersChanged();
|
||||||
void OnSpawnLayerChanged(int LayerIndex);
|
void OnSpawnLayerChanged(int LayerIndex);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue