| 56 | } |
| 57 | |
| 58 | void ActiveItem::init(ToolUserEntity* owner, ToolHand hand) { |
| 59 | ToolUserItem::init(owner, hand); |
| 60 | if (entityMode() == EntityMode::Master) { |
| 61 | m_script.setScripts(jsonToStringList(instanceValue("scripts")).transformed(bind(&AssetPath::relativeTo, directory(), _1))); |
| 62 | m_script.setUpdateDelta(instanceValue("scriptDelta", 1).toUInt()); |
| 63 | m_twoHandedGrip.set(twoHanded()); |
| 64 | |
| 65 | if (auto previousStorage = instanceValue("scriptStorage")) |
| 66 | m_script.setScriptStorage(previousStorage.toObject()); |
| 67 | |
| 68 | m_script.addCallbacks("activeItem", makeActiveItemCallbacks()); |
| 69 | m_script.addCallbacks("item", LuaBindings::makeItemCallbacks(this)); |
| 70 | m_script.addCallbacks("config", LuaBindings::makeConfigCallbacks(bind(&Item::instanceValue, as<Item>(this), _1, _2))); |
| 71 | m_script.addCallbacks("animator", LuaBindings::makeNetworkedAnimatorCallbacks(&m_itemAnimator)); |
| 72 | m_script.addCallbacks("status", LuaBindings::makeStatusControllerCallbacks(owner->statusController())); |
| 73 | m_script.addActorMovementCallbacks(owner->movementController()); |
| 74 | if (auto player = as<Player>(owner)) |
| 75 | m_script.addCallbacks("player", LuaBindings::makePlayerCallbacks(player)); |
| 76 | m_script.addCallbacks("entity", LuaBindings::makeEntityCallbacks(as<Entity>(owner))); |
| 77 | m_script.init(world()); |
| 78 | m_currentFireMode = FireMode::None; |
| 79 | } |
| 80 | if (world()->isClient()) { |
| 81 | if (auto animationScripts = instanceValue("animationScripts")) { |
| 82 | m_scriptedAnimator.setScripts(jsonToStringList(animationScripts).transformed(bind(&AssetPath::relativeTo, directory(), _1))); |
| 83 | m_scriptedAnimator.setUpdateDelta(instanceValue("animationDelta", 1).toUInt()); |
| 84 | |
| 85 | m_scriptedAnimator.addCallbacks("animationConfig", LuaBindings::makeScriptedAnimatorCallbacks(&m_itemAnimator, |
| 86 | [this](String const& name, Json const& defaultValue) -> Json { |
| 87 | return m_scriptedAnimationParameters.value(name, defaultValue); |
| 88 | })); |
| 89 | m_scriptedAnimator.addCallbacks("activeItemAnimation", makeScriptedAnimationCallbacks()); |
| 90 | m_scriptedAnimator.addCallbacks("config", LuaBindings::makeConfigCallbacks(bind(&Item::instanceValue, as<Item>(this), _1, _2))); |
| 91 | m_scriptedAnimator.init(world()); |
| 92 | } |
| 93 | } |
| 94 | } |
| 95 | |
| 96 | void ActiveItem::uninit() { |
| 97 | if (entityMode() == EntityMode::Master) { |
nothing calls this directly
no test coverage detected