mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-07 16:48:40 +00:00
sao prototype global variables no longer depend on link order to be correctly added to factory
This commit is contained in:
parent
569156b013
commit
de166e75a1
2 changed files with 12 additions and 9 deletions
|
@ -43,8 +43,8 @@ ServerActiveObject* ServerActiveObject::create(u8 type,
|
||||||
const std::string &data)
|
const std::string &data)
|
||||||
{
|
{
|
||||||
// Find factory function
|
// Find factory function
|
||||||
core::map<u16, Factory>::Node *n;
|
core::map<u8, Factory>::Node *n;
|
||||||
n = m_types.find(type);
|
n = ServerActiveObject::getTypes().find(type);
|
||||||
if(n == NULL)
|
if(n == NULL)
|
||||||
{
|
{
|
||||||
// If factory is not found, just return.
|
// If factory is not found, just return.
|
||||||
|
@ -58,13 +58,13 @@ ServerActiveObject* ServerActiveObject::create(u8 type,
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerActiveObject::registerType(u16 type, Factory f)
|
void ServerActiveObject::registerType(u8 type, Factory f)
|
||||||
{
|
{
|
||||||
core::map<u16, Factory>::Node *n;
|
core::map<u8, Factory>::Node *n;
|
||||||
n = m_types.find(type);
|
n = ServerActiveObject::getTypes().find(type);
|
||||||
if(n)
|
if(n)
|
||||||
return;
|
return;
|
||||||
m_types.insert(type, f);
|
ServerActiveObject::getTypes().insert(type, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerActiveObject::getWieldDiggingProperties(ToolDiggingProperties *dst)
|
void ServerActiveObject::getWieldDiggingProperties(ToolDiggingProperties *dst)
|
||||||
|
|
|
@ -200,14 +200,17 @@ protected:
|
||||||
typedef ServerActiveObject* (*Factory)
|
typedef ServerActiveObject* (*Factory)
|
||||||
(ServerEnvironment *env, v3f pos,
|
(ServerEnvironment *env, v3f pos,
|
||||||
const std::string &data);
|
const std::string &data);
|
||||||
static void registerType(u16 type, Factory f);
|
static void registerType(u8 type, Factory f);
|
||||||
|
|
||||||
ServerEnvironment *m_env;
|
ServerEnvironment *m_env;
|
||||||
v3f m_base_position;
|
v3f m_base_position;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Used for creating objects based on type
|
static core::map<u8, Factory>& getTypes()
|
||||||
static core::map<u16, Factory> m_types;
|
{
|
||||||
|
static core::map<u8, Factory> types;
|
||||||
|
return types;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue