Skip to content

Commit bed6540

Browse files
committed
update(vendor): Embedder
1 parent c9f7ad5 commit bed6540

File tree

6 files changed

+39
-18
lines changed

6 files changed

+39
-18
lines changed

src/engine/vgui/vgui.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,10 @@ void VGUI::CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount, CBitVec
133133
Player* player = g_playerManager.GetPlayer(playerid);
134134
if (!player) continue;
135135

136-
ClassData* tInfo = new ClassData({ { "should_mark_freeable", true }, { "transmit_ptr", (void*)pInfo } }, "CCheckTransmitInfo", nullptr);
136+
ClassData* tInfo = new ClassData({ { "transmit_ptr", (void*)pInfo } }, "CCheckTransmitInfo", nullptr);
137137
g_pluginManager.ExecuteEvent("core", "OnPlayerCheckTransmit", { playerid, tInfo }, checktransmitEvent);
138+
delete tInfo;
139+
138140
FilterRenderingItems(player, (CCheckTransmitInfo*)pInfo);
139141
}
140142
}

src/entities/listener.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,18 @@ CEntityListener g_entityListener;
1010

1111
void CEntityListener::OnEntitySpawned(CEntityInstance* pEntity)
1212
{
13-
ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
13+
ClassData* entity = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
1414
g_pluginManager.ExecuteEvent("core", "OnEntitySpawned", { entity }, {});
15+
delete entity;
1516
}
1617

1718
void CEntityListener::OnEntityParentChanged(CEntityInstance* pEntity, CEntityInstance* pNewParent)
1819
{
19-
ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
20-
ClassData* pentity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pNewParent } }, "SDKClass", nullptr);
20+
ClassData* entity = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
21+
ClassData* pentity = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pNewParent } }, "SDKClass", nullptr);
2122
g_pluginManager.ExecuteEvent("core", "OnEntityParentChanged", { entity, pentity }, {});
23+
delete entity;
24+
delete pentity;
2225
}
2326

2427
void EntityAllowHammerID(CEntityInstance* pEntity)
@@ -30,15 +33,17 @@ void CEntityListener::OnEntityCreated(CEntityInstance* pEntity)
3033
{
3134
ExecuteOnce(EntityAllowHammerID(pEntity));
3235

33-
ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
36+
ClassData* entity = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
3437
g_pluginManager.ExecuteEvent("core", "OnEntityCreated", { entity }, {});
38+
delete entity;
3539

3640
if (std::string(pEntity->GetClassname()) == "cs_gamerules")
3741
gameRules = schema::GetProp<void*>(pEntity, "CCSGameRulesProxy", "m_pGameRules");
3842
}
3943

4044
void CEntityListener::OnEntityDeleted(CEntityInstance* pEntity)
4145
{
42-
ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
46+
ClassData* entity = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr);
4347
g_pluginManager.ExecuteEvent("core", "OnEntityDeleted", { entity }, {});
48+
delete entity;
4449
}

src/scripting/engine/gameevents.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ FunctionHook CGameRules_TerminateRound("CGameRules_TerminateRound", dyno::Callba
7272
dyno::ReturnAction Hook_CEntityIdentity_AcceptInput(dyno::CallbackType type, dyno::IHook& hook)
7373
{
7474
ClassData data({ { "plugin_name", std::string("core") } }, "Event", nullptr);
75-
ClassData* ThisPlayer = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityIdentity*>(0)->m_pInstance) } }, "SDKClass", nullptr);
76-
ClassData* Activator = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(2)) } }, "SDKClass", nullptr);
77-
ClassData* Caller = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(3)) } }, "SDKClass", nullptr);
75+
ClassData* ThisPlayer = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityIdentity*>(0)->m_pInstance) } }, "SDKClass", nullptr);
76+
ClassData* Activator = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(2)) } }, "SDKClass", nullptr);
77+
ClassData* Caller = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(3)) } }, "SDKClass", nullptr);
7878

7979
g_pluginManager.ExecuteEvent("core", "OnEntityAcceptInput", { ThisPlayer, hook.getArgument<CUtlSymbolLarge*>(1)->String(), Activator, Caller, hook.getArgument<variant_t*>(4)->ToString(), hook.getArgument<int>(5) }, &data);
8080

@@ -88,6 +88,10 @@ dyno::ReturnAction Hook_CEntityIdentity_AcceptInput(dyno::CallbackType type, dyn
8888
response = true;
8989
}
9090

