Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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]));
            }
        }