Loading SCLY file properties into a new class CResourceInfo instead of loading it as a CResource
This commit is contained in:
parent
b768473b44
commit
29bf0234ec
|
@ -46,12 +46,12 @@ CModel* CAreaAttributes::SkyModel() const
|
||||||
switch (mGame)
|
switch (mGame)
|
||||||
{
|
{
|
||||||
case ePrime:
|
case ePrime:
|
||||||
return (CModel*) static_cast<TFileProperty*>(pBaseStruct->PropertyByIndex(7))->Get().RawPointer();
|
return (CModel*) static_cast<TFileProperty*>(pBaseStruct->PropertyByIndex(7))->Get().Load();
|
||||||
case eEchoesDemo:
|
case eEchoesDemo:
|
||||||
case eEchoes:
|
case eEchoes:
|
||||||
case eCorruptionProto:
|
case eCorruptionProto:
|
||||||
case eCorruption:
|
case eCorruption:
|
||||||
return (CModel*) static_cast<TFileProperty*>(pBaseStruct->PropertyByID(0xD208C9FA))->Get().RawPointer();
|
return (CModel*) static_cast<TFileProperty*>(pBaseStruct->PropertyByID(0xD208C9FA))->Get().Load();
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,8 @@ HEADERS += \
|
||||||
Render/FRenderOptions.h \
|
Render/FRenderOptions.h \
|
||||||
Scene/FShowFlags.h \
|
Scene/FShowFlags.h \
|
||||||
Scene/CScene.h \
|
Scene/CScene.h \
|
||||||
Scene/CSceneIterator.h
|
Scene/CSceneIterator.h \
|
||||||
|
Resource/CResourceInfo.h
|
||||||
|
|
||||||
# Source Files
|
# Source Files
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <Common/TString.h>
|
#include <Common/TString.h>
|
||||||
#include <FileIO/FileIO.h>
|
#include <FileIO/FileIO.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
CResCache::CResCache()
|
CResCache::CResCache()
|
||||||
{
|
{
|
||||||
|
@ -208,6 +209,41 @@ CResource* CResCache::GetResource(const TString& ResPath)
|
||||||
return Res;
|
return Res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CFourCC CResCache::FindResourceType(CUniqueID ResID, const TStringList& rkPossibleTypes)
|
||||||
|
{
|
||||||
|
// If we only have one type then there's only one possibility.
|
||||||
|
if (rkPossibleTypes.size() == 1)
|
||||||
|
return CFourCC(rkPossibleTypes.front());
|
||||||
|
|
||||||
|
// Determine extension from pak
|
||||||
|
if (mResSource.Source == SResSource::PakFile)
|
||||||
|
{
|
||||||
|
for (auto it = rkPossibleTypes.begin(); it != rkPossibleTypes.end(); it++)
|
||||||
|
{
|
||||||
|
SResInfo ResInfo = mpPak->getResourceInfo(ResID.ToLongLong(), CFourCC(*it));
|
||||||
|
|
||||||
|
if (ResInfo.resType != "NULL")
|
||||||
|
return CFourCC(*it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine extension from filesystem - try every extension until we find one that works
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString PathBase = mResSource.Path + ResID.ToString() + ".";
|
||||||
|
|
||||||
|
for (auto it = rkPossibleTypes.begin(); it != rkPossibleTypes.end(); it++)
|
||||||
|
{
|
||||||
|
TString NewPath = PathBase + *it;
|
||||||
|
|
||||||
|
if (boost::filesystem::exists(NewPath.ToStdString()))
|
||||||
|
return CFourCC(*it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "UNKN";
|
||||||
|
}
|
||||||
|
|
||||||
void CResCache::CacheResource(CResource *pRes)
|
void CResCache::CacheResource(CResource *pRes)
|
||||||
{
|
{
|
||||||
u64 ID = pRes->ResID().ToLongLong();
|
u64 ID = pRes->ResID().ToLongLong();
|
||||||
|
|
|
@ -32,6 +32,7 @@ public:
|
||||||
TString GetSourcePath();
|
TString GetSourcePath();
|
||||||
CResource* GetResource(CUniqueID ResID, CFourCC type);
|
CResource* GetResource(CUniqueID ResID, CFourCC type);
|
||||||
CResource* GetResource(const TString& ResPath);
|
CResource* GetResource(const TString& ResPath);
|
||||||
|
CFourCC FindResourceType(CUniqueID ResID, const TStringList& rkPossibleTypes);
|
||||||
void CacheResource(CResource *pRes);
|
void CacheResource(CResource *pRes);
|
||||||
void DeleteResource(CUniqueID ResID);
|
void DeleteResource(CUniqueID ResID);
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
#ifndef CRESOURCEINFO
|
||||||
|
#define CRESOURCEINFO
|
||||||
|
|
||||||
|
#include "CResource.h"
|
||||||
|
#include "CResCache.h"
|
||||||
|
#include <Common/CUniqueID.h>
|
||||||
|
#include <Common/CFourCC.h>
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
|
class CResourceInfo
|
||||||
|
{
|
||||||
|
TString mPath;
|
||||||
|
bool mIsPath;
|
||||||
|
bool mIsValidPath;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CResourceInfo()
|
||||||
|
: mPath(""), mIsPath(false), mIsValidPath(false) {}
|
||||||
|
|
||||||
|
CResourceInfo(const TString& rkPath)
|
||||||
|
: mPath(rkPath), mIsPath(true)
|
||||||
|
{
|
||||||
|
mIsValidPath = boost::filesystem::exists(rkPath.ToStdString());
|
||||||
|
}
|
||||||
|
|
||||||
|
CResourceInfo(const CUniqueID& rkID, CFourCC Type)
|
||||||
|
: mIsPath(false), mIsValidPath(false)
|
||||||
|
{
|
||||||
|
mPath = rkID.ToString() + "." + Type.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline CUniqueID ID() const
|
||||||
|
{
|
||||||
|
if (!mIsPath)
|
||||||
|
return CUniqueID::FromString(mPath.GetFileName());
|
||||||
|
else
|
||||||
|
return CUniqueID::skInvalidID64;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline CFourCC Type() const
|
||||||
|
{
|
||||||
|
return mPath.GetFileExtension();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline TString ToString() const
|
||||||
|
{
|
||||||
|
return mPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline CResource* Load() const
|
||||||
|
{
|
||||||
|
if (!IsValid())
|
||||||
|
return nullptr;
|
||||||
|
if (mIsPath)
|
||||||
|
return gResCache.GetResource(mPath);
|
||||||
|
else
|
||||||
|
return gResCache.GetResource(ID(), Type());
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool IsValid() const
|
||||||
|
{
|
||||||
|
if (!mIsPath)
|
||||||
|
return ID().IsValid();
|
||||||
|
else
|
||||||
|
return mIsValidPath;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CRESOURCEINFO
|
||||||
|
|
|
@ -97,43 +97,17 @@ void CScriptLoader::ReadProperty(IProperty *pProp, u32 Size, IInputStream& SCLY)
|
||||||
TFileProperty *pFileCast = static_cast<TFileProperty*>(pProp);
|
TFileProperty *pFileCast = static_cast<TFileProperty*>(pProp);
|
||||||
|
|
||||||
CUniqueID ResID = (mVersion < eCorruptionProto ? SCLY.ReadLong() : SCLY.ReadLongLong());
|
CUniqueID ResID = (mVersion < eCorruptionProto ? SCLY.ReadLong() : SCLY.ReadLongLong());
|
||||||
const TStringList& Extensions = static_cast<CFileTemplate*>(pTemp)->Extensions();
|
const TStringList& rkExtensions = static_cast<CFileTemplate*>(pTemp)->Extensions();
|
||||||
|
|
||||||
CResource *pRes = nullptr;
|
CResourceInfo Info(ResID, "UNKN");
|
||||||
|
|
||||||
// Check for each extension individually until we find a match
|
|
||||||
// This could be done better with a function to fetch the extension given the resource ID
|
|
||||||
// and a "does resource exist" function, but this will do for now
|
|
||||||
bool hasIgnoredExt = false;
|
|
||||||
|
|
||||||
if (ResID.IsValid())
|
if (ResID.IsValid())
|
||||||
{
|
{
|
||||||
for (auto it = Extensions.begin(); it != Extensions.end(); it++)
|
CFourCC Type = gResCache.FindResourceType(ResID, rkExtensions);
|
||||||
{
|
Info = CResourceInfo(ResID, Type);
|
||||||
const TString& ext = *it;
|
|
||||||
|
|
||||||
if ((ext != "MREA") && (ext != "MLVL")) {
|
|
||||||
pRes = gResCache.GetResource(ResID, ext);
|
|
||||||
if (pRes) break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
pFileCast->Set(Info);
|
||||||
hasIgnoredExt = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Property may have an incorrect extension listed - print error
|
|
||||||
if ((!pRes) && (CUniqueID(ResID).IsValid()) && (!hasIgnoredExt))
|
|
||||||
{
|
|
||||||
TString ExtList;
|
|
||||||
for (auto it = Extensions.begin(); it != Extensions.end(); it++)
|
|
||||||
{
|
|
||||||
if (it != Extensions.begin()) ExtList += "/";
|
|
||||||
ExtList += *it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pFileCast->Set(pRes);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ struct SResInfo
|
||||||
u64 resID;
|
u64 resID;
|
||||||
u32 offset;
|
u32 offset;
|
||||||
u32 size;
|
u32 size;
|
||||||
|
|
||||||
|
SResInfo()
|
||||||
|
: compressed(false), resType("NULL"), resID(0), offset(0), size(0) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SRESINFO_H
|
#endif // SRESINFO_H
|
||||||
|
|
|
@ -228,7 +228,7 @@ CModel* CScriptTemplate::FindDisplayModel(CPropertyStruct *pProperties)
|
||||||
if (pProp->Type() == eFileProperty)
|
if (pProp->Type() == eFileProperty)
|
||||||
{
|
{
|
||||||
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
||||||
pRes = pFile->Get();
|
pRes = pFile->Get().Load();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (pProp->Type() == eCharacterProperty)
|
else if (pProp->Type() == eCharacterProperty)
|
||||||
|
@ -268,7 +268,7 @@ CTexture* CScriptTemplate::FindBillboardTexture(CPropertyStruct *pProperties)
|
||||||
if (pProp->Type() == eFileProperty)
|
if (pProp->Type() == eFileProperty)
|
||||||
{
|
{
|
||||||
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
||||||
pRes = pFile->Get();
|
pRes = pFile->Get().Load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ CCollisionMeshGroup* CScriptTemplate::FindCollision(CPropertyStruct *pProperties
|
||||||
if (pProp->Type() == eFileProperty)
|
if (pProp->Type() == eFileProperty)
|
||||||
{
|
{
|
||||||
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
||||||
pRes = pFile->Get();
|
pRes = pFile->Get().Load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ bool CScriptTemplate::HasInGameModel(CPropertyStruct *pProperties)
|
||||||
if (pProp->Type() == eFileProperty)
|
if (pProp->Type() == eFileProperty)
|
||||||
{
|
{
|
||||||
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
TFileProperty *pFile = static_cast<TFileProperty*>(pProp);
|
||||||
pRes = pFile->Get();
|
pRes = pFile->Get().Load();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (pProp->Type() == eCharacterProperty)
|
else if (pProp->Type() == eCharacterProperty)
|
||||||
|
|
|
@ -67,7 +67,7 @@ typedef TTypedProperty<float, eFloatProperty, CFloatValue>
|
||||||
typedef TTypedProperty<TString, eStringProperty, CStringValue> TStringProperty;
|
typedef TTypedProperty<TString, eStringProperty, CStringValue> TStringProperty;
|
||||||
typedef TTypedProperty<CVector3f, eVector3Property, CVector3Value> TVector3Property;
|
typedef TTypedProperty<CVector3f, eVector3Property, CVector3Value> TVector3Property;
|
||||||
typedef TTypedProperty<CColor, eColorProperty, CColorValue> TColorProperty;
|
typedef TTypedProperty<CColor, eColorProperty, CColorValue> TColorProperty;
|
||||||
typedef TTypedProperty<TResPtr<CResource>, eFileProperty, CFileValue> TFileProperty;
|
typedef TTypedProperty<CResourceInfo, eFileProperty, CFileValue> TFileProperty;
|
||||||
typedef TTypedProperty<CAnimationParameters, eCharacterProperty, CCharacterValue> TAnimParamsProperty;
|
typedef TTypedProperty<CAnimationParameters, eCharacterProperty, CCharacterValue> TAnimParamsProperty;
|
||||||
typedef TTypedProperty<std::vector<u8>, eUnknownProperty, CUnknownValue> TUnknownProperty;
|
typedef TTypedProperty<std::vector<u8>, eUnknownProperty, CUnknownValue> TUnknownProperty;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "Core/Log.h"
|
#include "Core/Log.h"
|
||||||
#include "Core/Resource/CAnimationParameters.h"
|
#include "Core/Resource/CAnimationParameters.h"
|
||||||
#include "Core/Resource/CResource.h"
|
#include "Core/Resource/CResource.h"
|
||||||
|
#include "Core/Resource/CResourceInfo.h"
|
||||||
#include "Core/Resource/TResPtr.h"
|
#include "Core/Resource/TResPtr.h"
|
||||||
|
|
||||||
#include <Common/CColor.h>
|
#include <Common/CColor.h>
|
||||||
|
@ -253,11 +254,11 @@ public:
|
||||||
void FromString(const TString&) { }
|
void FromString(const TString&) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFileValue : public TTypedPropertyValue<TResPtr<CResource>>
|
class CFileValue : public TTypedPropertyValue<CResourceInfo>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CFileValue() {}
|
CFileValue() {}
|
||||||
CFileValue(CResource *pRes) { mValue = pRes; }
|
CFileValue(const CResourceInfo& rkInfo) { mValue = rkInfo; }
|
||||||
|
|
||||||
TString ToString() const { return ""; }
|
TString ToString() const { return ""; }
|
||||||
void FromString(const TString&) { }
|
void FromString(const TString&) { }
|
||||||
|
|
|
@ -167,7 +167,7 @@ void CDamageableTriggerExtra::PropertyModified(IProperty *pProperty)
|
||||||
{
|
{
|
||||||
if (pProperty == mpTextureProps[iTex])
|
if (pProperty == mpTextureProps[iTex])
|
||||||
{
|
{
|
||||||
mpTextures[iTex] = mpTextureProps[iTex]->Get();
|
mpTextures[iTex] = mpTextureProps[iTex]->Get().Load();
|
||||||
|
|
||||||
if (mpTextures[iTex] && mpTextures[iTex]->Type() != eTexture)
|
if (mpTextures[iTex] && mpTextures[iTex]->Type() != eTexture)
|
||||||
mpTextures[iTex] = nullptr;
|
mpTextures[iTex] = nullptr;
|
||||||
|
|
|
@ -41,7 +41,7 @@ void CDoorExtra::PropertyModified(IProperty *pProperty)
|
||||||
{
|
{
|
||||||
if (pProperty == mpShieldModelProp)
|
if (pProperty == mpShieldModelProp)
|
||||||
{
|
{
|
||||||
mpShieldModel = mpShieldModelProp->Get();
|
mpShieldModel = mpShieldModelProp->Get().Load();
|
||||||
|
|
||||||
if (mpShieldModel)
|
if (mpShieldModel)
|
||||||
mLocalAABox = mpShieldModel->AABox();
|
mLocalAABox = mpShieldModel->AABox();
|
||||||
|
|
|
@ -42,7 +42,7 @@ CPointOfInterestExtra::CPointOfInterestExtra(CScriptObject *pInstance, CScene *p
|
||||||
void CPointOfInterestExtra::PropertyModified(IProperty* pProperty)
|
void CPointOfInterestExtra::PropertyModified(IProperty* pProperty)
|
||||||
{
|
{
|
||||||
if (mpScanProperty == pProperty)
|
if (mpScanProperty == pProperty)
|
||||||
mpScanData = mpScanProperty->Get();
|
mpScanData = mpScanProperty->Get().Load();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPointOfInterestExtra::ModifyTintColor(CColor& Color)
|
void CPointOfInterestExtra::ModifyTintColor(CColor& Color)
|
||||||
|
|
|
@ -24,7 +24,6 @@ WResourceSelector::WResourceSelector(QWidget *parent) : QWidget(parent)
|
||||||
mAdjustPreviewToParent = false;
|
mAdjustPreviewToParent = false;
|
||||||
|
|
||||||
// Initialize Resource Members
|
// Initialize Resource Members
|
||||||
mpResource = nullptr;
|
|
||||||
mResourceValid = false;
|
mResourceValid = false;
|
||||||
|
|
||||||
// Create Widgets
|
// Create Widgets
|
||||||
|
@ -102,9 +101,9 @@ bool WResourceSelector::IsSupportedExtension(const QString& extension)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WResourceSelector::HasSupportedExtension(CResource* pRes)
|
bool WResourceSelector::HasSupportedExtension(const CResourceInfo& rkRes)
|
||||||
{
|
{
|
||||||
return IsSupportedExtension(TO_QSTRING(pRes->FullSource().GetFileExtension()));
|
return IsSupportedExtension(TO_QSTRING(rkRes.Type().ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************ GETTERS ************
|
// ************ GETTERS ************
|
||||||
|
@ -132,12 +131,20 @@ bool WResourceSelector::IsPreviewPanelEnabled()
|
||||||
// ************ SETTERS ************
|
// ************ SETTERS ************
|
||||||
void WResourceSelector::SetResource(CResource *pRes)
|
void WResourceSelector::SetResource(CResource *pRes)
|
||||||
{
|
{
|
||||||
mpResource = pRes;
|
|
||||||
|
|
||||||
if (pRes)
|
if (pRes)
|
||||||
|
SetResource(CResourceInfo(pRes->ResID(), CFourCC(pRes->Source().GetFileExtension())));
|
||||||
|
else
|
||||||
|
SetResource(CResourceInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
void WResourceSelector::SetResource(const CResourceInfo& rkRes)
|
||||||
{
|
{
|
||||||
mResourceValid = HasSupportedExtension(pRes);
|
mResource = rkRes;
|
||||||
mUI.LineEdit->setText(TO_QSTRING(pRes->FullSource()));
|
|
||||||
|
if (mResource.IsValid())
|
||||||
|
{
|
||||||
|
mResourceValid = HasSupportedExtension(rkRes);
|
||||||
|
mUI.LineEdit->setText(TO_QSTRING(mResource.ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -248,31 +255,27 @@ void WResourceSelector::OnExportButtonClicked()
|
||||||
// or delegate it entirely to the signals?
|
// or delegate it entirely to the signals?
|
||||||
void WResourceSelector::Edit()
|
void WResourceSelector::Edit()
|
||||||
{
|
{
|
||||||
emit EditResource(mpResource);
|
emit EditResource(mResource);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WResourceSelector::Export()
|
void WResourceSelector::Export()
|
||||||
{
|
{
|
||||||
emit ExportResource(mpResource);
|
emit ExportResource(mResource);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WResourceSelector::LoadResource(const QString& ResPath)
|
void WResourceSelector::LoadResource(const QString& ResPath)
|
||||||
{
|
{
|
||||||
mpResource = nullptr;
|
mResource = CResourceInfo();
|
||||||
|
|
||||||
TString pathStr = ResPath.toStdString();
|
TString PathStr = ResPath.toStdString();
|
||||||
TString ext = pathStr.GetFileExtension();
|
TString Ext = PathStr.GetFileExtension();
|
||||||
|
|
||||||
if (IsSupportedExtension(TO_QSTRING(ext)))
|
if (IsSupportedExtension(TO_QSTRING(Ext)))
|
||||||
{
|
{
|
||||||
if ((ext != "MREA") && (ext != "MLVL"))
|
mResource = CResourceInfo(TO_TSTRING(ResPath));
|
||||||
{
|
mResourceValid = mResource.IsValid();
|
||||||
mpResource = gResCache.GetResource(pathStr);
|
|
||||||
mResourceValid = (mpResource != nullptr);
|
|
||||||
|
|
||||||
if (mPreviewPanelValid) mpPreviewPanel->SetResource(mpResource);
|
if (mPreviewPanelValid) mpPreviewPanel->SetResource(mResource.Load());
|
||||||
}
|
|
||||||
else mResourceValid = false;
|
|
||||||
}
|
}
|
||||||
else mResourceValid = false;
|
else mResourceValid = false;
|
||||||
|
|
||||||
|
@ -287,7 +290,7 @@ void WResourceSelector::CreatePreviewPanel()
|
||||||
mpPreviewPanel = nullptr;
|
mpPreviewPanel = nullptr;
|
||||||
|
|
||||||
if (mResourceValid)
|
if (mResourceValid)
|
||||||
mpPreviewPanel = IPreviewPanel::CreatePanel(mpResource->Type(), this);
|
mpPreviewPanel = IPreviewPanel::CreatePanel(CResource::ResTypeForExtension(mResource.Type()), this);
|
||||||
|
|
||||||
if (!mpPreviewPanel) mPreviewPanelValid = false;
|
if (!mpPreviewPanel) mPreviewPanelValid = false;
|
||||||
|
|
||||||
|
@ -295,7 +298,7 @@ void WResourceSelector::CreatePreviewPanel()
|
||||||
{
|
{
|
||||||
mPreviewPanelValid = true;
|
mPreviewPanelValid = true;
|
||||||
mpPreviewPanel->setWindowFlags(Qt::ToolTip);
|
mpPreviewPanel->setWindowFlags(Qt::ToolTip);
|
||||||
if (mpResource) mpPreviewPanel->SetResource(mpResource);
|
if (mResourceValid) mpPreviewPanel->SetResource(mResource.Load());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,13 +348,13 @@ void WResourceSelector::SetButtonsBasedOnResType()
|
||||||
{
|
{
|
||||||
// Basically this function sets whether the "Export" and "Edit"
|
// Basically this function sets whether the "Export" and "Edit"
|
||||||
// buttons are present based on the resource type.
|
// buttons are present based on the resource type.
|
||||||
if (!mpResource)
|
if (!mResource.IsValid())
|
||||||
{
|
{
|
||||||
SetEditButtonEnabled(false);
|
SetEditButtonEnabled(false);
|
||||||
SetExportButtonEnabled(false);
|
SetExportButtonEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
else switch (mpResource->Type())
|
else switch (CResource::ResTypeForExtension(mResource.Type()))
|
||||||
{
|
{
|
||||||
// Export button should be enabled here because CTexture already has a DDS export function
|
// Export button should be enabled here because CTexture already has a DDS export function
|
||||||
// However, need to figure out what sort of interface to create to do it. Disabling until then.
|
// However, need to figure out what sort of interface to create to do it. Disabling until then.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "IPreviewPanel.h"
|
#include "IPreviewPanel.h"
|
||||||
#include <Common/CFourCC.h>
|
#include <Common/CFourCC.h>
|
||||||
#include <Core/Resource/TResPtr.h>
|
#include <Core/Resource/CResourceInfo.h>
|
||||||
#include <Core/Resource/EResType.h>
|
#include <Core/Resource/EResType.h>
|
||||||
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
@ -29,7 +29,7 @@ class WResourceSelector : public QWidget
|
||||||
bool mAdjustPreviewToParent;
|
bool mAdjustPreviewToParent;
|
||||||
|
|
||||||
// Resource
|
// Resource
|
||||||
TResPtr<CResource> mpResource;
|
CResourceInfo mResource;
|
||||||
bool mResourceValid;
|
bool mResourceValid;
|
||||||
|
|
||||||
// UI
|
// UI
|
||||||
|
@ -44,8 +44,8 @@ class WResourceSelector : public QWidget
|
||||||
// Functions
|
// Functions
|
||||||
signals:
|
signals:
|
||||||
void ResourceChanged(const QString& NewResPath);
|
void ResourceChanged(const QString& NewResPath);
|
||||||
void EditResource(CResource *pRes);
|
void EditResource(const CResourceInfo& rkRes);
|
||||||
void ExportResource(CResource *pRes);
|
void ExportResource(const CResourceInfo& rkRes);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit WResourceSelector(QWidget *parent = 0);
|
explicit WResourceSelector(QWidget *parent = 0);
|
||||||
|
@ -53,7 +53,7 @@ public:
|
||||||
bool event(QEvent *);
|
bool event(QEvent *);
|
||||||
bool eventFilter(QObject *, QEvent *);
|
bool eventFilter(QObject *, QEvent *);
|
||||||
bool IsSupportedExtension(const QString& extension);
|
bool IsSupportedExtension(const QString& extension);
|
||||||
bool HasSupportedExtension(CResource* pRes);
|
bool HasSupportedExtension(const CResourceInfo& rkRes);
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
QString GetText();
|
QString GetText();
|
||||||
|
@ -63,6 +63,7 @@ public:
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
void SetResource(CResource *pRes);
|
void SetResource(CResource *pRes);
|
||||||
|
void SetResource(const CResourceInfo& rkRes);
|
||||||
void SetAllowedExtensions(const QString& extension);
|
void SetAllowedExtensions(const QString& extension);
|
||||||
void SetAllowedExtensions(const QStringList& extensions);
|
void SetAllowedExtensions(const QStringList& extensions);
|
||||||
void SetAllowedExtensions(const TStringList& extensions);
|
void SetAllowedExtensions(const TStringList& extensions);
|
||||||
|
|
Loading…
Reference in New Issue