public void Draw() { if (sharedDrawingState.Seed != currentSeed) { UpdateSeed(sharedDrawingState.Seed); currentSeed = sharedDrawingState.Seed; } if (currentSeed is null) { return; } grassRandom.Reset(); ctx.FillStyle = SkyColor; ctx.ClearRect(0, 0, 512, 512); ctx.FillRect(0, 0, 512, 512); treeDrawingContext.GrowthFactor = EasingHelper.EaseOutQuad(sharedDrawingState.GrowthControl * 0.75 + 0.25); treeDrawingContext.LeafFactor = sharedDrawingState.ThicknessControl * 0.9; treeDrawingContext.IsDead = sharedDrawingState.IsDead; var grassHeight = TreeYOffset - 50; ctx.FillStyle = GrassBackgroundColor; ctx.FillRect(0, grassHeight, CanvasWidth, CanvasHeight - grassHeight); var grassForegroundLimit = TreeYOffset - 20; for (var y = grassHeight - 10; y < grassForegroundLimit; y += 5) { DrawGrass(y, 512); } treeDrawingContext.DrawTree(trunk); for (var y = grassForegroundLimit; y < CanvasHeight; y += 5) { DrawGrass(y, 512); } DrawWaterHUD(); }