MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / DrawWeaponConnectionUI

Function DrawWeaponConnectionUI

Source/Editors/map_editor.cpp:576–613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

574};
575
576void DrawWeaponConnectionUI(const SceneGraph* scenegraph, IMUIContext& imui_context, const ItemRef& item_ref, WeapConnectionResult* result) {
577 result->mo = NULL;
578 vec3 cam_facing = ActiveCameras::Get()->GetFacing();
579 vec3 cam_up = ActiveCameras::Get()->GetUpVector();
580 vec3 cam_right = cross(cam_facing, cam_up);
581 int ui_index = 0;
582 for (auto movement_object : scenegraph->movement_objects_) {
583 MovementObject* mo = (MovementObject*)movement_object;
584 std::list<AttachmentSlot> list;
585 mo->rigged_object()->AvailableItemSlots(item_ref, &list);
586 for (auto& slot : list) {
587 mat4 circle_transform;
588 circle_transform.SetColumn(0, cam_right * 0.1f);
589 circle_transform.SetColumn(1, cam_up * 0.1f);
590 circle_transform.SetColumn(2, cam_facing * 0.1f);
591 circle_transform.SetTranslationPart(slot.pos);
592 vec4 color = vec4(0.5f, 0.5f, 0.5f, 0.5f);
593 vec3 screen_pos_tl = ActiveCameras::Get()->worldToScreen(circle_transform * vec3(-1, -1, 0));
594 vec3 screen_pos_br = ActiveCameras::Get()->worldToScreen(circle_transform * vec3(1, 1, 0));
595 if (screen_pos_tl[2] < 1.0 && screen_pos_br[2] < 1.0) {
596 vec2 top_left(screen_pos_tl[0], screen_pos_tl[1]);
597 vec2 bottom_right(screen_pos_br[0], screen_pos_br[1]);
598 IMUIContext::UIState ui_state;
599 if (imui_context.DoButton(ui_index++, top_left, bottom_right, ui_state)) {
600 result->mo = mo;
601 result->slot = slot;
602 }
603 if (ui_state == IMUIContext::kActive) {
604 color = vec4(0.0f, 0.0f, 0.0f, 0.5f);
605 }
606 if (ui_state == IMUIContext::kHot) {
607 color = vec4(1.0f, 1.0f, 1.0f, 0.5f);
608 }
609 }
610 DebugDraw::Instance()->AddCircle(circle_transform, color, _delete_on_draw);
611 }
612 }
613}
614
615static vec3 TransformVec3(const mat4& transform, const vec3& vector) {
616 return {

Callers 1

DrawMethod · 0.85

Calls 12

GetFacingMethod · 0.80
AvailableItemSlotsMethod · 0.80
rigged_objectMethod · 0.80
SetTranslationPartMethod · 0.80
worldToScreenMethod · 0.80
DoButtonMethod · 0.80
GetFunction · 0.50
crossFunction · 0.50
vec4Class · 0.50
vec3Class · 0.50
SetColumnMethod · 0.45
AddCircleMethod · 0.45

Tested by

no test coverage detected