i've just found the bug with all values logging. and i found that all timelines are messed up.
in libgdx
private void readCurve (DataInput input, int frameIndex, CurveTimeline timeline) throws IOException {
switch (input.readByte()) {
case CURVE_STEPPED:
timeline.setStepped(frameIndex);
break;
case CURVE_BEZIER:
setCurve(timeline, frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat());
break;
}
}
in this implement
void ReadCurve (BufferedStream& input, int frameIndex, spCurveTimeline* timeline) {
switch (input.ReadByte()) {
case CURVE_STEPPED:
spCurveTimeline_setStepped(timeline, frameIndex);
break;
case CURVE_BEZIER:
spCurveTimeline_setCurve(timeline, frameIndex, ReadFloat(input), ReadFloat(input), ReadFloat(input), ReadFloat(input));
break;
}
}
both implementation look same but, it's not because of calling convention.
c/c++ normally works as stdcall. and it makes pass the values from right to left.
so, the last 4 arugments were reversed. everything in timelines was messed up.
I did manually call function before calling spCurveTimeline_setCurve and assigned the values.
now i fixed it. thanks for all helping. have a nice day!