Skip to content

Commit 63264ea

Browse files
Formatting, fix issue with not whole area being rendered, build for 1.3
1 parent c2d8f7a commit 63264ea

3 files changed

Lines changed: 40 additions & 27 deletions

File tree

Source/MapComponents/MapComponent_RenderManager.cs

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,27 @@ public override void MapComponentTick()
8080
{
8181
return;
8282
}
83+
8384
// Check for rendering
8485
// Only render player home maps
8586
if (!map.IsPlayerHome)
8687
{
8788
return;
8889
}
90+
8991
// Check for correct time to render
9092
var longLat = Find.WorldGrid.LongLatOf(map.Tile);
9193
var currHour = MoreGenDate.HoursPassedInteger(Find.TickManager.TicksAbs, longLat.x);
9294
if (currHour <= lastRenderedHour)
9395
{
9496
return;
9597
}
98+
9699
if (currHour % PRModSettings.interval != PRModSettings.timeOfDay % PRModSettings.interval)
97100
{
98101
return;
99102
}
103+
100104
// Update timing variables
101105
lastRenderedHour = currHour;
102106
lastRenderedCounter++;
@@ -105,7 +109,7 @@ public override void MapComponentTick()
105109
{
106110
return;
107111
}
108-
112+
109113
// Show message window or print message
110114
ShowCurrentRenderMessage();
111115
// Start rendering
@@ -160,6 +164,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
160164
{
161165
Log.Error("Progress Renderer is still rendering an image while a new rendering was requested. This can lead to missing or wrong data. (This can also happen in rare situations when you trigger manual rendering the exact same time as an automatic rendering happens. If you did that, just check your export folder if both renderings were done corrently and ignore this error.)");
162166
}
167+
163168
Rendering = true;
164169

165170
// Temporary switch to this map for rendering
@@ -177,7 +182,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
177182
{
178183
CameraJumper.TryHideWorld();
179184
}
180-
185+
181186
#region Hide overlays
182187

183188
var settings = Find.PlaySettings;
@@ -190,20 +195,20 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
190195
showPollutionOverlay = settings.showPollutionOverlay,
191196
showTemperatureOverlay = settings.showTemperatureOverlay
192197
};
193-
198+
194199
Find.PlaySettings.showZones = PRModSettings.renderZones;
195200
Find.PlaySettings.showRoofOverlay = PRModSettings.renderOverlays;
196201
Find.PlaySettings.showFertilityOverlay = PRModSettings.renderOverlays;
197202
Find.PlaySettings.showTerrainAffordanceOverlay = PRModSettings.renderOverlays;
198203
Find.PlaySettings.showPollutionOverlay = PRModSettings.renderOverlays;
199204
Find.PlaySettings.showTemperatureOverlay = PRModSettings.renderOverlays;
200-
205+
201206
//TODO: Hide plans
202207
//TODO: Hide blueprints
203208
//TODO: Hide fog of war (stretch)
204209

205210
#endregion
206-
211+
207212
#region Calculate rendered area
208213

