/// <summary>
 /// Exit a parse tree produced by <see cref="DDD_layout_scriptParser.object_block"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitObject_block([NotNull] DDD_layout_scriptParser.Object_blockContext context)
 {
 }
예제 #2
0
        /*
         *
         * OBJECT_TYPE CURLY_O object_content CURLY_C;
         */
        public override object VisitObject_block([NotNull] DDD_layout_scriptParser.Object_blockContext context)
        {
            DDDObject dddObject = null;

            switch (context.OBJECT_TYPE().GetText())
            {
            case "circle":
                dddObject = new Circle();
                break;

            case "cone":
                dddObject = new Cone();
                break;

            case "cube":
                dddObject = new Cube();
                break;

            case "cuboid":
                dddObject = new Cuboid();
                break;

            case "cylinder":
                dddObject = new Cylinder();
                break;

            case "hemisphere":
                dddObject = new Hemisphere();
                break;

            case "quad":
                dddObject = new Quad();
                break;

            case "sphere":
                dddObject = new Sphere();
                break;

            case "triangle":
                dddObject = new Triangle();
                break;

            default:
                alerts.Add(new error(context.Start.Line, $"Undefined object type {context.OBJECT_TYPE().GetText()}"));
                return(null);
            }

            AttributeList attributeList = (AttributeList)VisitObject_content(context.object_content());

            if (attributeList == null)
            {
                return(null);
            }

            if (dddObject.SetAttributes(attributeList) == false)
            {
                alerts.Add(new warning(context.Start.Line, $"For '{context.OBJECT_TYPE().GetText()}' [{dddObject.WarningMsg}] attributes are defined. Others will be ignored. " +
                                       $"Missing required(*) attributes will default to 0 or [0, 0, 0]"));
            }

            if (dddObject != null)
            {
                DDDObjects.Add(dddObject);
            }

            return(null);
        }
예제 #3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="DDD_layout_scriptParser.object_block"/>.
 /// <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 VisitObject_block([NotNull] DDD_layout_scriptParser.Object_blockContext context)
 {
     return(VisitChildren(context));
 }