Ejemplo n.º 1
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var id      = env.GetActionID(Animation);
            var segment = new BiOpExpr(ThisExpr.Instance.MakeIndex("rand").Call(),
                                       new ConstNumberExpr(SegmentCount), BiOpExpr.Op.Mod);
            var ret = ThisExpr.Instance.MakeIndex("SetMotion").Call(new ConstNumberExpr(id), segment).Statement();

            return(SetMotionEffectHelper.Generate(env, ret));
        }
Ejemplo n.º 2
0
        public override Expression Generate(GenerationEnvironment env)
        {
            string index = null;

            switch (Type)
            {
            case ActorMemberType.x:
                index = "x";
                break;

            case ActorMemberType.y:
                index = "y";
                break;

            case ActorMemberType.vx:
                index = "vx";
                break;

            case ActorMemberType.vy:
                index = "vy";
                break;

            case ActorMemberType.rz:
                index = "rz";
                break;

            case ActorMemberType.sx:
                index = "sx";
                break;

            case ActorMemberType.sy:
                index = "sy";
                break;

            case ActorMemberType.alpha:
                index = "alpha";
                break;
            }
            if (index == null)
            {
                return(new ConstNumberExpr(0));
            }
            var ret = ThisExpr.Instance.MakeIndex(index);

            if (Type == ActorMemberType.vx)
            {
                ret = new BiOpExpr(ret, ThisExpr.Instance.MakeIndex("direction"), BiOpExpr.Op.Multiply);
            }
            return(ret);
        }
Ejemplo n.º 3
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            string index = null;

            switch (Type)
            {
            case ActorMemberType.x:
                index = "x";
                break;

            case ActorMemberType.y:
                index = "y";
                break;

            case ActorMemberType.vx:
                index = "vx";
                break;

            case ActorMemberType.vy:
                index = "vy";
                break;

            case ActorMemberType.rz:
                index = "rz";
                break;

            case ActorMemberType.sx:
                index = "sx";
                break;

            case ActorMemberType.sy:
                index = "sy";
                break;

            case ActorMemberType.alpha:
                index = "alpha";
                break;
            }
            if (index == null)
            {
                return(new SimpleLineObject(""));
            }
            var val = Value.Generate(env);

            if (Type == ActorMemberType.vx)
            {
                val = new BiOpExpr(val, ThisExpr.Instance.MakeIndex("direction"), BiOpExpr.Op.Multiply);
            }
            return(new BiOpExpr(ThisExpr.Instance.MakeIndex(index), val, BiOpExpr.Op.Assign).Statement());
        }
Ejemplo n.º 4
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());
        }
Ejemplo n.º 5
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var r  = new IdentifierExpr("r");
            var s  = new IdentifierExpr("s");
            var vx = new BiOpExpr(ThisExpr.Instance.MakeIndex("cos").Call(r), s, BiOpExpr.Op.Multiply);

            vx = new BiOpExpr(vx, ThisExpr.Instance.MakeIndex("direction"), BiOpExpr.Op.Multiply);
            var vy = new BiOpExpr(ThisExpr.Instance.MakeIndex("sin").Call(r), s, BiOpExpr.Op.Multiply);

            return(new SimpleBlock(new ILineObject[] {
                new LocalVarStatement("r", Rotation.Generate(env)),
                new LocalVarStatement("s", Speed.Generate(env)),
                ThisExpr.Instance.MakeIndex("rz").Assign(r).Statement(),
                ThisExpr.Instance.MakeIndex("vx").Assign(vx).Statement(),
                ThisExpr.Instance.MakeIndex("vy").Assign(vy).Statement(),
                new SimpleLineObject("this.SetCollisionRotation(0.0, 0.0, this.rz);"),
            }).Statement());
        }