View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002542 | FSSCP | math-related | public | 2011-11-14 10:35 | 2019-12-14 18:01 |
Reporter | zookeeper | Assigned To | Goober5000 | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Summary | 0002542: model_anim_get_time_type doesn't return correct value for triggered animations | ||||
Description | After triggering an animation, calls to ship:getAnimationDoneTime("scripted", 0) consistently return a garbage value as long as the animation plays. I've tracked it down to model/modelanim.cpp:model_anim_get_time_type line 655 (note that line 650 is probably similarly affected, but the code just never goes there in my testcase), where a_time is consistently getting the value -2147483648 as long as the animation is playing. I don't know if there's a problem with the math on that line, or whether the necessary animation data is not getting set for triggered animations somewhere else. Unfortunately I have no portable complete testcase to provide. Below is a test script which displays timing information for a triggered animation on the player's ship; if you fly a ship with a triggered animation, you should see getAnimationDoneTime() returning a bogus value while the animation plays and the correct value (current time + the animation length) otherwise. I haven't ruled out the possibility that this affects other animations than triggered ones, since model_anim_get_time_type the function is called from other places as well. | ||||
Additional Information | ;Note that this requires r7990, which fixes getAnimationDoneTime ;into returning the time in seconds as it should. ;You might also notice that when the animation is not playing, ;the value returned by getAnimationDoneTime progressively shrinks ;as the mission proceeds. This seems to be an unrelated issue. #Conditional Hooks $State: GS_STATE_GAME_PLAY $On Frame: [ if hv.Player ~= nil and hv.Player:isValid() then gr.setColor(255, 255, 255) gr.drawString("Animation time remaining: " .. tostring(hv.Player:getAnimationDoneTime("scripted", 0) - mn.getMissionTime()), 300, 500) gr.drawString(" getAnimationDoneTime: " .. tostring(hv.Player:getAnimationDoneTime("scripted", 0))) gr.drawString(" getMissionTime: " .. tostring(mn.getMissionTime())) end ] #End | ||||
Tags | No tags attached. | ||||
|
The patch posted at http://www.hard-light.net/forums/index.php?topic=79068.0 partially fixes the issue. If that is verified as working as advertised and gets committed, this report should probably be closed, as the remaining issues are a bit different. |
|
See PR 2195: https://github.com/scp-fs2open/fs2open.github.com/pull/2195 |
|
The PR has been merged. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-11-14 10:35 | zookeeper | New Issue | |
2011-11-20 08:15 | zookeeper | Note Added: 0012983 | |
2012-02-09 07:02 | Goober5000 | Assigned To | => Goober5000 |
2012-02-09 07:02 | Goober5000 | Status | new => assigned |
2019-12-14 07:13 | Goober5000 | Note Added: 0016943 | |
2019-12-14 18:01 | Goober5000 | Status | assigned => resolved |
2019-12-14 18:01 | Goober5000 | Resolution | open => fixed |
2019-12-14 18:01 | Goober5000 | Note Added: 0016944 |