Skip to content

Commit

Permalink
Pre releases 0.0.1 (#20)
Browse files Browse the repository at this point in the history
* update submodule, breast limit multiplier

* add type, add limit axis config

* update layout

* update submodule

* update workflow
  • Loading branch information
chinosk6 authored Jun 16, 2024
1 parent f5a88a9 commit 1855ae7
Show file tree
Hide file tree
Showing 11 changed files with 432 additions and 48 deletions.
14 changes: 14 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,34 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: set up android development environment
uses: android-actions/setup-android@v2

- name: install dependencies
run: |
sdkmanager --install "cmake;3.22.1"
echo "cmake.dir=/usr/local/lib/android/sdk/cmake/3.22.1" > local.properties
npm install -g pnpm
- name: Setup Java JDK
uses: actions/[email protected]
with:
distribution: 'temurin'
java-version: '21'

- name: Update Assets
run: |
git submodule foreach --recursive git pull origin main
git clone https://${{ secrets.ACCESS_TOKEN_GITHUB }}@github.com/imas-tools/gakumas-raw-txts.git app/src/main/assets/gakumas-local/gakumas-raw-txts
mv app/src/main/assets/gakumas-local/gakumas-raw-txts/Resource app/src/main/assets/gakumas-local/raw
rm -rf app/src/main/assets/gakumas-local/gakumas-raw-txts
- name: Build Assets
run: |
mv app/src/main/assets/gakumas-local/GakumasPreTranslation/.env.sample app/src/main/assets/gakumas-local/GakumasPreTranslation/.env
cd app/src/main/assets/gakumas-local && make build-resource
- name: Write branch and commit info
run: |
branch=$(git rev-parse --abbrev-ref HEAD)
Expand Down
23 changes: 22 additions & 1 deletion app/src/main/cpp/GakumasLocalify/Hook.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,9 @@ namespace GakumasLocal::HookMain {
static auto limitInfo_field = ActorSwingBreastBone_klass->Get<UnityResolve::Field>("limitInfo");

static auto limitInfo_useLimit_field = LimitInfo_klass->Get<UnityResolve::Field>("useLimit");
static auto limitInfo_axisX_field = LimitInfo_klass->Get<UnityResolve::Field>("axisX");
static auto limitInfo_axisY_field = LimitInfo_klass->Get<UnityResolve::Field>("axisY");
static auto limitInfo_axisZ_field = LimitInfo_klass->Get<UnityResolve::Field>("axisZ");

auto swingBreastBones = Il2cppUtils::ClassGetFieldValue
<UnityResolve::UnityType::List<UnityResolve::UnityType::MonoBehaviour*>*>(initializeData, Data_swingBreastBones_field);
Expand Down Expand Up @@ -778,8 +781,26 @@ namespace GakumasLocal::HookMain {
Log::DebugFmt("orig bone: damping: %f, stiffness: %f, spring: %f, pendulum: %f, "
"pendulumRange: %f, average: %f, rootWeight: %f, useLimit: %d, useArmCorrection: %d, isDirty: %d",
damping, stiffness, spring, pendulum, pendulumRange, average, rootWeight, useLimit, useArmCorrection, isDirty);
if (!Config::bUseLimit) {
Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_useLimit_field, 0);
}
else {
Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_useLimit_field, 1);
auto axisX = Il2cppUtils::ClassGetFieldValue<UnityResolve::UnityType::Vector2Int>(limitInfo, limitInfo_axisX_field);
auto axisY = Il2cppUtils::ClassGetFieldValue<UnityResolve::UnityType::Vector2Int>(limitInfo, limitInfo_axisY_field);
auto axisZ = Il2cppUtils::ClassGetFieldValue<UnityResolve::UnityType::Vector2Int>(limitInfo, limitInfo_axisZ_field);
axisX.m_X *= Config::bLimitXx;
axisX.m_Y *= Config::bLimitXy;
axisY.m_X *= Config::bLimitYx;
axisY.m_Y *= Config::bLimitYy;
axisZ.m_X *= Config::bLimitZx;
axisZ.m_Y *= Config::bLimitZy;
Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_axisX_field, axisX);
Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_axisY_field, axisY);
Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_axisZ_field, axisZ);

}

