DESKTOP-AB9OQPJ\RED-10 3 سال پیش
والد
کامیت
d3df23f653
3فایلهای تغییر یافته به همراه30 افزوده شده و 6 حذف شده
  1. 6 6
      jni/CFTTModel.h
  2. 1 0
      jni/CLightingLUTState.cpp
  3. 23 0
      jni/GFXSCENE.cpp

+ 6 - 6
jni/CFTTModel.h

@@ -109,12 +109,12 @@ enum EMeshModelFlags {
 //结构大小确定为0x12, 具体的类型不确定
 #pragma pack(1)
 struct CFTTModel_struct_12 {
-  ushort us_0;
-  ushort us_2;
-  int field_4;
-  int field_8;
-  int field_C;
-  ushort field_10;
+ushort us_0;
+uint field_2;
+uint field_6;
+int field_A;
+ushort field_E;
+ushort field_10;
 };
 #pragma pack()
 

+ 1 - 0
jni/CLightingLUTState.cpp

@@ -32,5 +32,6 @@ void CLightingLUTState::Populate(ELightingLUTMat a1) {
 //-------------------------------------------------------------------------------------------------
 //0018C330 ^_- 模块测试通过, 输出的MD5一样
 void CLightingLUTState::Generate(ELightingLUTMat a1) {
+  LOGE("CLightingLUTState::Generate%x%x",this,a1);
 }
 //-------------------------------------------------------------------------------------------------

+ 23 - 0
jni/GFXSCENE.cpp

@@ -29,8 +29,31 @@ void GFXSCENE_Apply(CLightingLUTSceneSettings const* plightingLUTSceneSettings0)
 //------------------------------------------------------------------------------------------------
 //0018c19c  ^_^  resetgame到 加载Hero场景没问题
 void GFXSCENE_CheckLUTs(ELightingLUTMat emat0) {
+  //LOGI("GFXSCENE_CheckLUTs entry %d", emat0);
   //LOGE("GFXSCENE_CheckLUTs");
   //0018C19C
+  if (gs_plightingLUTState_46121C[emat0].pTexture_0) {
+    if (gs_plightingLUTState_46121C[emat0].Matches(emat0))
+      return;
+
+    //loc_18C1BC
+    if (gs_plightingLUTState_46121C[emat0].pTexture_0) {
+     // LOGE("GFXSCENE_CheckLUTs");
+      delete gs_plightingLUTState_46121C[emat0].pTexture_0;
+    }
+    gs_plightingLUTState_46121C[emat0].pTexture_0 = 0;
+    //loc_18C1C6
+    if (gs_plightingLUTState_46121C[emat0].pTexture_4)
+      delete gs_plightingLUTState_46121C[emat0].pTexture_4;
+    gs_plightingLUTState_46121C[emat0].pTexture_4 = 0;
+  }
+
+  //LOGI("GFXSCENE_CheckLUTs loc_18C1DE");
+
+  //loc_18C1DE
+  memcpy(&gs_plightingLUTState_46121C[emat0].tSetting_8, pLUTSceneSettings_33F448, sizeof(CLightingLUTSceneSettings));
+  gs_plightingLUTState_46121C[emat0].Generate(emat0);
+  //LOGI("GFXSCENE_CheckLUTs end");
 }
 //------------------------------------------------------------------------------------------------
 //0018c8d8 ^_^ resetgame 到没问题