Esempio n. 1
0
 public BOBRES Simulate(ref BobEffect.Context ctx)
 {
     if (!this.loaded)
     {
         return(BOBRES.ERROR);
     }
     return(this.SimulateData(ref ctx));
 }
Esempio n. 2
0
 protected override BOBRES SimulateData(ref BobEffect.Context ctx)
 {
     if (ctx.dt != 0.0)
     {
         PunchData data = (PunchData)ctx.data;
         if (data.time >= this.glob.endTime)
         {
             return(BOBRES.EXIT);
         }
         if (data.time >= this.glob.endTime)
         {
             return(BOBRES.EXIT);
         }
         if (this.x.valid)
         {
             if (this.x.constant || (data.time <= this.x.startTime))
             {
                 data.force.x = this.x.startValue;
             }
             else if (data.time >= this.x.endValue)
             {
                 data.force.x = this.x.endValue;
             }
             else
             {
                 data.force.x = this.x.curve.Evaluate(data.time);
             }
         }
         if (this.y.valid)
         {
             if (this.y.constant || (data.time <= this.y.startTime))
             {
                 data.force.y = this.y.startValue;
             }
             else if (data.time >= this.y.endValue)
             {
                 data.force.y = this.y.endValue;
             }
             else
             {
                 data.force.y = this.y.curve.Evaluate(data.time);
             }
         }
         if (this.z.valid)
         {
             if (this.z.constant || (data.time <= this.z.startTime))
             {
                 data.force.z = this.z.startValue;
             }
             else if (data.time >= this.z.endValue)
             {
                 data.force.z = this.z.endValue;
             }
             else
             {
                 data.force.z = this.z.curve.Evaluate(data.time);
             }
         }
         if (this.pitch.valid)
         {
             if (this.pitch.constant || (data.time <= this.pitch.startTime))
             {
                 data.torque.x = this.pitch.startValue;
             }
             else if (data.time >= this.pitch.endValue)
             {
                 data.torque.x = this.pitch.endValue;
             }
             else
             {
                 data.torque.x = this.pitch.curve.Evaluate(data.time);
             }
         }
         if (this.yaw.valid)
         {
             if (this.yaw.constant || (data.time <= this.yaw.startTime))
             {
                 data.torque.y = this.yaw.startValue;
             }
             else if (data.time >= this.yaw.endValue)
             {
                 data.torque.y = this.yaw.endValue;
             }
             else
             {
                 data.torque.y = this.yaw.curve.Evaluate(data.time);
             }
         }
         if (this.roll.valid)
         {
             if (this.roll.constant || (data.time <= this.roll.startTime))
             {
                 data.torque.z = this.roll.startValue;
             }
             else if (data.time >= this.roll.endValue)
             {
                 data.torque.z = this.roll.endValue;
             }
             else
             {
                 data.torque.z = this.roll.curve.Evaluate(data.time);
             }
         }
         data.time += (float)ctx.dt;
     }
     return(BOBRES.CONTINUE);
 }
Esempio n. 3
0
 protected override BOBRES SimulateData(ref BobEffect.Context ctx)
 {
     if (ctx.dt == 0)
     {
         return(BOBRES.CONTINUE);
     }
     BobPunchEffect.PunchData punchDatum = (BobPunchEffect.PunchData)ctx.data;
     if (punchDatum.time >= this.glob.endTime)
     {
         return(BOBRES.EXIT);
     }
     if (punchDatum.time >= this.glob.endTime)
     {
         return(BOBRES.EXIT);
     }
     if (this.x.valid)
     {
         if (this.x.constant || punchDatum.time <= this.x.startTime)
         {
             punchDatum.force.x = (double)this.x.startValue;
         }
         else if (punchDatum.time < this.x.endValue)
         {
             punchDatum.force.x = (double)this.x.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.force.x = (double)this.x.endValue;
         }
     }
     if (this.y.valid)
     {
         if (this.y.constant || punchDatum.time <= this.y.startTime)
         {
             punchDatum.force.y = (double)this.y.startValue;
         }
         else if (punchDatum.time < this.y.endValue)
         {
             punchDatum.force.y = (double)this.y.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.force.y = (double)this.y.endValue;
         }
     }
     if (this.z.valid)
     {
         if (this.z.constant || punchDatum.time <= this.z.startTime)
         {
             punchDatum.force.z = (double)this.z.startValue;
         }
         else if (punchDatum.time < this.z.endValue)
         {
             punchDatum.force.z = (double)this.z.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.force.z = (double)this.z.endValue;
         }
     }
     if (this.pitch.valid)
     {
         if (this.pitch.constant || punchDatum.time <= this.pitch.startTime)
         {
             punchDatum.torque.x = (double)this.pitch.startValue;
         }
         else if (punchDatum.time < this.pitch.endValue)
         {
             punchDatum.torque.x = (double)this.pitch.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.torque.x = (double)this.pitch.endValue;
         }
     }
     if (this.yaw.valid)
     {
         if (this.yaw.constant || punchDatum.time <= this.yaw.startTime)
         {
             punchDatum.torque.y = (double)this.yaw.startValue;
         }
         else if (punchDatum.time < this.yaw.endValue)
         {
             punchDatum.torque.y = (double)this.yaw.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.torque.y = (double)this.yaw.endValue;
         }
     }
     if (this.roll.valid)
     {
         if (this.roll.constant || punchDatum.time <= this.roll.startTime)
         {
             punchDatum.torque.z = (double)this.roll.startValue;
         }
         else if (punchDatum.time < this.roll.endValue)
         {
             punchDatum.torque.z = (double)this.roll.curve.Evaluate(punchDatum.time);
         }
         else
         {
             punchDatum.torque.z = (double)this.roll.endValue;
         }
     }
     BobPunchEffect.PunchData punchDatum1 = punchDatum;
     punchDatum1.time = punchDatum1.time + (float)ctx.dt;
     return(BOBRES.CONTINUE);
 }
Esempio n. 4
0
 protected abstract BOBRES SimulateData(ref BobEffect.Context ctx);