コード例 #1
0
ファイル: ImGuiImpl.cpp プロジェクト: hardcpp/PacketStudio
void Pyx::Graphics::Gui::ImGuiImpl::BuildLogsWindow()
{
    static bool logVisible = true;
    if (GImGui)
    {
        ImGuiState& g = *GImGui;
        ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(4, 1));
        ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
        ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.95f);
        if (ImGui::Begin(XorStringA("##pyx_console_logs"), &logVisible, ImVec2(ImGui::GetIO().DisplaySize.x, 155), -1, ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoSavedSettings))
        {
            ImGui::SetWindowPos(ImVec2(0, g.FontBaseSize + g.Style.FramePadding.y * 2.0f));
            ImGui::SetWindowSize(ImVec2(ImGui::GetIO().DisplaySize.x, ImGui::GetWindowHeight()));

            for (std::string& item : m_logsItems)
            {
                ImVec4 col = ImColor(255, 255, 255);
                ImGui::PushStyleColor(ImGuiCol_Text, col);
                ImGui::TextUnformatted(item.c_str());
                ImGui::PopStyleColor();
            }

            if (m_logScrollToEnd) ImGui::SetScrollHere();
            m_logScrollToEnd = false;


        }
        ImGui::End();
		ImGui::PopStyleVar(3);
    }
}
コード例 #2
0
void Pyx::Graphics::GraphicsContext::SetMainRenderer(Renderer::IRenderer* pRenderer)
{
    PYX_ASSERT_A(pRenderer != nullptr);
    m_pMainRenderer = pRenderer;
    PyxContext::GetInstance().Log(XorStringA("[Graphics] Using renderer : ") + std::string(pRenderer->GetRendererTypeString()));
	auto pGui = GuiContext::GetInstance().GetGui();
	if (pGui) pGui->ToggleVisibility(true);
}
コード例 #3
0
ファイル: ImGuiImpl.cpp プロジェクト: hardcpp/PacketStudio
void Pyx::Graphics::Gui::ImGuiImpl::BuildDebugWindow()
{
    if (GImGui)
    {
        ImGuiState& g = *GImGui;
        if (ImGui::Begin(XorStringA("Pyx - Debug##pyx_debug_window"), &m_showDebugWindow))
        {
            auto& io = ImGui::GetIO();
            ImGui::Text(XorStringA("Performance : %.3f ms/frame (%.1f FPS)"), 1000.0f / io.Framerate, io.Framerate);
            ImGui::Text(XorStringA("Renderer : %s"), GraphicsContext::GetInstance().GetMainRenderer()->GetRendererTypeString());
            ImGui::Text(XorStringA("Cursor visible : %d"), Input::InputContext::GetInstance().CursorIsVisible());
            ImGui::Text(XorStringA("Cursor position : %.0f, %.0f"), io.MousePos.x, io.MousePos.y);
            ImGui::Text(XorStringA("WantCaptureMouse : %d"), io.WantCaptureMouse);
            ImGui::Text(XorStringA("WantCaptureKeyboard : %d"), io.WantCaptureKeyboard);
            ImGui::Text(XorStringA("WantTextInput : %d"), io.WantTextInput);
            ImGui::Text(XorStringA("HoveredWindow : %s"), g.HoveredWindow ? g.HoveredWindow->Name : XorStringA("<null>"));
        }
        ImGui::End();
    }
}
コード例 #4
0
ファイル: ScriptingContext.cpp プロジェクト: pushrbx/Pyx
void Pyx::Scripting::ScriptingContext::ReloadScripts()
{
    PyxContext::GetInstance().Log(XorStringA("[Scripting] Reloading scripts ..."));

    const auto& pyxSettings = PyxContext::GetInstance().GetSettings();

    for (auto* pScript : m_scripts)
    {
        if (pScript->IsRunning()) 
            pScript->Stop();
        delete pScript;
    }

    m_scripts.clear();

    WIN32_FIND_DATA ffd;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError = 0;
    hFind = FindFirstFileW(std::wstring(pyxSettings.RootDirectory + pyxSettings.ScriptsDirectory + L"\\*").c_str(), &ffd);

    if (INVALID_HANDLE_VALUE == hFind)
        return;

    do
    {
        if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            auto fileName = pyxSettings.RootDirectory + pyxSettings.ScriptsDirectory + L"\\" + std::wstring(ffd.cFileName) + L"\\script.def";
            auto scriptName = std::wstring(ffd.cFileName);
            DWORD dwAttrib = GetFileAttributesW(fileName.c_str());
            if (dwAttrib != INVALID_FILE_ATTRIBUTES &&
                !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY))
            {
                ScriptDef scriptDef(fileName);
                if (scriptDef.IsScript())
                {
                    PyxContext::GetInstance().Log(XorStringW(L"[Scripting] Found script \"%s\""), scriptDef.GetName().c_str());
                    m_scripts.push_back(new Script(scriptDef.GetName(), fileName));
                }
            }
        }
    } while (FindNextFileW(hFind, &ffd) != 0);

    sort(m_scripts.begin(), m_scripts.end(), [](Script* a, Script* b) {
        return a->GetName().compare(b->GetName()) < 0;
    });
    
}
コード例 #5
0
ファイル: ImGuiImpl.cpp プロジェクト: hardcpp/PacketStudio
void Pyx::Graphics::Gui::ImGuiImpl::BuildMainMenuBar()
{
	ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.95f);
    if (ImGui::BeginMainMenuBar())
    {

        if (ImGui::BeginMenu((std::string(ICON_MD_HOME) + XorStringA(" Pyx")).c_str()))
        {
			ImGui::MenuItem((std::string(ICON_MD_FORMAT_LIST_BULLETED) + XorStringA(" Show console")).c_str(), nullptr, &m_showConsole);
			ImGui::MenuItem((std::string(ICON_MD_BUILD) + XorStringA(" Show debug window")).c_str(), nullptr, &m_showDebugWindow);
			ImGui::Separator();
            if (ImGui::MenuItem((std::string(ICON_MD_EXIT_TO_APP) + XorStringA(" Unload")).c_str())) { PyxContext::GetInstance().RequestShutdown(); }
            ImGui::EndMenu();
        }

        if (ImGui::BeginMenu((std::string(ICON_MD_EXTENSION) + XorStringA(" Scripts")).c_str()))
        {    
            
            for (auto* pScript : Scripting::ScriptingContext::GetInstance().GetScripts())
            {
                auto& name = pScript->GetName();
                if (ImGui::MenuItem((std::string(pScript->IsRunning() ? ICON_MD_CLEAR : ICON_MD_PLAY_CIRCLE_OUTLINE) + " " + Utility::String::utf8_encode(name)).c_str(), pScript->IsRunning() ? XorStringA("(running)") : XorStringA("(stopped)")))
                    pScript->IsRunning() ? pScript->Stop() : pScript->Start();
            }

            ImGui::Separator();
            if (ImGui::MenuItem((std::string(ICON_MD_REPLAY) + XorStringA(" Reload scripts")).c_str())) { Scripting::ScriptingContext::GetInstance().ReloadScripts(); }
            ImGui::EndMenu();
        }
        
        GetOnDrawMainMenuBarCallbacks().Run(this);
        Scripting::ScriptingContext::GetInstance().FireCallbacks(XorStringW(L"ImGui.OnRenderMainMenuBar"));

        ImGui::EndMainMenuBar();
    }
	ImGui::PopStyleVar();
}