91+
delete ThisPlayer;
92+
delete Activator;
93+
delete Caller;
94+
9195
if (!response) return dyno::ReturnAction::Supercede;
9296

9397
return dyno::ReturnAction::Ignored;
@@ -114,9 +118,9 @@ dyno::ReturnAction Hook_CBaseEntity_TakeDamage(dyno::CallbackType type, dyno::IH
114118
}
115119

116120
ClassData data({ { "plugin_name", std::string("core") } }, "Event", nullptr);
117-
ClassData* damageinfo = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CTakeDamageInfo") }, { "class_ptr", (void*)info } }, "SDKClass", nullptr);
118-
ClassData* Inflictor = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hInflictor.Get()) } }, "SDKClass", nullptr);
119-
ClassData* Ability = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hAbility.Get()) } }, "SDKClass", nullptr);
121+
ClassData* damageinfo = new ClassData({ { "class_name", std::string("CTakeDamageInfo") }, { "class_ptr", (void*)info } }, "SDKClass", nullptr);
122+
ClassData* Inflictor = new ClassData({ { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hInflictor.Get()) } }, "SDKClass", nullptr);
123+
ClassData* Ability = new ClassData({ { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hAbility.Get()) } }, "SDKClass", nullptr);
120124

121125
g_pluginManager.ExecuteEvent("core", "OnPlayerDamage", { playerid, attackerid, damageinfo, Inflictor, Ability }, &data);
122126

@@ -130,6 +134,10 @@ dyno::ReturnAction Hook_CBaseEntity_TakeDamage(dyno::CallbackType type, dyno::IH
130134
response = true;
131135
}
132136

137+
delete damageinfo;
138+
delete Inflictor;
139+
delete Ability;
140+
133141
if (!response) return dyno::ReturnAction::Supercede;
134142

135143
return dyno::ReturnAction::Ignored;

src/scripting/memory/hooks.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,11 @@ dyno::ReturnAction Hook_FireOutputInternal(dyno::CallbackType type, dyno::IHook&
110110
if (hookIds.size() > 0)
111111
{
112112
ClassData ev({ { "plugin_name", std::string("core") } }, "Event", nullptr);
113-
ClassData* entIOOutput = new ClassData({ { "class_name", std::string("CEntityIOOutput") }, { "class_ptr", (void*)pThis }, { "should_mark_freeable", true } }, "SDKClass", nullptr);
114-
ClassData* Activator = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pActivator }, { "should_mark_freeable", true } }, "SDKClass", nullptr);
115-
ClassData* Caller = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pCaller }, { "should_mark_freeable", true } }, "SDKClass", nullptr);
113+
114+
ClassData* entIOOutput = new ClassData({ { "class_name", std::string("CEntityIOOutput") }, { "class_ptr", (void*)pThis } }, "SDKClass", nullptr);
115+
ClassData* Activator = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pActivator } }, "SDKClass", nullptr);
116+
ClassData* Caller = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pCaller } }, "SDKClass", nullptr);
117+
116118
for (auto id : hookIds)
117119
{
118120
auto result = g_pluginManager.ExecuteEvent("core", std::string("hook:") + (type == dyno::CallbackType::Pre ? "Pre" : "Post") + ":" + id, {
@@ -127,6 +129,10 @@ dyno::ReturnAction Hook_FireOutputInternal(dyno::CallbackType type, dyno::IHook&
127129
return dyno::ReturnAction::Supercede;
128130
}
129131
}
132+
133+
delete entIOOutput;
134+
delete Activator;
135+
delete Caller;
130136
}
131137

132138
return dyno::ReturnAction::Ignored;

src/scripting/sdk/baseclasses.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ LoadScriptingComponent(baseclasses, [](PluginObject plugin, EContext* ctx) -> vo
245245
data->SetData("Vector2D_ptr", vec / otherVec);
246246
context->SetReturn(data);
247247
});
248-
248+
249249
ADD_CLASS_FUNCTION("Vector4D", "Vector4D", [](FunctionContext* context, ClassData* data) -> void {
250250
float x = context->GetArgumentOr<float>(0, 0.0f);
251251
float y = context->GetArgumentOr<float>(1, 0.0f);
@@ -490,7 +490,7 @@ LoadScriptingComponent(baseclasses, [](PluginObject plugin, EContext* ctx) -> vo
490490
if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(data);
491491

492492
QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr");
493-
493+
494494
vec.x /= otherVec.x;
495495
vec.y /= otherVec.y;
496496
vec.z /= otherVec.z;

0 commit comments

Comments
 (0)