public BOBRES Simulate(ref BobEffect.Context ctx) { if (!this.loaded) { return(BOBRES.ERROR); } return(this.SimulateData(ref ctx)); }
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); }
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); }
protected abstract BOBRES SimulateData(ref BobEffect.Context ctx);