209214
float startX = 0;
@@ -227,6 +232,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
227232
if (cell.x > endX) { endX = cell.x; }
228233
if (cell.z > endZ) { endZ = cell.z; }
229234
}
235+
230236
endX += 1;
231237
endZ += 1;
232238
}
@@ -236,17 +242,18 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
236242
if (!manuallyTriggered)
237243
{
238244
// Test if target render area changed to reset smoothing
239-
if (!(rsTargetStartX.CloseEquals(startX) && rsTargetStartZ.CloseEquals(startZ) && rsTargetEndX.CloseEquals(endX) && rsTargetEndZ.CloseEquals(endZ)))
245+
if (rsTargetStartX != startX || rsTargetStartZ != startZ || rsTargetEndX != endX || rsTargetEndZ != endZ)
240246
{
241247
// Check if area was manually reset or uninitialized (-1) to not smooth
242-
if (rsTargetStartX.CloseEquals(-1f) && rsTargetStartZ.CloseEquals(-1f) && rsTargetEndX.CloseEquals(-1f) && rsTargetEndZ.CloseEquals(-1f))
248+
if (rsTargetStartX == -1f && rsTargetStartZ == -1f && rsTargetEndX == -1f && rsTargetEndZ == -1f)
243249
{
244250
rsCurrentPosition = 1f;
245251
}
246252
else
247253
{
248254
rsCurrentPosition = 1f / (PRModSettings.smoothRenderAreaSteps + 1);
249255
}
256+
250257
rsOldStartX = rsTargetStartX;
251258
rsOldStartZ = rsTargetStartZ;
252259
rsOldEndX = rsTargetEndX;
@@ -256,6 +263,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
256263
rsTargetEndX = endX;
257264
rsTargetEndZ = endZ;
258265
}
266+
259267
// Apply smoothing to render area
260268
if (rsCurrentPosition < 1f)
261269
{
@@ -269,23 +277,23 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
269277

270278
var distX = endX - startX;
271279
var distZ = endZ - startZ;
272-
280+
273281
#endregion
274282

275283
#region Calculate texture size
276-
284+
277285
// Calculate basic values that are used for rendering
278286
int newImageWidth;
279287
int newImageHeight;
280288
if (PRModSettings.scaleOutputImage)
281289
{
282-
newImageWidth = (int)(PRModSettings.outputImageFixedHeight / distZ * distX);
290+
newImageWidth = (int) (PRModSettings.outputImageFixedHeight / distZ * distX);
283291
newImageHeight = PRModSettings.outputImageFixedHeight;
284292
}
285293
else
286294
{
287-
newImageWidth = (int)(distX * PRModSettings.pixelPerCell);
288-
newImageHeight = (int)(distZ * PRModSettings.pixelPerCell);
295+
newImageWidth = (int) (distX * PRModSettings.pixelPerCell);
296+
newImageHeight = (int) (distZ * PRModSettings.pixelPerCell);
289297
}
290298

291299
var mustUpdateTexture = false;
@@ -299,7 +307,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
299307
#endregion
300308

301309
#region Initialize camera and textures
302-
310+
303311
var cameraPosX = distX / 2;
304312
var cameraPosZ = distZ / 2;
305313
var orthographicSize = cameraPosZ;
@@ -315,18 +323,18 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
315323
var camera = Find.Camera;
316324
var camDriver = camera.GetComponent<CameraDriver>();
317325
camDriver.enabled = false;
318-
326+
319327
// Store current camera data
320328
var rememberedRootPos = map.rememberedCameraPos.rootPos;
321329
var rememberedRootSize = map.rememberedCameraPos.rootSize;
322330
var rememberedFarClipPlane = camera.farClipPlane;
323331

324332
// Overwrite current view rect in the camera driver
325333
var camViewRect = camDriver.CurrentViewRect;
326-
var camRectMinX = Math.Min((int)startX, camViewRect.minX);
327-
var camRectMinZ = Math.Min((int)startZ, camViewRect.minZ);
328-
var camRectMaxX = Math.Max((int)Math.Ceiling(endX), camViewRect.maxX);
329-
var camRectMaxZ = Math.Max((int)Math.Ceiling(endZ), camViewRect.maxZ);
334+
var camRectMinX = Math.Min((int) startX, camViewRect.minX);
335+
var camRectMinZ = Math.Min((int) startZ, camViewRect.minZ);
336+
var camRectMaxX = Math.Max((int) Math.Ceiling(endX), camViewRect.maxX);
337+
var camRectMaxZ = Math.Max((int) Math.Ceiling(endZ), camViewRect.maxZ);
330338
var camDriverTraverse = Traverse.Create(camDriver);
331339
camDriverTraverse.Field("lastViewRect").SetValue(CellRect.FromLimits(camRectMinX, camRectMinZ, camRectMaxX, camRectMaxZ));
332340
camDriverTraverse.Field("lastViewRectGetFrame").SetValue(Time.frameCount);
@@ -338,10 +346,9 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
338346
// Set camera values needed for rendering
339347
camera.orthographicSize = orthographicSize;
340348
camera.farClipPlane = cameraBasePos.y + 6.5f;
341-
camera.aspect = (float)imageWidth / imageHeight;
342349

343350
#region Render
344-
351+
345352
// Set render textures
346353
camera.targetTexture = renderTexture;
347354
RenderTexture.active = renderTexture;
@@ -371,20 +378,19 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
371378
//tmpCam.targetTexture = null;
372379
camera.targetTexture = null;
373380
camera.farClipPlane = rememberedFarClipPlane;
374-
camera.ResetAspect();
375381
camDriver.SetRootPosAndSize(rememberedRootPos, rememberedRootSize);
376382
camDriver.enabled = true;
377383

378384
RenderTexture.ReleaseTemporary(renderTexture);
379-
385+
380386
// Enable overlays
381387
Find.PlaySettings.showZones = oldVisibilities.showZones;
382388
Find.PlaySettings.showRoofOverlay = oldVisibilities.showRoofOverlay;
383389
Find.PlaySettings.showFertilityOverlay = oldVisibilities.showFertilityOverlay;
384390
Find.PlaySettings.showTerrainAffordanceOverlay = oldVisibilities.showTerrainAffordanceOverlay;
385391
Find.PlaySettings.showPollutionOverlay = oldVisibilities.showPollutionOverlay;
386392
Find.PlaySettings.showTemperatureOverlay = oldVisibilities.showTemperatureOverlay;
387-
393+
388394
// Switch back to world view if needed
389395
if (rememberedWorldRendered)
390396
{
@@ -396,7 +402,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
396402
{
397403
Current.Game.CurrentMap = rememberedMap;
398404
}
399-
405+
400406
#endregion
401407

402408
// Signal finished rendering
@@ -407,6 +413,7 @@ private IEnumerator DoRendering(bool forceRenderFullMap = false)
407413
messageBox.Close();
408414
messageBox = null;
409415
}
416+
410417
yield return null;
411418

412419
// Start encoding
@@ -421,6 +428,7 @@ private void DoEncoding()
421428
{
422429
Log.Error("Progress Renderer is still encoding an image while the encoder was called again. This can lead to missing or wrong data.");
423430
}
431+
424432
switch (PRModSettings.encoding)
425433
{
426434
case EncodingType.UnityJPG:
@@ -490,41 +498,46 @@ private string CreateFilePath(FileNamePattern fileNamePattern, bool addTmpSubdir
490498
{
491499
imageName = CreateImageNameDateTime();
492500
}
501+
493502
// Create path and subdirectory
494503
var path = PRModSettings.exportPath;
495504
if (PRModSettings.createSubdirs)
496505
{
497506
path = Path.Combine(path, Find.World.info.seedString);
498507
}
508+
499509
Directory.CreateDirectory(path);
500510
// Add subdir for manually triggered renderings
501511
if (manuallyTriggered)
502512
{
503513
path = Path.Combine(path, "manually");
504514
Directory.CreateDirectory(path);
505515
}
516+
506517
// Create additional subdir for numbered symlinks
507518
if (addTmpSubdir)
508519
{
509520
path = Path.Combine(path, "tmp");
510521
Directory.CreateDirectory(path);
511522
}
523+
512524
// Get correct file and location
513525
var fileExt = EnumUtils.GetFileExtension(PRModSettings.encoding);
514526
var filePath = Path.Combine(path, imageName + "." + fileExt);
515527
if (!File.Exists(filePath))
516528
{
517529
return filePath;
518530
}
531+
519532
var i = 1;
520533
filePath = Path.Combine(path, imageName);
521534
string newPath;
522535
do
523536
{
524537
newPath = filePath + "-alt" + i + "." + fileExt;
525538
i++;
526-
}
527-
while (File.Exists(newPath));
539+
} while (File.Exists(newPath));
540+
528541
return newPath;
529542
}
530543

@@ -544,4 +557,4 @@ private string CreateImageNameNumbered()
544557
return "rimworld-" + Find.World.info.seedString + "-" + map.Tile + "-" + lastRenderedCounter.ToString("000000");
545558
}
546559
}
547-
}
560+
}
1.5 KB
Binary file not shown.
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)