MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / setupHumanoidHandItemDrawables

Method setupHumanoidHandItemDrawables

source/game/StarToolUser.cpp:266–328  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

264}
265
266void ToolUser::setupHumanoidHandItemDrawables(Humanoid& humanoid) const {
267 if (m_suppress.get() || !m_user) {
268 humanoid.setHandFrameOverrides(ToolHand::Primary, "", "");
269 humanoid.setHandFrameOverrides(ToolHand::Alt, "", "");
270 humanoid.setHandDrawables(ToolHand::Primary, {});
271 humanoid.setHandDrawables(ToolHand::Alt, {});
272 humanoid.setHandNonRotatedDrawables(ToolHand::Primary, {});
273 humanoid.setHandNonRotatedDrawables(ToolHand::Alt, {});
274 return;
275 }
276
277 auto inner = [&](bool primary) {
278 auto setRotated = [&](String const& backFrame, String const& frontFrame, List<Drawable> drawables, bool twoHanded) {
279 if (primary || twoHanded) {
280 humanoid.setHandFrameOverrides(ToolHand::Primary, backFrame, frontFrame);
281 humanoid.setHandDrawables(ToolHand::Primary, std::move(drawables));
282 } else {
283 humanoid.setHandFrameOverrides(ToolHand::Alt, backFrame, frontFrame);
284 humanoid.setHandDrawables(ToolHand::Alt, std::move(drawables));
285 }
286 };
287
288 auto setNonRotated = [&](List<Drawable> drawables) {
289 if (primary)
290 humanoid.setHandNonRotatedDrawables(ToolHand::Primary, std::move(drawables));
291 else
292 humanoid.setHandNonRotatedDrawables(ToolHand::Alt, std::move(drawables));
293 };
294
295 ItemPtr handItem = primary ? m_primaryHandItem.get() : m_altHandItem.get();
296
297 if (auto swingItem = as<SwingableItem>(handItem)) {
298 setRotated(swingItem->getArmFrame(), swingItem->getArmFrame(), swingItem->drawables(), handItem->twoHanded());
299
300 } else if (auto pointableItem = as<PointableItem>(handItem)) {
301 setRotated("", "", pointableItem->drawables(), handItem->twoHanded());
302
303 } else if (auto activeItem = as<ActiveItem>(handItem)) {
304 setRotated(activeItem->backArmFrame().value(), activeItem->frontArmFrame().value(),
305 activeItem->handDrawables(), activeItem->twoHandedGrip());
306
307 } else if (auto beamItem = as<BeamItem>(handItem)) {
308 setRotated("", "", beamItem->drawables(), false);
309
310 } else {
311 setRotated("", "", {}, false);
312 }
313
314 if (auto drawItem = as<NonRotatedDrawablesItem>(handItem))
315 setNonRotated(drawItem->nonRotatedDrawables());
316 else
317 setNonRotated({});
318 };
319
320 inner(true);
321 if (itemSafeTwoHanded(m_primaryHandItem.get())) {
322 humanoid.setHandFrameOverrides(ToolHand::Alt, "", "");
323 humanoid.setHandDrawables(ToolHand::Alt, {});

Callers 2

drawablesMethod · 0.80
renderMethod · 0.80

Calls 14

itemSafeTwoHandedFunction · 0.85
setHandFrameOverridesMethod · 0.80
setHandDrawablesMethod · 0.80
getArmFrameMethod · 0.80
backArmFrameMethod · 0.80
frontArmFrameMethod · 0.80
handDrawablesMethod · 0.80
twoHandedGripMethod · 0.80
getMethod · 0.45
drawablesMethod · 0.45
twoHandedMethod · 0.45

Tested by

no test coverage detected