Skip to content

Commit

Permalink
AngelScript: Fixed RefCountingObject<> regs
Browse files Browse the repository at this point in the history
The 'engine' param in `Register*()` funcs was moved to the front, for style - better resembles the AngelScript reg funcs, and context objects generally get passed first.
  • Loading branch information
ohlidalp committed Oct 14, 2022
1 parent 5e11cfc commit 5ef1f0b
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 18 deletions.
4 changes: 2 additions & 2 deletions source/main/scripting/bindings/ActorAngelscript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ void RoR::RegisterActor(asIScriptEngine *engine)


// class Actor (historically Beam)
result = engine->RegisterObjectType("BeamClass", sizeof(Actor), asOBJ_REF); ROR_ASSERT(result>=0);
ActorPtr::RegisterRefCountingObjectPtr("BeamClassPtr", "BeamClass", engine);
Actor::RegisterRefCountingObject(engine, "BeamClass");
ActorPtr::RegisterRefCountingObjectPtr(engine, "BeamClassPtr", "BeamClass");
result = engine->RegisterObjectMethod("BeamClass", "void scaleTruck(float)", asMETHOD(Actor,scaleTruck), asCALL_THISCALL); ROR_ASSERT(result>=0);
result = engine->RegisterObjectMethod("BeamClass", "string getTruckName()", asMETHOD(Actor,getTruckName), asCALL_THISCALL); ROR_ASSERT(result>=0);
result = engine->RegisterObjectMethod("BeamClass", "string getTruckFileName()", asMETHOD(Actor,getTruckFileName), asCALL_THISCALL); ROR_ASSERT(result>=0);
Expand Down
16 changes: 8 additions & 8 deletions source/main/scripting/bindings/ProceduralRoadAngelscript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ void RoR::RegisterProceduralRoad(asIScriptEngine* engine)
result = engine->RegisterEnumValue("TextureFit", "TEXFIT_CONCRETEUNDER", (int)TextureFit::TEXFIT_CONCRETEUNDER); ROR_ASSERT(result >= 0);

// struct ProceduralPoint (ref)
result = engine->RegisterObjectType("ProceduralPointClass", sizeof(ProceduralPoint), asOBJ_REF); ROR_ASSERT(result >= 0);
ProceduralPoint::RegisterRefCountingObject(engine, "ProceduralPointClass");
ProceduralPointPtr::RegisterRefCountingObjectPtr(engine, "ProceduralPointClassPtr", "ProceduralPointClass");
result = engine->RegisterObjectBehaviour("ProceduralPointClass", asBEHAVE_FACTORY, "ProceduralPointClass@ f()", asFUNCTION(ProceduralPointFactory), asCALL_CDECL); ROR_ASSERT(result >= 0);
ProceduralPointPtr::RegisterRefCountingObjectPtr("ProceduralPointClassPtr", "ProceduralPointClass", engine);
result = engine->RegisterObjectProperty("ProceduralPointClass", "vector3 position", offsetof(ProceduralPoint, position)); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectProperty("ProceduralPointClass", "quaternion rotation", offsetof(ProceduralPoint, rotation)); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectProperty("ProceduralPointClass", "float width", offsetof(ProceduralPoint, width)); ROR_ASSERT(result >= 0);
Expand All @@ -83,9 +83,9 @@ void RoR::RegisterProceduralRoad(asIScriptEngine* engine)
result = engine->RegisterObjectProperty("ProceduralPointClass", "int pillar_type", offsetof(ProceduralPoint, pillartype)); ROR_ASSERT(result >= 0);

