From 0fdfd2492e4935402638f1b48520592d769aca84 Mon Sep 17 00:00:00 2001
From: Joaquin <67109235+Taiga74164@users.noreply.github.com>
Date: Sun, 12 Jun 2022 00:46:44 -0600
Subject: [PATCH] In-game Browser
me and @RyujinZX
---
cheat-library/cheat-library.vcxproj | 2 +
cheat-library/cheat-library.vcxproj.filters | 6 ++
cheat-library/src/user/cheat/cheat.cpp | 4 +-
.../src/user/cheat/visuals/Browser.cpp | 99 +++++++++++++++++++
.../src/user/cheat/visuals/Browser.h | 26 +++++
5 files changed, 136 insertions(+), 1 deletion(-)
create mode 100644 cheat-library/src/user/cheat/visuals/Browser.cpp
create mode 100644 cheat-library/src/user/cheat/visuals/Browser.h
diff --git a/cheat-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj
index 2add32f..51c3fc4 100644
--- a/cheat-library/cheat-library.vcxproj
+++ b/cheat-library/cheat-library.vcxproj
@@ -50,6 +50,7 @@
true
+
@@ -163,6 +164,7 @@
+
diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters
index dbe9540..20245a6 100644
--- a/cheat-library/cheat-library.vcxproj.filters
+++ b/cheat-library/cheat-library.vcxproj.filters
@@ -234,6 +234,9 @@
Header Files
+
+ Header Files
+
@@ -426,6 +429,9 @@
Source Files
+
+ Source Files
+
diff --git a/cheat-library/src/user/cheat/cheat.cpp b/cheat-library/src/user/cheat/cheat.cpp
index 18f7d8e..3c5b76b 100644
--- a/cheat-library/src/user/cheat/cheat.cpp
+++ b/cheat-library/src/user/cheat/cheat.cpp
@@ -45,6 +45,7 @@
#include
#include
#include
+#include
#include "GenshinCM.h"
@@ -101,7 +102,8 @@ namespace cheat
FEAT_INST(ChestIndicator),
FEAT_INST(ProfileChanger),
FEAT_INST(PaimonFollow),
- FEAT_INST(HideUI)
+ FEAT_INST(HideUI),
+ FEAT_INST(Browser)
});
#undef FEAT_INST
diff --git a/cheat-library/src/user/cheat/visuals/Browser.cpp b/cheat-library/src/user/cheat/visuals/Browser.cpp
new file mode 100644
index 0000000..1be0197
--- /dev/null
+++ b/cheat-library/src/user/cheat/visuals/Browser.cpp
@@ -0,0 +1,99 @@
+#include "pch-il2cpp.h"
+#include "Browser.h"
+
+#include
+#include
+#include
+
+#include
+
+namespace cheat::feature
+{
+ app::GameObject* planeObject = nullptr;
+ app::Component_1* BrowserComponents = nullptr;
+ static std::string f_URL;
+
+ Browser::Browser() : Feature(),
+ NF(f_Enabled, "Browser", "Visuals", false),
+ toBeUpdate(), nextUpdate(0)
+ {
+ events::GameUpdateEvent += MY_METHOD_HANDLER(Browser::OnGameUpdate);
+ }
+
+ const FeatureGUIInfo& Browser::GetGUIInfo() const
+ {
+ static const FeatureGUIInfo info{ "Browser", "Visuals", false };
+ return info;
+ }
+
+ void Browser::DrawMain()
+ {
+ ConfigWidget(f_Enabled, "Create in-game Browser");
+ ImGui::InputText("URL", &f_URL);
+ }
+
+ bool Browser::NeedStatusDraw() const
+ {
+ return f_Enabled;
+ }
+
+ void Browser::DrawStatus()
+ {
+ ImGui::Text("Browser");
+ }
+
+ Browser& Browser::GetInstance()
+ {
+ static Browser instance;
+ return instance;
+ }
+
+ void Browser::OnGameUpdate()
+ {
+ auto currentTime = util::GetCurrentTimeMillisec();
+ if (currentTime < nextUpdate)
+ return;
+
+ if (f_Enabled) {
+ if (planeObject == nullptr) {
+
+ auto PrimitiveType = app::PrimitiveType__Enum::Plane;
+ planeObject = app::GameObject_CreatePrimitive(PrimitiveType, nullptr);
+
+ app::Transform* planeObject_Transform = app::GameObject_get_transform(planeObject, nullptr);
+ app::Quaternion planeObject_Transform_Quaternion = { 0.5, 0.5, -0.5, 0.5};
+ auto avatarPos = app::ActorUtils_GetAvatarPos(nullptr);
+ auto relativePos = app::WorldShiftManager_GetRelativePosition(avatarPos, nullptr);
+ app::Vector3 planeObject_Transform_Vector3 = { relativePos.x, relativePos.y + 3, relativePos.z };
+ app::Vector3 planeObject_Transform_Scale = { 1, 1, 1};
+
+ app::Transform_set_localPosition(planeObject_Transform, planeObject_Transform_Vector3, nullptr);
+ app::Transform_set_localScale(planeObject_Transform, planeObject_Transform_Scale, nullptr);
+ app::Transform_set_localRotation(planeObject_Transform, planeObject_Transform_Quaternion, nullptr);
+ }
+
+ if (planeObject != nullptr) {
+ if (BrowserComponents == nullptr) {
+ std::string custom_url = f_URL.length() < 2 || f_URL.c_str() == "" ? "https://www.google.com/" : f_URL.c_str();
+
+ BrowserComponents = app::GameObject_AddComponentInternal(planeObject, string_to_il2cppi("Browser"), nullptr);
+ reinterpret_cast(BrowserComponents)->fields._url = string_to_il2cppi(custom_url);
+ reinterpret_cast(BrowserComponents)->fields._width = 1920;
+ reinterpret_cast(BrowserComponents)->fields._height = 1080;
+ reinterpret_cast(BrowserComponents)->fields.forceNextRender = true;
+ reinterpret_cast(BrowserComponents)->fields._EnableInput_k__BackingField = true;
+ }
+ }
+ }
+ else {
+ if (planeObject != nullptr && BrowserComponents != nullptr)
+ {
+ app::Object_1_DestroyImmediate_1(reinterpret_cast(planeObject), nullptr);
+ app::Object_1_DestroyImmediate_1(reinterpret_cast(BrowserComponents), nullptr);
+ planeObject = nullptr;
+ BrowserComponents = nullptr;
+ }
+ }
+ nextUpdate = currentTime + (int)f_DelayUpdate;
+ }
+}
\ No newline at end of file
diff --git a/cheat-library/src/user/cheat/visuals/Browser.h b/cheat-library/src/user/cheat/visuals/Browser.h
new file mode 100644
index 0000000..d6f0760
--- /dev/null
+++ b/cheat-library/src/user/cheat/visuals/Browser.h
@@ -0,0 +1,26 @@
+#pragma once
+#include
+#include
+#include
+
+namespace cheat::feature
+{
+ class Browser : public Feature
+ {
+ public:
+ config::Field> f_Enabled;
+
+ static Browser& GetInstance();
+ const FeatureGUIInfo& GetGUIInfo() const override;
+ void DrawMain() override;
+ virtual bool NeedStatusDraw() const override;
+ void DrawStatus() override;
+
+ private:
+ SafeQueue toBeUpdate;
+ SafeValue nextUpdate;
+ int f_DelayUpdate = 20.f;
+ void OnGameUpdate();
+ Browser();
+ };
+}
\ No newline at end of file