public string GetScript(ShaderType shaderType) { var version = Scene.GLTargetVersion; var signals = GetSignalScript(); var sceneScript = Scene.GetScript(shaderType); var shapeScripts = string.Concat(Scene.Shapes.Select( p => string.Format( CultureInfo.InvariantCulture, Resources.Format_Shape, p.Index + 1, p, Tokens.BeginShape(p.Index), p.GetScript(shaderType).Indent(" "), Tokens.EndShape(p.Index)))); var cases = !Scene.Shapes.Any() ? string.Empty : Scene.Shapes .Select(p => string.Format(CultureInfo.InvariantCulture, Resources.Format_Case, p.Index + 1)) .Aggregate((p, q) => $"{p}{q}"); return(Scene.Shapes.All(p => string.IsNullOrWhiteSpace(p.GetScript(shaderType))) ? string.Empty : string.Format( CultureInfo.InvariantCulture, Resources.Format_Scene, version, signals, Tokens.BeginScene, sceneScript, Tokens.EndScene, shapeScripts, cases)); }
private void FindBreaks(string script) { _breaks.Clear(); if (string.IsNullOrWhiteSpace(script)) { return; } var ok = AddBreak(0) && AddBreak(script.FindFirstTokenLine(Tokens.BeginScene) + 2) && AddBreak(script.FindFirstTokenLine(Tokens.EndScene) - 1); for (var index = 0; index < Scene.Shapes.Count; index++) { ok &= AddBreak(script.FindFirstTokenLine(Tokens.BeginShape(index)) + 2) & AddBreak(script.FindFirstTokenLine(Tokens.EndShape(index)) - 1); } ok &= AddBreak(script.GetLineCount()); if (!ok) { _breaks.Clear(); } for (var index = 0; index < _breaks.Count; index += 2) { PrimaryCon.AddSystemRange(new Range(PrimaryTextBox, 0, _breaks[index], 0, _breaks[index + 1])); } }