Skip to content

Commit 38eb8dc

Browse files
committed
tga fix.
1 parent 5c1aa33 commit 38eb8dc

4 files changed

Lines changed: 38 additions & 20 deletions

File tree

DynamicTextureLoader/Loader.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ private void Update()
4444
MethodInfo mI = typeof(PartModule).GetMethod("Awake", BindingFlags.NonPublic | BindingFlags.Instance);
4545
mI.Invoke(module, null);
4646
module.Load(moduleNode);
47-
module.Unload(true);
47+
module.Unload(true, false);
4848
}
4949
else
5050
{
@@ -199,7 +199,7 @@ private static bool updateToStockSettings(GameDatabase.TextureInfo texInfo)
199199
{
200200
texInfo.isNormalMap = texInfo.file.name.EndsWith("NRM");
201201
texInfo.isReadable = texInfo.file.fileExtension == "dds" || texInfo.file.fileExtension == "truecolor" || texInfo.isNormalMap ? false : true;
202-
texInfo.isCompressed = texInfo.file.fileExtension == "truecolor" ? false : true;
202+
texInfo.isCompressed = texInfo.file.fileExtension == "truecolor" || texInfo.file.fileExtension == "tga" ? false : true;
203203
bool hasMipmaps = texInfo.isNormalMap || texInfo.file.fileExtension == "dds" || texInfo.file.fileExtension == "tga";
204204
return hasMipmaps;
205205
}

DynamicTextureLoader/TexRefCnt.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public static void LoadFromList(List<TexRefCnt> list)
2727
{
2828
foreach (TexRefCnt texRef in list)
2929
{
30+
Loader.Log("List: " + texRef.texInfo.name);
3031
texRef.Load();
3132
}
3233
}
@@ -85,6 +86,7 @@ public static void UnLoadFromList(List<TexRefCnt> list, bool force)
8586
{
8687
foreach(TexRefCnt texRef in list)
8788
{
89+
Loader.Log("List: " + texRef.texInfo.name);
8890
texRef.Unload(force);
8991
}
9092
}

DynamicTextureLoader/TextureUnloaderPartModule.cs

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class TextureUnloaderPartModule : PartModule
1313

1414
public override void OnAwake()
1515
{
16-
if (HighLogic.LoadedSceneIsGame)
16+
if (HighLogic.LoadedSceneIsEditor||HighLogic.LoadedSceneIsFlight)
1717
{
1818
Load();
1919
}
@@ -48,66 +48,82 @@ private void Load()
4848
string partUrl = this.part.partInfo.partUrl;
4949

5050
Loader.Log("Loading: " + partUrl);
51-
52-
foreach (Renderer mr in part.FindModelComponents<Renderer>())
53-
{
54-
Loader.Log("Renderer: " + mr.name);
55-
TexRefCnt.LoadFromRenderer(mr);
56-
}
5751

5852
if (!internalCache.ContainsKey(partUrl))
5953
{
54+
55+
List<TexRefCnt> list = new List<TexRefCnt>();
56+
foreach (Renderer mr in part.FindModelComponents<Renderer>())
57+
{
58+
Loader.Log("Renderer: " + mr.name);
59+
TexRefCnt.LoadFromRenderer(mr, list);
60+
}
61+
62+
6063
if (part.partInfo.internalConfig.HasData && HighLogic.LoadedSceneIsGame)
6164
{
65+
Loader.Log("Creating internal cache...");
6266
Part iPart = fetchInternalPart();
6367
InternalModel internalModel = iPart.internalModel;
64-
List<TexRefCnt> list = new List<TexRefCnt>();
6568
foreach (Renderer mr in internalModel.FindModelComponents<Renderer>())
6669
{
70+
Loader.Log("ImRenderer: " + mr.name);
6771
TexRefCnt.LoadFromRenderer(mr, list);
6872
}
69-
internalCache[partUrl] = list;
7073
GameObject.DestroyImmediate(iPart);
7174
}
75+
else
76+
{
77+
Loader.Log(part.partInfo.internalConfig.HasData+" " +HighLogic.LoadedSceneIsGame);
78+
}
79+
80+
internalCache[partUrl] = list;
7281
}
73-
else
82+
else
7483
{
84+
Loader.Log("Loading from internal cache...");
7585
List<TexRefCnt> list = internalCache[partUrl];
7686
TexRefCnt.LoadFromList(list);
7787
}
7888
loaded = true;
7989
}
8090
}
8191

82-
public void Unload(bool force = false)
92+
public void Unload(bool force = false, bool cache = true)
8393
{
8494
if (loaded || force)
8595
{
8696
string partUrl = this.part.partInfo.partUrl;
8797
Loader.Log("Unloading: " + partUrl);
88-
foreach (Renderer mr in part.FindModelComponents<Renderer>())
89-
{
90-
Loader.Log("Renderer: " + mr.name);
91-
TexRefCnt.UnLoadFromRenderer(mr, force);
92-
}
9398

9499
if (!internalCache.ContainsKey(partUrl))
95100
{
101+
List<TexRefCnt> list = new List<TexRefCnt>();
102+
foreach (Renderer mr in part.FindModelComponents<Renderer>())
103+
{
104+
Loader.Log("Renderer: " + mr.name);
105+
TexRefCnt.UnLoadFromRenderer(mr, force, list);
106+
}
107+
96108
if (part.partInfo.internalConfig.HasData && HighLogic.LoadedSceneIsGame)
97109
{
98110
Part iPart = fetchInternalPart();
99111
InternalModel internalModel = iPart.internalModel;
100-
List<TexRefCnt> list = new List<TexRefCnt>();
101112
foreach (Renderer mr in internalModel.FindModelComponents<Renderer>())
102113
{
114+
Loader.Log("ImRenderer: " + mr.name);
103115
TexRefCnt.UnLoadFromRenderer(mr, force, list);
104116
}
105-
internalCache[partUrl] = list;
106117
GameObject.DestroyImmediate(iPart);
107118
}
119+
if (cache)
120+
{
121+
internalCache[partUrl] = list;
122+
}
108123
}
109124
else
110125
{
126+
Loader.Log("Unloading from internal cache...");
111127
List<TexRefCnt> list = internalCache[partUrl];
112128
TexRefCnt.UnLoadFromList(list, force);
113129
}
134 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)