From c0f733cdcecbcc29faaf51db34c446df3bf822c5 Mon Sep 17 00:00:00 2001 From: MaxYari Date: Fri, 7 Mar 2025 21:09:16 +0100 Subject: [PATCH] Changed to global for testing. Since it a getter - probably should change to regular object. --- apps/openmw/mwlua/types/actor.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwlua/types/actor.cpp b/apps/openmw/mwlua/types/actor.cpp index 98a846559e..1a89d64dcf 100644 --- a/apps/openmw/mwlua/types/actor.cpp +++ b/apps/openmw/mwlua/types/actor.cpp @@ -223,26 +223,27 @@ namespace MWLua { "CarriedRight", MWWorld::InventoryStore::Slot_CarriedRight }, { "CarriedLeft", MWWorld::InventoryStore::Slot_CarriedLeft }, { "Ammunition", MWWorld::InventoryStore::Slot_Ammunition } })); - actor["getBonePosition"] = [](const SelfObject& self, std::string_view boneName) -> sol::optional { - const MWWorld::Class& cls = self.ptr().getClass(); - if (!cls.isActor()) - throw std::runtime_error("Actor expected"); + actor["getBonePosition"] = [](const GObject& o, std::string_view boneName) -> sol::optional { + const MWWorld::Class& cls = o.ptr().getClass(); + // Need to accept self OR a global object + /*if (!cls.isActor()) + throw std::runtime_error("Actor expected");*/ std::optional boneTransform - = findBoneWorldTransform(self.ptr().getRefData().getBaseNode(), boneName); + = findBoneWorldTransform(o.ptr().getRefData().getBaseNode(), boneName); if (!boneTransform.has_value()) return sol::nullopt; - return boneTransform.value().getTrans(); + return static_cast(boneTransform.value().getTrans()); }; - actor["getBoneRotation"] = [](const SelfObject& self, std::string_view boneName) -> sol::optional { - const MWWorld::Class& cls = self.ptr().getClass(); + actor["getBoneRotation"] = [](const GObject& o, std::string_view boneName) -> sol::optional { + const MWWorld::Class& cls = o.ptr().getClass(); if (!cls.isActor()) throw std::runtime_error("Actor expected"); std::optional boneTransform - = findBoneWorldTransform(self.ptr().getRefData().getBaseNode(), boneName); + = findBoneWorldTransform(o.ptr().getRefData().getBaseNode(), boneName); if (!boneTransform.has_value()) return sol::nullopt;