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)); }
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); }
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()); }
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()); }
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()); }