diff --git a/CAPI b/CAPI index 1d9249171..d952ccb75 160000 --- a/CAPI +++ b/CAPI @@ -1 +1 @@ -Subproject commit 1d9249171dda867fd428f03fec3396f8d00dba7d +Subproject commit d952ccb75511fe50880d9bd1fe0648bb2a172d30 diff --git a/SDK b/SDK index 3ee7bc4ab..6d4bf31ac 160000 --- a/SDK +++ b/SDK @@ -1 +1 @@ -Subproject commit 3ee7bc4ab20c22359c34c08c38f93815b44bffd5 +Subproject commit 6d4bf31ac7bb2b986793f35145a5df7eb07edbbb diff --git a/Server/Components/CAPI/Impl/Objects/APIs.cpp b/Server/Components/CAPI/Impl/Objects/APIs.cpp index c869f7c29..b6778f621 100644 --- a/Server/Components/CAPI/Impl/Objects/APIs.cpp +++ b/Server/Components/CAPI/Impl/Objects/APIs.cpp @@ -490,7 +490,7 @@ OMP_CAPI(PlayerObject_AttachToPlayer, bool(objectPtr player, objectPtr object, o return true; } -OMP_CAPI(PlayerObject_AttachToObject, bool(objectPtr player, objectPtr object, objectPtr attachedTo, float offsetX, float offsetY, float offsetZ, float rotationX, float rotationY, float rotationZ)) +OMP_CAPI(PlayerObject_AttachToObject, bool(objectPtr player, objectPtr object, objectPtr attachedTo, float offsetX, float offsetY, float offsetZ, float rotationX, float rotationY, float rotationZ, bool syncRotation)) { POOL_ENTITY_RET(players, IPlayer, player, player_, false); PLAYER_POOL_ENTITY_RET(player_, IPlayerObjectData, IPlayerObject, object, object_, false); @@ -498,7 +498,7 @@ OMP_CAPI(PlayerObject_AttachToObject, bool(objectPtr player, objectPtr object, o if (attachedTo) { PLAYER_POOL_ENTITY_RET(player_, IPlayerObjectData, IPlayerObject, attachedTo, attachedTo_, false); - object_->attachToObject(*attachedTo_, { offsetX, offsetY, offsetZ }, { rotationX, rotationY, rotationZ }); + object_->attachToObject(*attachedTo_, { offsetX, offsetY, offsetZ }, { rotationX, rotationY, rotationZ }, syncRotation); } else { diff --git a/Server/Components/Objects/object.hpp b/Server/Components/Objects/object.hpp index 862db8255..82e9c9b7c 100644 --- a/Server/Components/Objects/object.hpp +++ b/Server/Components/Objects/object.hpp @@ -495,6 +495,12 @@ class PlayerObject final : public BaseObject restream(); } + void attachToObject(IPlayerObject& object, Vector3 offset, Vector3 rotation, bool syncRotation) override + { + setAttachmentData(ObjectAttachmentData::Type::Object, object.getID(), offset, rotation, syncRotation); + restream(); + } + void attachToObject(IPlayerObject& object, Vector3 offset, Vector3 rotation) override { setAttachmentData(ObjectAttachmentData::Type::Object, object.getID(), offset, rotation, true); diff --git a/Server/Components/Pawn/Scripting/Object/PlayerNatives.cpp b/Server/Components/Pawn/Scripting/Object/PlayerNatives.cpp index 296a07b3a..ea66c57d3 100644 --- a/Server/Components/Pawn/Scripting/Object/PlayerNatives.cpp +++ b/Server/Components/Pawn/Scripting/Object/PlayerNatives.cpp @@ -53,11 +53,11 @@ SCRIPT_API(AttachPlayerObjectToPlayer, bool(IPlayer& player, IPlayerObject& obje return true; } -SCRIPT_API(AttachPlayerObjectToObject, bool(IPlayer& player, IPlayerObject& object, IPlayerObject* attachedTo, Vector3 offset, Vector3 rotation)) +SCRIPT_API(AttachPlayerObjectToObject, bool(IPlayer& player, IPlayerObject& object, IPlayerObject* attachedTo, Vector3 offset, Vector3 rotation, bool syncRotation)) { if (attachedTo) { - object.attachToObject(*attachedTo, offset, rotation); + object.attachToObject(*attachedTo, offset, rotation, syncRotation); } else {