-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sit target config #31
base: master
Are you sure you want to change the base?
Conversation
And yes, I apologize to the code reviewers: I did do some cleanup on the file... I placed that in its own commit, so if you just want to look over the core logic changes, check the first commit. I could have done a ton more cleanup, but I tried to keep myself to only the most egregious fluff. |
"This PR changes the default legacy sit target offset system to one that seems to me to match SL much more accurately than the previous system." The existing code has undergone months of extensive testing and about a dozen revisions to attempt to get the behavior just right. What specific bug, other than the OpenSim-compatible offset, do all these code changes attempt to resolve? I cannot support these changes, nor the massive burden of attempting to fully retest all the sit target combinations of sit target plus Avatar-as-a-Prim (AaaP) semantics. This is a disaster waiting to happen, and needless risk. Again, what specific bug do these changes attempt to resolve? |
In understand that heavy amounts of testing went into the existing code, and I tried to make sure that if Legacy mode was selected that there was no semantic change. My test setup in each grid, carefully made identical in each grid:
From my observations of SL:
From my reading the code and observations of unmodified Halcyon and modified Halcyon in Legacy mode:
The problem I'm trying to solve is that various sit target scripts, including my old Lex Neva Sit Target Helper, are tuned for SL sit target math. Grids that are small and taking their scripts from SL, like Vin does, are needing to be redone - and not every scripter has good vector match chops. Thus I'd prefer that Halcyon be SL compatible by default and that those grids or regions on a given grid that want to use the legacy math can do so. You'll note that in the change that in legacy mode As to testing I'm more than willing to run the tests myself if I can get them. Got an OAR full of such tests? No rush: I'm not going to be merging this PR for a very long time I suspect: it's got a long way to go to prove itself. |
3aecdea
to
7f5d00e
Compare
I've backed out the code cleanup, and put it in its own branch for a later PR. |
I'm seeing that funky rotation even on my Windows box, so I've been investigating when I can. |
With the above commits I just got the For my test setup here was SecondLife's AvatarSitResponse message:
Halcyon was giving me the following:
I also discovered that I'm getting a later message, a
|
2d92944
to
d9ad979
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed privately, I will probably never be comfortable with any change to sit target offsets that result in changes for existing content. I introduced a bug in the past that unexpectedly cleared sit targets, and that was my biggest regret in all of InWorldz and Halcyon. However, this PR does not make permanent changes to sit target offsets, only their perceived effect on the avatar, which persists only as long as the object is in a region running these code changes.
Furthermore, I have reviewed the changes and the general approach and technical detail seems sound. I am not in a position to verify the specific results, but I do not see any issues with the code changes, especially with the compatibility break being configurable in the halcyon.ini file on a per-region basis, and appear to be revertable should there be unexpected badness. Of course that INI setting means a piece of furniture with flawless sit target offsets in one region may have a different offset if rezzed in another region. I am not sure I would proceed if I was setting policy, this is a tough one, but I am no longer the gatekeeper for Halcyon or and a code review isn't for setting policy; I don't see any technical errors in these changes, and there are many trade-offs to be considered when deciding policy here. One consideration is the amount of content affected, today, vs potentially in the future. If such a change is to be made, the sooner the better. At any rate, I approve the code changes and leave the decision to merge as-is, or with further tweaks, up to @kf6kjg in this case.
An option is left to switch into the legacy mode for grids who wish to not break content. This means that this setting can be set per-region, which allows for a range of possibilities. The choice to default to SL-compat mode was made to facilitate new grids using this codebase: most scripts will be coming from SecondLife and it's really very annoying to have to fix them up - assuming the importer even knows how. BREAKING CHANGE: This changes an established behavior in the world, causing all Halcyon-specific sit script helpers to break, but allowing the ones coded for SL to work.
Code currently handles three types of sit target math: SecondLife, Legacy, and None. This just makes that more obvious and allows me to do my next commit cleanly.
This now matches SL's response to the same inputs as verified by reviewing the Alchemy Message Log response after setting up identical tests in both grids.
This PR changes the default legacy sit target offset system to one that seems to me to match SL much more accurately than the previous system.
A new INI option has been added to the sample INI, defaulting to the new mode to help with new grids and personal test grids where SL compatibility is likely to be higher priority than InWorldz compatibility. However, changing it to "Legacy" will restore the offsets used in InWorldz and every other Halcyon-based grid up until now.
I'm requesting that this not just be code reviewed, but actually heavily tested in A-B comparisons between SL and this code in SL-compat mode, as well as between the previous version of Halcyon and this code in Legacy mode.