// class ProceduralRoad (ref)
result = engine->RegisterObjectType("ProceduralRoadClass", sizeof(ProceduralRoad), asOBJ_REF); ROR_ASSERT(result >= 0);
ProceduralRoad::RegisterRefCountingObject(engine, "ProceduralRoadClass");
ProceduralRoadPtr::RegisterRefCountingObjectPtr(engine, "ProceduralRoadClassPtr", "ProceduralRoadClass");
result = engine->RegisterObjectBehaviour("ProceduralRoadClass", asBEHAVE_FACTORY, "ProceduralRoadClass@ f()", asFUNCTION(ProceduralRoadFactory), asCALL_CDECL); ROR_ASSERT(result >= 0);
ProceduralRoadPtr::RegisterRefCountingObjectPtr("ProceduralRoadClassPtr", "ProceduralRoadClass", engine);
result = engine->RegisterObjectMethod("ProceduralRoadClass", "void addBlock(vector3 pos, quaternion rot, RoadType type, float width, float border_width, float border_height, int pillar_type = 1)", asMETHOD(RoR::ProceduralRoad, addBlock), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("ProceduralRoadClass", "void addQuad(vector3 p1, vector3 p2, vector3 p3, vector3 p4, TextureFit texfit, vector3 pos, vector3 lastpos, float width, bool flip = false)", asMETHOD(RoR::ProceduralRoad, addQuad), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("ProceduralRoadClass", "void addCollisionQuad(vector3 p1, vector3 p2, vector3 p3, vector3 p4, const string&in gm_name, bool flip = false)", asMETHODPR(RoR::ProceduralRoad, addCollisionQuad, (Ogre::Vector3, Ogre::Vector3, Ogre::Vector3, Ogre::Vector3, std::string const&, bool), void), asCALL_THISCALL); ROR_ASSERT(result >= 0);
Expand All @@ -94,9 +94,9 @@ void RoR::RegisterProceduralRoad(asIScriptEngine* engine)
result = engine->RegisterObjectMethod("ProceduralRoadClass", "void setCollisionEnabled(bool v)", asMETHOD(RoR::ProceduralRoad, setCollisionEnabled), asCALL_THISCALL); ROR_ASSERT(result >= 0);

// class ProceduralObject (ref)
result = engine->RegisterObjectType("ProceduralObjectClass", sizeof(ProceduralObject), asOBJ_REF); ROR_ASSERT(result>=0);
ProceduralObject::RegisterRefCountingObject(engine, "ProceduralObjectClass");
ProceduralObjectPtr::RegisterRefCountingObjectPtr(engine, "ProceduralObjectClassPtr", "ProceduralObjectClass");
result = engine->RegisterObjectBehaviour("ProceduralObjectClass", asBEHAVE_FACTORY, "ProceduralObjectClass@ f()", asFUNCTION(ProceduralObjectFactory), asCALL_CDECL); ROR_ASSERT(result >= 0);
ProceduralObjectPtr::RegisterRefCountingObjectPtr("ProceduralObjectClassPtr", "ProceduralObjectClass", engine);
result = engine->RegisterObjectMethod("ProceduralObjectClass", "string getName()", asMETHOD(RoR::ProceduralObject, getName), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("ProceduralObjectClass", "void setName(const string&in)", asMETHOD(RoR::ProceduralObject, setName), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("ProceduralObjectClass", "void addPoint(ProceduralPointClass @)", asMETHOD(RoR::ProceduralObject, addPoint), asCALL_THISCALL); ROR_ASSERT(result >= 0);
Expand All @@ -107,8 +107,8 @@ void RoR::RegisterProceduralRoad(asIScriptEngine* engine)
result = engine->RegisterObjectMethod("ProceduralObjectClass", "ProceduralRoadClass @getRoad()", asMETHOD(ProceduralObject, getRoad), asCALL_THISCALL); ROR_ASSERT(result >= 0);

// class ProceduralManager (ref)
result = engine->RegisterObjectType("ProceduralManagerClass", sizeof(ProceduralManager), asOBJ_REF); ROR_ASSERT(result >= 0);
ProceduralObjectPtr::RegisterRefCountingObjectPtr("ProceduralManagerClassPtr", "ProceduralManagerClass", engine);
ProceduralManager::RegisterRefCountingObject(engine, "ProceduralManagerClass");
ProceduralManagerPtr::RegisterRefCountingObjectPtr(engine, "ProceduralManagerClassPtr", "ProceduralManagerClass");
result = engine->RegisterObjectMethod("ProceduralManagerClass", "void addObject(ProceduralObjectClass@)", asMETHOD(ProceduralManager, addObject), asCALL_THISCALL); ROR_ASSERT(result>=0);
result = engine->RegisterObjectMethod("ProceduralManagerClass", "void removeObject(ProceduralObjectClass@)", asMETHOD(ProceduralManager, removeObject), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("ProceduralManagerClass", "int getNumObjects()", asMETHOD(RoR::ProceduralManager, getNumObjects), asCALL_THISCALL); ROR_ASSERT(result >= 0);
Expand Down
5 changes: 2 additions & 3 deletions source/main/scripting/bindings/TerrainAngelscript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ void RoR::RegisterTerrain(asIScriptEngine* engine)
{
int result = 0;

result = engine->RegisterObjectType("TerrainClass", sizeof(RoR::Terrain), asOBJ_REF); ROR_ASSERT(result>=0);
TerrainPtr::RegisterRefCountingObjectPtr("TerrainClassPtr", "TerrainClass", engine);

Terrain::RegisterRefCountingObject(engine, "TerrainClass");
TerrainPtr::RegisterRefCountingObjectPtr(engine, "TerrainClassPtr", "TerrainClass");
result = engine->RegisterObjectMethod("TerrainClass", "string getTerrainName()", asMETHOD(RoR::Terrain,getTerrainName), asCALL_THISCALL); ROR_ASSERT(result>=0);
result = engine->RegisterObjectMethod("TerrainClass", "string getGUID()", asMETHOD(RoR::Terrain,getGUID), asCALL_THISCALL); ROR_ASSERT(result>=0);
result = engine->RegisterObjectMethod("TerrainClass", "int getVersion()", asMETHOD(RoR::Terrain,getVersion), asCALL_THISCALL); ROR_ASSERT(result>=0);
Expand Down
4 changes: 2 additions & 2 deletions source/main/scripting/bindings/VehicleAiAngelscript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ void RoR::RegisterVehicleAi(asIScriptEngine *engine)
result = engine->RegisterEnumValue("AiValues", "AI_SPEED", AI_SPEED); ROR_ASSERT(result >= 0);
result = engine->RegisterEnumValue("AiValues", "AI_POWER", AI_POWER); ROR_ASSERT(result >= 0);

result = engine->RegisterObjectType("VehicleAIClass", sizeof(VehicleAI), asOBJ_REF); ROR_ASSERT(result >= 0);
VehicleAIPtr::RegisterRefCountingObjectPtr("VehicleAIClassPtr", "VehicleAIClass", engine);
VehicleAI::RegisterRefCountingObject(engine, "VehicleAIClass");
VehicleAIPtr::RegisterRefCountingObjectPtr(engine, "VehicleAIClassPtr", "VehicleAIClass");
result = engine->RegisterObjectMethod("VehicleAIClass", "void addWaypoints(dictionary &in)", asMETHOD(VehicleAI, AddWaypoint), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("VehicleAIClass", "void setActive(bool)", asMETHOD(VehicleAI, SetActive), asCALL_THISCALL); ROR_ASSERT(result >= 0);
result = engine->RegisterObjectMethod("VehicleAIClass", "void addEvent(string &in,int &in)", asMETHOD(VehicleAI, AddEvent), asCALL_THISCALL); ROR_ASSERT(result >= 0);
Expand Down
2 changes: 1 addition & 1 deletion source/main/utils/memory/RefCountingObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ template<class T> class RefCountingObject
}
}

static void RegisterRefCountingObject(const char* name, AngelScript::asIScriptEngine *engine)
static void RegisterRefCountingObject(AngelScript::asIScriptEngine* engine, const char* name)
{
using namespace AngelScript;

Expand Down
4 changes: 2 additions & 2 deletions source/main/utils/memory/RefCountingObjectPtr.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class RefCountingObjectPtr
void EnumReferences(AngelScript::asIScriptEngine *engine);
void ReleaseReferences(AngelScript::asIScriptEngine *engine);

static void RegisterRefCountingObjectPtr(const char* handle_name, const char* obj_name, AngelScript::asIScriptEngine *engine);
static void RegisterRefCountingObjectPtr(AngelScript::asIScriptEngine* engine, const char* handle_name, const char* obj_name);

/// It's CRITICAL that this function gets invoked only once for each object in memory,
/// and subsequent shared pointers are created from the original shared pointer.
Expand Down Expand Up @@ -78,7 +78,7 @@ class RefCountingObjectPtr
};

template<class T>
void RefCountingObjectPtr<T>::RegisterRefCountingObjectPtr(const char* handle_name, const char* obj_name, AngelScript::asIScriptEngine *engine)
void RefCountingObjectPtr<T>::RegisterRefCountingObjectPtr(AngelScript::asIScriptEngine* engine, const char* handle_name, const char* obj_name)
{
using namespace AngelScript;

Expand Down

0 comments on commit 5ef1f0b

Please sign in to comment.