mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-09-10 00:57:11 +02:00
Implement new API changes.
Initial implementation of entity streaming events, 3D arrows, drunk effects., camera interpolation, entity options and whatnot. Not yet tested!
This commit is contained in:
@@ -1277,6 +1277,118 @@ void Core::EmitPlayerUpdate(Int32 player_id, vcmpPlayerUpdate update_type)
|
||||
(*mOnPlayerUpdate.first)(inst.mObj, static_cast< Int32 >(update_type));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitCheckpointStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
CheckpointInst & _checkpoint = m_Checkpoints.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_checkpoint.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_checkpoint.mObj, static_cast< Int32 >(vcmpEntityPoolCheckPoint), is_deleted);
|
||||
(*mOnCheckpointStream.first)(_client.mObj, _checkpoint.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _checkpoint.mObj, static_cast< Int32 >(vcmpEntityPoolCheckPoint), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitObjectStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
ObjectInst & _object = m_Objects.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_object.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_object.mObj, static_cast< Int32 >(vcmpEntityPoolObject), is_deleted);
|
||||
(*mOnObjectStream.first)(_client.mObj, _object.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _object.mObj, static_cast< Int32 >(vcmpEntityPoolObject), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitPickupStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
PickupInst & _pickup = m_Pickups.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_pickup.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_pickup.mObj, static_cast< Int32 >(vcmpEntityPoolPickup), is_deleted);
|
||||
(*mOnPickupStream.first)(_client.mObj, _pickup.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _pickup.mObj, static_cast< Int32 >(vcmpEntityPoolPickup), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitVehicleStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
VehicleInst & _vehicle = m_Vehicles.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_vehicle.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_vehicle.mObj, static_cast< Int32 >(vcmpEntityPoolVehicle), is_deleted);
|
||||
(*mOnVehicleStream.first)(_client.mObj, _vehicle.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _vehicle.mObj, static_cast< Int32 >(vcmpEntityPoolVehicle), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitPlayerStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
PlayerInst & _player = m_Players.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_player.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_player.mObj, static_cast< Int32 >(vcmpEntityPoolPlayer), is_deleted);
|
||||
(*mOnPlayerStream.first)(_client.mObj, _player.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _player.mObj, static_cast< Int32 >(vcmpEntityPoolPlayer), is_deleted);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitEntityStreaming(int32_t player_id, int32_t entity_id, vcmpEntityPool entity_type, bool is_deleted)
|
||||
{
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(player_id, SQMOD_PLAYER_POOL))
|
||||
{
|
||||
STHROWF("Cannot notify player with invalid identifier about streaming: %d", player_id);
|
||||
}
|
||||
// See what type of entity changed
|
||||
switch (entity_type)
|
||||
{
|
||||
case vcmpEntityPoolVehicle: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_VEHICLE_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream vehicle with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitVehicleStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolObject: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_OBJECT_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream object with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitObjectStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolPickup: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_PICKUP_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream pickup with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitPickupStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolPlayer: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_PLAYER_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream player with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitPlayerStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolCheckPoint: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_CHECKPOINT_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream checkpoint with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitCheckpointStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
default:
|
||||
LogErr("Unknown change in entity streaming: client %d > type %d > entity %d", player_id, entity_type, entity_id);
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitVehicleUpdate(Int32 vehicle_id, vcmpVehicleUpdate update_type)
|
||||
{
|
||||
|
@@ -417,6 +417,7 @@ void Core::CheckpointInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnEntered, mEvents, "Entered");
|
||||
InitSignalPair(mOnExited, mEvents, "Exited");
|
||||
InitSignalPair(mOnWorld, mEvents, "World");
|
||||
@@ -428,6 +429,7 @@ void Core::CheckpointInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnEntered);
|
||||
ResetSignalPair(mOnExited);
|
||||
ResetSignalPair(mOnWorld);
|
||||
@@ -452,6 +454,7 @@ void Core::KeybindInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnKeyPress, mEvents, "KeyPress");
|
||||
InitSignalPair(mOnKeyRelease, mEvents, "KeyRelease");
|
||||
}
|
||||
@@ -483,6 +486,7 @@ void Core::ObjectInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnShot, mEvents, "Shot");
|
||||
InitSignalPair(mOnTouched, mEvents, "Touched");
|
||||
InitSignalPair(mOnWorld, mEvents, "World");
|
||||
@@ -495,6 +499,7 @@ void Core::ObjectInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnShot);
|
||||
ResetSignalPair(mOnTouched);
|
||||
ResetSignalPair(mOnWorld);
|
||||
@@ -520,6 +525,7 @@ void Core::PickupInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnRespawn, mEvents, "Respawn");
|
||||
InitSignalPair(mOnClaimed, mEvents, "Claimed");
|
||||
InitSignalPair(mOnCollected, mEvents, "Collected");
|
||||
@@ -535,6 +541,7 @@ void Core::PickupInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnRespawn);
|
||||
ResetSignalPair(mOnClaimed);
|
||||
ResetSignalPair(mOnCollected);
|
||||
@@ -563,6 +570,7 @@ void Core::PlayerInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnRequestClass, mEvents, "RequestClass");
|
||||
InitSignalPair(mOnRequestSpawn, mEvents, "RequestSpawn");
|
||||
InitSignalPair(mOnSpawn, mEvents, "Spawn");
|
||||
@@ -618,6 +626,7 @@ void Core::PlayerInst::InitEvents()
|
||||
InitSignalPair(mOnCheckpointEntered, mEvents, "CheckpointEntered");
|
||||
InitSignalPair(mOnCheckpointExited, mEvents, "CheckpointExited");
|
||||
InitSignalPair(mOnClientScriptData, mEvents, "ClientScriptData");
|
||||
InitSignalPair(mOnEntityStream, mEvents, "EntityStream");
|
||||
InitSignalPair(mOnUpdate, mEvents, "Update");
|
||||
InitSignalPair(mOnHealth, mEvents, "Health");
|
||||
InitSignalPair(mOnArmour, mEvents, "Armour");
|
||||
@@ -643,6 +652,7 @@ void Core::PlayerInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnRequestClass);
|
||||
ResetSignalPair(mOnRequestSpawn);
|
||||
ResetSignalPair(mOnSpawn);
|
||||
@@ -698,6 +708,7 @@ void Core::PlayerInst::DropEvents()
|
||||
ResetSignalPair(mOnCheckpointEntered);
|
||||
ResetSignalPair(mOnCheckpointExited);
|
||||
ResetSignalPair(mOnClientScriptData);
|
||||
ResetSignalPair(mOnEntityStream);
|
||||
ResetSignalPair(mOnUpdate);
|
||||
ResetSignalPair(mOnHealth);
|
||||
ResetSignalPair(mOnArmour);
|
||||
@@ -736,6 +747,7 @@ void Core::VehicleInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnEmbarking, mEvents, "Embarking");
|
||||
InitSignalPair(mOnEmbarked, mEvents, "Embarked");
|
||||
InitSignalPair(mOnDisembark, mEvents, "Disembark");
|
||||
@@ -763,6 +775,7 @@ void Core::VehicleInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnEmbarking);
|
||||
ResetSignalPair(mOnEmbarked);
|
||||
ResetSignalPair(mOnDisembark);
|
||||
|
@@ -75,6 +75,11 @@ void Core::InitEvents()
|
||||
InitSignalPair(mOnPickupCustom, m_Events, "PickupCustom");
|
||||
InitSignalPair(mOnPlayerCustom, m_Events, "PlayerCustom");
|
||||
InitSignalPair(mOnVehicleCustom, m_Events, "VehicleCustom");
|
||||
InitSignalPair(mOnCheckpointStream, m_Events, "CheckpointStream");
|
||||
InitSignalPair(mOnObjectStream, m_Events, "ObjectStream");
|
||||
InitSignalPair(mOnPickupStream, m_Events, "PickupStream");
|
||||
InitSignalPair(mOnPlayerStream, m_Events, "PlayerStream");
|
||||
InitSignalPair(mOnVehicleStream, m_Events, "VehicleStream");
|
||||
InitSignalPair(mOnServerStartup, m_Events, "ServerStartup");
|
||||
InitSignalPair(mOnServerShutdown, m_Events, "ServerShutdown");
|
||||
InitSignalPair(mOnServerFrame, m_Events, "ServerFrame");
|
||||
@@ -181,6 +186,7 @@ void Core::InitEvents()
|
||||
InitSignalPair(mOnVehicleHandlingRule, m_Events, "VehicleHandlingRule");
|
||||
InitSignalPair(mOnVehicleEnterArea, m_Events, "VehicleEnterArea");
|
||||
InitSignalPair(mOnVehicleLeaveArea, m_Events, "VehicleLeaveArea");
|
||||
InitSignalPair(mOnEntityStream, m_Events, "EntityStream");
|
||||
InitSignalPair(mOnServerOption, m_Events, "ServerOption");
|
||||
InitSignalPair(mOnScriptReload, m_Events, "ScriptReload");
|
||||
InitSignalPair(mOnScriptLoaded, m_Events, "ScriptLoaded");
|
||||
@@ -210,6 +216,11 @@ void Core::DropEvents()
|
||||
ResetSignalPair(mOnPickupCustom);
|
||||
ResetSignalPair(mOnPlayerCustom);
|
||||
ResetSignalPair(mOnVehicleCustom);
|
||||
ResetSignalPair(mOnCheckpointStream);
|
||||
ResetSignalPair(mOnObjectStream);
|
||||
ResetSignalPair(mOnPickupStream);
|
||||
ResetSignalPair(mOnPlayerStream);
|
||||
ResetSignalPair(mOnVehicleStream);
|
||||
ResetSignalPair(mOnServerStartup);
|
||||
ResetSignalPair(mOnServerShutdown);
|
||||
ResetSignalPair(mOnServerFrame);
|
||||
@@ -316,6 +327,7 @@ void Core::DropEvents()
|
||||
ResetSignalPair(mOnVehicleHandlingRule);
|
||||
ResetSignalPair(mOnVehicleEnterArea);
|
||||
ResetSignalPair(mOnVehicleLeaveArea);
|
||||
ResetSignalPair(mOnEntityStream);
|
||||
ResetSignalPair(mOnServerOption);
|
||||
ResetSignalPair(mOnScriptReload);
|
||||
ResetSignalPair(mOnScriptLoaded);
|
||||
|
Reference in New Issue
Block a user