Beispiel #1
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var val   = new ConstNumberExpr(Value);
            var alpha = ThisExpr.Instance.MakeIndex("alpha");

            return(new SimpleBlock(new ILineObject[] {
                new ControlBlock(ControlBlockType.If, new BiOpExpr(alpha, val, BiOpExpr.Op.Greater), new ILineObject[] {
                    alpha.Assign(new BiOpExpr(alpha, val, BiOpExpr.Op.Minus)).Statement(),
                }).Statement(),
                new ControlBlock(ControlBlockType.Else, new ILineObject[] {
                    ThisExpr.Instance.MakeIndex("Release").Call().Statement(),
                }).Statement(),
            }).Statement());
        }
Beispiel #2
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var vx  = ThisExpr.Instance.MakeIndex("vx");
            var vy  = ThisExpr.Instance.MakeIndex("vy");
            var val = new ConstNumberExpr(Value);
            var rz  = ThisExpr.Instance.MakeIndex("rz");
            var vxd = new BiOpExpr(val, ThisExpr.Instance.MakeIndex("cos").Call(rz), BiOpExpr.Op.Multiply);
            var vyd = new BiOpExpr(val, ThisExpr.Instance.MakeIndex("sin").Call(rz), BiOpExpr.Op.Multiply);

            vxd = new BiOpExpr(vxd, ThisExpr.Instance.MakeIndex("direction"), BiOpExpr.Op.Multiply);

            return(new SimpleBlock(new ILineObject[] {
                vx.Assign(new BiOpExpr(vx, vxd, BiOpExpr.Op.Add)).Statement(),
                vy.Assign(new BiOpExpr(vy, vyd, BiOpExpr.Op.Add)).Statement(),
            }).Statement());
        }