Рисую демонической кровью
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здрасте форумчане, поймал анимации на чекбоксе
(анимация с 31 строки)
Суть проблемы:При нажатии на "insert"(open menu) -> игра крашится(немного поясню - крашится без каких либо окон ошибок и т. п., т.е. игра просто закрывается)
Как я определил что краш зависит от анимаций? -> методом вырезки кода я понял, что если вырезать анимацию, то меню и чекбокс рендерится нормально
из этого получаем, что проблема скорее всего в анимации(так как с инициализацией, вызовами и т.д всё нормально).
Кто поможети обьяснит буду благодарен и можете рассчитывать на денежное вознагрождение.
Заранее спасибо.
imgui_widgets.cpp:
struct checkbox_element {
float selected_rect;
};
bool ImGui::Checkbox(const char* label, bool* v)
{
ImGuiWindow* window = GetCurrentWindow();
if (window->SkipItems)
return false;
ImGuiContext& g = *GImGui;
const ImGuiStyle& style = g.Style;
const ImGuiID id = window->GetID(label);
const ImVec2 label_size = CalcTextSize(label, NULL, true);
const float square_sz = 16;
const ImVec2 pos = window->DC.CursorPos;
const ImRect total_bb(pos, pos + ImVec2(square_sz + 12 + label_size.x, (label_size.y > square_sz) ? label_size.y : square_sz));
ItemSize(total_bb, style.FramePadding.y);
if (!ItemAdd(total_bb, id))
return false;
bool hovered, held;
bool pressed = ButtonBehavior(total_bb, id, &hovered, &held);
if (pressed)
{
*v = !(*v);
MarkItemEdited(id);
}
static std::map <ImGuiID, checkbox_element> anim;
auto it_anim = anim.find(id);
if (it_anim == anim.end())
{
anim.insert({ id, { 0.0f } });
it_anim = anim.find(id);
}
it_anim->second.selected_rect = ImLerp(it_anim->second.selected_rect, *v ? 1.0f : (hovered ? 0.2f : 0.0f), 0.08f * (1.0f - ImGui::GetIO().DeltaTime));
window->DrawList->AddRectFilled(total_bb.Min, total_bb.Min + ImVec2(square_sz, square_sz), ImColor(32, 33, 35), 3.0f);
window->DrawList->AddRectFilled(total_bb.Min, total_bb.Min + ImVec2(square_sz, square_sz), ImColor(22 / 255.0f, 118 / 255.0f, 243 / 255.0f, it_anim->second.selected_rect), 3.0f);
RenderCheckMark(window->DrawList, ImVec2(total_bb.Min.x + 4, (total_bb.Min.y + total_bb.Max.y) / 2 - 4), ImColor(1.0f, 1.0f, 1.0f, it_anim->second.selected_rect), 9.0f);
window->DrawList->AddText(ImVec2(total_bb.Max.x - label_size.x - 5, total_bb.Min.y), ImGui::GetColorU32(ImGuiCol_Text), label);
IMGUI_TEST_ENGINE_ITEM_INFO(id, label, window->DC.ItemFlags | ImGuiItemStatusFlags_Checkable | (*v ? ImGuiItemStatusFlags_Checked : 0));
return pressed;
(анимация с 31 строки)
Суть проблемы:При нажатии на "insert"(open menu) -> игра крашится(немного поясню - крашится без каких либо окон ошибок и т. п., т.е. игра просто закрывается)
Как я определил что краш зависит от анимаций? -> методом вырезки кода я понял, что если вырезать анимацию, то меню и чекбокс рендерится нормально
из этого получаем, что проблема скорее всего в анимации(так как с инициализацией, вызовами и т.д всё нормально).
Кто поможети обьяснит буду благодарен и можете рассчитывать на денежное вознагрождение.
Заранее спасибо.