Exemple #1
0
        /* Egy változó x, y, z adattagjára történt hivatkozás.
         * A változó
         *
         */
        public override object VisitXyz([NotNull] DDD_layout_scriptParser.XyzContext context)
        {
            string signedId = context.signed_id().GetText();
            bool   negative = signedId.Contains('-');
            string id       = signedId.Replace("+", "").Replace("-", "");

            dynamic value  = GetVariableValueByName(id);
            Symbol  symbol = GetVariableByName(id);

            // nem inicializált változóból olvasás
            if (value is UnitializedObject)
            {
                alerts.Add(new error(context.Start.Line, $" Uninitialized value {id}"));
                return(null);
            }
            // a hivatkozott változó vec3, a normál use-case
            else if (symbol.Type == "Vec3")
            {
                string xyzText  = context.GetText();
                vec3   vecValue = (vec3)value;

                if (xyzText.Contains(".x"))
                {
                    return(negative ? -vecValue.x : vecValue.x);
                }
                else if (xyzText.Contains(".y"))
                {
                    return(negative ? -vecValue.y : vecValue.y);
                }
                else if (xyzText.Contains(".z"))
                {
                    return(negative ? -vecValue.z : vecValue.z);
                }
            }
            // nem vec3-ra hivatkozott a változó
            alerts.Add(new error(context.Start.Line, $"{id} doesn't refer to a vec3 instance"));

            return(null);
        }
 /// <summary>
 /// Exit a parse tree produced by <see cref="DDD_layout_scriptParser.xyz"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitXyz([NotNull] DDD_layout_scriptParser.XyzContext context)
 {
 }
Exemple #3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="DDD_layout_scriptParser.xyz"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitXyz([NotNull] DDD_layout_scriptParser.XyzContext context)
 {
     return(VisitChildren(context));
 }