S&box Wiki

Revision Difference

FixingSimulateLoops#546667

<cat>Code.Misc</cat>⤶ <title>Fixing Loops in Simulate Calls</title>⤶ ⤶ Using any type of loop in a Simulate call can cause problems.⤶ ⤶ Specifically, recompiling a game while an entity is executing a for loop every frame will majorly increase your compile time. Thankfully, there is a simple way to fix this.⤶ ⤶ By adding a few lines of code, the entity will stop the loop when the game reaches a low enough FPS. If there is a way to specifically detect if the engine is compiling/hotloading, please change this article to reflect that, because this isn't a particularly secure method and could theoretically be abused by dumbfucks.⤶ ⤶ ```⤶ // Do this thing 10 times.⤶ for ( int i = 0; i < 10; i++ ) {⤶ if ( PerformanceStats.FrameTime >= 0.5f ) break;⤶ // Do this thing.⤶ }⤶ ```⤶ ⤶ This tells the entity to break out of the loop if FPS is below 2, which usually happens during compile-time.⤶