Il2cppUtils::ClassSetFieldValue(limitInfo, limitInfo_useLimit_field, Config::bUseLimit);
Il2cppUtils::ClassSetFieldValue(bone, damping_field, Config::bDamping);
Il2cppUtils::ClassSetFieldValue(bone, stiffness_field, Config::bStiffness);
Il2cppUtils::ClassSetFieldValue(bone, spring_field, Config::bSpring);
Expand Down
16 changes: 14 additions & 2 deletions app/src/main/cpp/GakumasLocalify/config/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ namespace GakumasLocal::Config {
int lodQualityLevel = 4;

bool enableBreastParam = false;
int bUseLimit = 1;
float bDamping = 0.33f;
float bStiffness = 0.08f;
float bSpring = 1.0f;
Expand All @@ -40,6 +39,13 @@ namespace GakumasLocal::Config {
bool bUseArmCorrection = true;
bool bUseScale = false;
float bScale = 1.0f;
bool bUseLimit = true;
float bLimitXx = 1.0f;
float bLimitXy = 1.0f;
float bLimitYx = 1.0f;
float bLimitYy = 1.0f;
float bLimitZx = 1.0f;
float bLimitZy = 1.0f;

void LoadConfig(const std::string& configStr) {
try {
Expand Down Expand Up @@ -68,7 +74,6 @@ namespace GakumasLocal::Config {
GetConfigItem(reflectionQualityLevel);
GetConfigItem(lodQualityLevel);
GetConfigItem(enableBreastParam);
GetConfigItem(bUseLimit);
GetConfigItem(bDamping);
GetConfigItem(bStiffness);
GetConfigItem(bSpring);
Expand All @@ -79,6 +84,13 @@ namespace GakumasLocal::Config {
GetConfigItem(bUseArmCorrection);
GetConfigItem(bUseScale);
GetConfigItem(bScale);
GetConfigItem(bUseLimit);
GetConfigItem(bLimitXx);
GetConfigItem(bLimitXy);
GetConfigItem(bLimitYx);
GetConfigItem(bLimitYy);
GetConfigItem(bLimitZx);
GetConfigItem(bLimitZy);

}
catch (std::exception& e) {
Expand Down
8 changes: 7 additions & 1 deletion app/src/main/cpp/GakumasLocalify/config/Config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ namespace GakumasLocal::Config {
extern int lodQualityLevel;

extern bool enableBreastParam;
extern int bUseLimit;
extern float bDamping;
extern float bStiffness;
extern float bSpring;
Expand All @@ -39,6 +38,13 @@ namespace GakumasLocal::Config {
extern bool bUseArmCorrection;
extern bool bUseScale;
extern float bScale;
extern bool bUseLimit;
extern float bLimitXx;
extern float bLimitXy;
extern float bLimitYx;
extern float bLimitYy;
extern float bLimitZx;
extern float bLimitZy;

void LoadConfig(const std::string& configStr);
}
70 changes: 69 additions & 1 deletion app/src/main/cpp/deps/UnityResolve/UnityResolve.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -983,7 +983,75 @@ class UnityResolve final {
auto operator ==(const Vector2 x) const -> bool { return this->x == x.x && this->y == x.y; }
};

struct Vector4 {
struct Vector2Int {
int m_X, m_Y;

Vector2Int() { m_X = m_Y = 0; }

Vector2Int(const int f1, const int f2) {
m_X = f1;
m_Y = f2;
}

[[nodiscard]] auto Distance(const Vector2Int& event) const -> float {
const auto dx = this->m_X - event.m_X;
const auto dy = this->m_Y - event.m_Y;
return std::sqrt(dx * dx + dy * dy);
}

auto operator*(const int x) -> Vector2Int {
this->m_X *= x;
this->m_Y *= x;
return *this;
}

auto operator/(const int x) -> Vector2Int {
this->m_X /= x;
this->m_Y /= x;
return *this;
}

auto operator+(const int x) -> Vector2Int {
this->m_X += x;
this->m_Y += x;
return *this;
}

auto operator-(const int x) -> Vector2Int {
this->m_X -= x;
this->m_Y -= x;
return *this;
}

auto operator*(const Vector2Int x) -> Vector2Int {
this->m_X *= x.m_X;
this->m_Y *= x.m_Y;
return *this;
}

auto operator-(const Vector2Int x) -> Vector2Int {
this->m_X -= x.m_X;
this->m_Y -= x.m_Y;
return *this;
}

auto operator+(const Vector2Int x) -> Vector2Int {
this->m_X += x.m_X;
this->m_Y += x.m_Y;
return *this;
}

auto operator/(const Vector2Int x) -> Vector2Int {
this->m_X /= x.m_X;
this->m_Y /= x.m_Y;
return *this;
}

auto operator ==(const Vector2Int x) const -> bool { return this->m_X == x.m_X && this->m_Y == x.m_Y; }
};


struct Vector4 {
float x, y, z, w;

Vector4() { x = y = z = w = 0.F; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ interface ConfigListener {
fun onBPendulumRangeChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBAverageChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBRootWeightChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBUseLimitChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBUseLimitChanged(value: Boolean)
fun onBLimitXxChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBLimitXyChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBLimitYxChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBLimitYyChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBLimitZxChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBLimitZyChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBScaleChanged(s: CharSequence, start: Int, before: Int, count: Int)
fun onBUseArmCorrectionChanged(value: Boolean)
fun onBUseScaleChanged(value: Boolean)
Expand Down Expand Up @@ -332,17 +338,74 @@ interface ConfigUpdateListener: ConfigListener {
saveConfig()
}

override fun onBUseLimitChanged(s: CharSequence, start: Int, before: Int, count: Int){
binding.config!!.bUseLimit = try {
s.toString().toInt()
override fun onBUseLimitChanged(value: Boolean){
binding.config!!.bUseLimit = value
saveConfig()
checkConfigAndUpdateView()
}

override fun onBLimitXxChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitXx = try {
s.toString().toFloat()
}
catch (e: Exception) {
0
0f
}
saveConfig()
}

override fun onBScaleChanged(s: CharSequence, start: Int, before: Int, count: Int){
override fun onBLimitXyChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitXy = try {
s.toString().toFloat()
}
catch (e: Exception) {
0f
}
saveConfig()
}

override fun onBLimitYxChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitYx = try {
s.toString().toFloat()
}
catch (e: Exception) {
0f
}
saveConfig()
}

override fun onBLimitYyChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitYy = try {
s.toString().toFloat()
}
catch (e: Exception) {
0f
}
saveConfig()
}

override fun onBLimitZxChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitZx = try {
s.toString().toFloat()
}
catch (e: Exception) {
0f
}
saveConfig()
}

override fun onBLimitZyChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bLimitZy = try {
s.toString().toFloat()
}
catch (e: Exception) {
0f
}
saveConfig()
}


override fun onBScaleChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.config!!.bScale = try {
s.toString().toFloat()
}
Expand All @@ -351,18 +414,26 @@ interface ConfigUpdateListener: ConfigListener {
}
saveConfig()
}

override fun onBClickPresetChanged(index: Int) {
val setData: FloatArray = when (index) {
// 0.33, 0.08, 0.7, 0.12, 0.25, 0.2, 0.8, 0, noUseArm 啥玩意
0 -> floatArrayOf(0.33f, 0.07f, 0.7f, 0.06f, 0.25f, 0.2f, 0.5f, 1f)
1 -> floatArrayOf(0.365f, 0.06f, 0.62f, 0.07f, 0.25f, 0.2f, 0.5f, 1f)
2 -> floatArrayOf(0.4f, 0.065f, 0.55f, 0.075f, 0.25f, 0.2f, 0.5f, 1f)
3 -> floatArrayOf(0.4f, 0.065f, 0.55f, 0.075f, 0.25f, 0.2f, 0.5f, 0f)
4 -> floatArrayOf(0.4f, 0.06f, 0.4f, 0.075f, 0.55f, 0.2f, 0.8f, 0f)
0 -> floatArrayOf(0.33f, 0.07f, 0.7f, 0.06f, 0.25f, 0.2f, 0.5f,
1f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f)
1 -> floatArrayOf(0.365f, 0.06f, 0.62f, 0.07f, 0.25f, 0.2f, 0.5f,
1f, 1.5f, 1.5f, 1.5f, 1.5f, 1.5f, 1.5f)
2 -> floatArrayOf(0.4f, 0.065f, 0.55f, 0.075f, 0.25f, 0.2f, 0.5f,
1f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f)
3 -> floatArrayOf(0.4f, 0.065f, 0.55f, 0.075f, 0.25f, 0.2f, 0.5f,
1f, 4.0f, 4.0f, 4.0f, 4.0f, 4.0f, 3.0f)
4 -> floatArrayOf(0.4f, 0.06f, 0.4f, 0.075f, 0.55f, 0.2f, 0.8f,
1f, 6.0f, 6.0f, 6.0f, 6.0f, 6.0f, 3.5f)

5 -> floatArrayOf(0.33f, 0.08f, 0.8f, 0.12f, 0.55f, 0.2f, 1.0f, 0f)
5 -> floatArrayOf(0.33f, 0.08f, 0.8f, 0.12f, 0.55f, 0.2f, 1.0f,
0f)

else -> floatArrayOf(0.33f, 0.08f, 1.0f, 0.055f, 0.15f, 0.2f, 0.5f, 1f)
else -> floatArrayOf(0.33f, 0.08f, 1.0f, 0.055f, 0.15f, 0.2f, 0.5f,
1f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f)
}

binding.config!!.bDamping = setData[0]
Expand All @@ -372,7 +443,19 @@ interface ConfigUpdateListener: ConfigListener {
binding.config!!.bPendulumRange = setData[4]
binding.config!!.bAverage = setData[5]
binding.config!!.bRootWeight = setData[6]
binding.config!!.bUseLimit = setData[7].toInt()
binding.config!!.bUseLimit = if (setData[7] == 0f) {
false
}
else {
binding.config!!.bLimitXx = setData[8]
binding.config!!.bLimitXy = setData[9]
binding.config!!.bLimitYx = setData[10]
binding.config!!.bLimitYy = setData[11]
binding.config!!.bLimitZx = setData[12]
binding.config!!.bLimitZy = setData[13]
true
}

binding.config!!.bUseArmCorrection = true

checkConfigAndUpdateView()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ data class GakumasConfig (
var lodQualityLevel: Int = 4, // 0~5

var enableBreastParam: Boolean = false,
var bUseLimit: Int = 1,
var bDamping: Float = 0.33f,
var bStiffness: Float = 0.08f,
var bSpring: Float = 1.0f,
Expand All @@ -35,5 +34,12 @@ data class GakumasConfig (
var bRootWeight: Float = 0.5f,
var bUseArmCorrection: Boolean = true,
var bUseScale: Boolean = false,
var bScale: Float = 1.0f
var bScale: Float = 1.0f,
var bUseLimit: Boolean = true,
var bLimitXx: Float = 1.0f,
var bLimitXy: Float = 1.0f,
var bLimitYx: Float = 1.0f,
var bLimitYy: Float = 1.0f,
var bLimitZx: Float = 1.0f,
var bLimitZy: Float = 1.0f,
)
Loading

0 comments on commit 1855ae7

Please sign in to comment.