mpstark / DynamicCam

A more dynamic camera for World of Warcraft.
MIT License
23 stars 11 forks source link

Camera Height/Y-Pos sometimes not updating correctly on Situation Change #42

Closed Asmodean- closed 3 years ago

Asmodean- commented 3 years ago

Hi,

Foreword - I love the work you've done with this Addon. It's an instant must-have, once tried : )

As the title suggests. The camera position seems to get stuck / fail to update on Situation change, often.

A prime example, I suppose, would be Druid shifting, into Cat/flight form. The camera Y pos can end up being too high in Cat, and too low in base form, etc. (getting stuck in prev coords)

Is there a particular reason you are not calling RefreshCamera() within the DynamicCam:ChangeSituation() func?. You would have to inherit a PlayerModel frame from UIParent, I think. I'm not sure what the implications are, performance-wise.

Thanks again for the work.

edit: I suspect this might be a Blizzard camera issue, btw. So this might be down as enhancement, rather than addon-specific bug.

LudiusMaximus commented 3 years ago

Hi, and thanks for your kind words!

First, let me make sure I understand what you mean by "Y position". Is it the camera zoom or the pitch?

In your edit you already wrote that this might be due to how the game automatically changes the camera based on player model. What you could try is to compensate this somehow with a DynamicCam situation. If you can tell me how to reproduce that a DynamicCam situation change does not apply a cvar change as expected, please let me know.

The RefreshCamera() function, by the way, is only for PlayerModel frames (as you correctly wrote). So it will only affect the camera within this model frame, but not the game world camera.

PS: If you like DynamicCam now, just wait until I have finished version 2.0. It's so much better!! :-)

Asmodean- commented 3 years ago

Hi, thanks for the response.

You can probably close this. There is nothing specifically wrong with the situations. From my testing (1 person, at that) they change as expected from the specified event/trigger. The issue is a blizzard one. It also will probably go unnoticed by most. It is only really prevalent to Druids shifting. (it will also be the same for anyone, using Toys or what-not that change the player model)

As you'll already know, the camera height is not directly accessible to us, externally; via cvar or script api but it generally updates with their predefined params on a model change / mount, etc.

What is not immediately apparent is they don't use the same method for druid shifting, they simply change the cam trigger for a character /sit (I suppose they thought shifting happens so frequently it would be easier on response time - dunno)

This is what can fail to update correctly when shifting for example - from Cat directly to Flight form, while in 'ground mode'. The Situation changes from this Addon only make it more apparent - they don't cause it, directly.

Anyways. I was looking for a way to incorporate a proper refresh of the camera of the custom situation for Druid shifts, to correctly set the target cam height. It seems to work by enabling a faux head tracking on the Shift situation (with the head tracker strength at 1, but everything else turned to min - so that it is effectively off, but 'enabled'. It appears to force the retest on the cam height.

ended up being a long one, sorry.

Thanks again for the addon.

LudiusMaximus commented 3 years ago

Hey, glad you found a work around for this issue (that is not caused by DynamicCam). Thanks for your descriptions anyway!