Posted September 17, 201510 yr Hi guys, I am hunting a bug that makes my animation skipping few frames from time to time ... and I am able to fix it. But I do not understand why. Maybe you can help me out. Look at the following short method code sections ... option A and option B. This code is in the SetRotationAngles method of my model class. Option A this.bodysegment1.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F) ); this.bodysegment2.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F - (float)(Math.PI/6)) ); this.bodysegment3.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F - (float)(Math.PI/3)) ); this.bodysegment4.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F - (float)(Math.PI/2)) ); this.bodysegment5.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F - (float)(2*Math.PI/3)) ); this.bodysegment6.rotateAngleY = 0.15F *(MathHelper.cos(f2 * _shark.GetTailFlapSpeed() * 0.327F - (float)(5*Math.PI/6)) ); Option B this.bodysegment1.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F * 0.327F) ); this.bodysegment2.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F * 0.327F - (float)(Math.PI/6)) ); this.bodysegment3.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F * 0.327F - (float)(Math.PI/3)) ); this.bodysegment4.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F * 0.327F - (float)(Math.PI/2)) ); this.bodysegment5.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F* 0.327F - (float)(2*Math.PI/3)) ); this.bodysegment6.rotateAngleY = 0.15F *(MathHelper.cos(f2 * 0.7F * 0.327F - (float)(5*Math.PI/6)) ); The Option A and the Option B section are in fact the same code, as the exception of _shark.GetTailFlapSpeed in Option A and 0.7F and Option B. If I execute the code Option A, it access the entity object passed in parameters (named _shark), which will return a simple 0.7F value. If I execute the code Option B, I simply hardcode the 0.7F value. That is really weird, if I execute the Option A code, that access a simple property ... the animation jump some frame commonly. If I execute the Option B code, then the animation is perfect. I even tried putting the value of _shark.GetTailFlapSpeed() in a variable ...therefore calling it only once ... which has the same effect. I am confused. Why accesing a simple method in the entity class makes the animation run not smoothly. Is it a client/server class synchro thing? Here is the content of that little method. @Override public float GetTailFlapSpeed() { return GetBaseTailFlapSpeed() + (currentSpeed*0.2F); } currentSpeed is a simple protected float value in a parent class. And here is the GetBaseTailFlapSpeed method ... both are from a parent class. As you will see, the access is purely direct ... how come it creates a glitch? protected final float GetBaseTailFlapSpeed() { return pBaseTailFlapSpeed; }
September 17, 201510 yr Author I know its a tough one ...so maybe I can try something else. Is it possible to link the Model class to the Entity class. So when the entity class is modified server side, I would send a Message that update the model class client side? I know that the entity is available from the model class methods ...but since accessing it causes glitches in the animation, I could try to always keep my Model class updated with IMessage... Any hints?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.