Fix A_ChangeModel serialization
I overlooked this part on my first A_ChangeModel fix
This commit is contained in:
parent
631eb5847b
commit
ce479e09ff
10 changed files with 95 additions and 76 deletions
|
|
@ -294,6 +294,21 @@ bool FSerializer::BeginObject(const char *name)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool FSerializer::HasKey(const char* name)
|
||||
{
|
||||
if (isReading())
|
||||
{
|
||||
return r->FindKey(name) != nullptr;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
bool FSerializer::HasObject(const char* name)
|
||||
{
|
||||
if (isReading())
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ public:
|
|||
void ReadObjects(bool hubtravel);
|
||||
bool BeginObject(const char *name);
|
||||
void EndObject();
|
||||
bool HasKey(const char* name);
|
||||
bool HasObject(const char* name);
|
||||
bool BeginArray(const char *name);
|
||||
void EndArray();
|
||||
|
|
@ -245,6 +246,7 @@ FSerializer &Serialize(FSerializer &arc, const char *key, FSoundID &sid, FSoundI
|
|||
FSerializer &Serialize(FSerializer &arc, const char *key, FString &sid, FString *def);
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, NumericValue &sid, NumericValue *def);
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, struct ModelOverride &mo, struct ModelOverride *def);
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, struct AnimModelOverride &mo, struct AnimModelOverride *def);
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, struct AnimOverride &ao, struct AnimOverride *def);
|
||||
FSerializer& Serialize(FSerializer& arc, const char* key, FTranslationID& value, FTranslationID* defval);
|
||||
|
||||
|
|
@ -259,6 +261,16 @@ FSerializer &Serialize(FSerializer &arc, const char *key, T *&value, T **)
|
|||
return arc;
|
||||
}
|
||||
|
||||
template<class A, class B>
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, std::pair<A, B> &value, std::pair<A, B> *def)
|
||||
{
|
||||
arc.BeginObject(key);
|
||||
Serialize(arc, "first", value.first, def ? &def->first : nullptr);
|
||||
Serialize(arc, "second", value.second, def ? &def->second : nullptr);
|
||||
arc.EndObject();
|
||||
return arc;
|
||||
}
|
||||
|
||||
template<class T, class TT>
|
||||
FSerializer &Serialize(FSerializer &arc, const char *key, TArray<T, TT> &value, TArray<T, TT> *def)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
#include "texturemanager.h"
|
||||
#include "modelrenderer.h"
|
||||
|
||||
|
||||
TArray<FString> savedModelFiles;
|
||||
TDeletingArray<FModel*> Models;
|
||||
TArray<FSpriteModelFrame> SpriteModelFrames;
|
||||
TMap<void*, FSpriteModelFrame> BaseSpriteModelFrames;
|
||||
|
|
@ -160,7 +158,7 @@ unsigned FindModel(const char * path, const char * modelfile, bool silent)
|
|||
|
||||
for(unsigned i = 0; i< Models.Size(); i++)
|
||||
{
|
||||
if (!Models[i]->mFileName.CompareNoCase(fullname)) return i;
|
||||
if (Models[i]->mFileName.CompareNoCase(fullname) == 0) return i;
|
||||
}
|
||||
|
||||
auto len = fileSystem.FileLength(lump);
|
||||
|
|
@ -236,6 +234,7 @@ unsigned FindModel(const char * path, const char * modelfile, bool silent)
|
|||
}
|
||||
// The vertex buffer cannot be initialized here because this gets called before OpenGL is initialized
|
||||
model->mFileName = fullname;
|
||||
model->mFilePath = {path, modelfile};
|
||||
return Models.Push(model);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ struct FSpriteModelFrame;
|
|||
|
||||
FTextureID LoadSkin(const char* path, const char* fn);
|
||||
void FlushModels();
|
||||
extern TArray<FString> savedModelFiles;
|
||||
|
||||
extern TDeletingArray<FModel*> Models;
|
||||
extern TArray<FSpriteModelFrame> SpriteModelFrames;
|
||||
extern TMap<void*, FSpriteModelFrame> BaseSpriteModelFrames;
|
||||
|
|
@ -76,6 +76,7 @@ enum EFrameError
|
|||
class FModel
|
||||
{
|
||||
public:
|
||||
|
||||
FModel();
|
||||
virtual ~FModel();
|
||||
|
||||
|
|
@ -100,7 +101,9 @@ public:
|
|||
void DestroyVertexBuffer();
|
||||
|
||||
bool hasSurfaces = false;
|
||||
|
||||
FString mFileName;
|
||||
std::pair<FString, FString> mFilePath;
|
||||
|
||||
FSpriteModelFrame *baseFrame;
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue