Refine MxObjectFactory (#205)

* Refine MxObjectFactory

* Change interface of Destroy

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Andrew Gutekanst 2023-10-14 08:59:06 -04:00 committed by GitHub
parent a24a798c82
commit c66b6aa123
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 11 deletions

View file

@ -29,7 +29,7 @@ MxCore *LegoObjectFactory::Create(const char *p_name)
}
// OFFSET: LEGO1 0x1000fb30 STUB
void LegoObjectFactory::Destroy(void *p_object)
void LegoObjectFactory::Destroy(MxCore *p_object)
{
// TODO
}

View file

@ -12,7 +12,7 @@ class LegoObjectFactory : public MxObjectFactory
public:
LegoObjectFactory();
virtual MxCore *Create(const char *p_name) override; // vtable 0x14
virtual void Destroy(void *p_object) override; // vtable 0x18
virtual void Destroy(MxCore *p_object) override; // vtable 0x18
private:
#define X(V) MxAtomId m_id##V;
FOR_LEGOOBJECTFACTORY_OBJECTS(X)

View file

@ -29,17 +29,19 @@ MxObjectFactory::MxObjectFactory()
MxCore *MxObjectFactory::Create(const char *p_name)
{
MxAtomId atom(p_name, LookupMode_Exact);
MxCore* object = NULL;
if (0) {
#define X(V) } else if (this->m_id##V == atom) { return new V;
if (0) {}
#define X(V) else if (this->m_id##V == atom) { object = new V; }
FOR_MXOBJECTFACTORY_OBJECTS(X)
#undef X
} else {
return NULL;
}
else {}
return object;
}
// OFFSET: LEGO1 0x100b1a30 STUB
void MxObjectFactory::Destroy(void *p_object) {
// FIXME
// OFFSET: LEGO1 0x100b1a30
void MxObjectFactory::Destroy(MxCore *p_object)
{
delete p_object;
}

View file

@ -38,7 +38,7 @@ class MxObjectFactory : public MxCore
}
virtual MxCore *Create(const char *p_name); // vtable 0x14
virtual void Destroy(void *p_object); // vtable 0x18
virtual void Destroy(MxCore *p_object); // vtable 0x18
private:
#define X(V) MxAtomId m_id##V;
FOR_MXOBJECTFACTORY_OBJECTS(X)