static bool Prefix(Terraformer __instance, out bool __state) { __state = false; if (ClipmapLevelExtensions.isMeshesRebuilding) { return(false); } else { var probe = __instance.GetProbe(); if (probe && !probe.activeSelf) { probe.SetActive(true); } } if (LargeWorld.main == null) { return(false); } if (__instance.GetUsingPlayer() == null) { return(false); } var hasActiveStrokes = __instance.activeStrokes.Count > 0; var isAnyHandHeld = __instance.GetUsingPlayer().GetRightHandHeld() || __instance.GetUsingPlayer().GetLeftHandHeld(); if (__instance.penDown && hasActiveStrokes && !isAnyHandHeld) { __state = true; #if BelowZero if (__instance.type == 14) { Logger.Warning($"Terraformer.type uses undefined material type 14. Resetting to 1"); __instance.type = 1; } #endif } return(true); }
static void Postfix(Terraformer __instance, bool __state) { if (__state) { var type = LargeWorldStreamer.main.GetMaterialTypeOfLastOctreesEditAdd(); if (type > 0) { __instance.type = type; } var streamerV2 = LargeWorldStreamer.main.streamerV2; streamerV2.clipmapStreamer.FlushRangesEdited(streamerV2.octreesStreamer.minLod, streamerV2.octreesStreamer.maxLod); var probe = __instance.GetProbe(); if (probe) { probe.SetActive(false); } } }