PhysX requires all of its actors to have cooked mesh data. This cooked
data is unfortunately not compatible with other versions of PhysX outside
of the minor branch. The format is also largely unknown. Therefore, it is
relevant to allow CWE prps to include an engine agnostic physical format
to reduce our dependencies on proprietary libraries.
All PhysX blobs thankfully begin with the magic string NXS\x01, so we now
abuse that by adding our own format that begins with the magic string
HSP\x01. These blobs are cooked on the fly while already cooked blobs are
passed directly on to PhysX.
Original commit: 392c5f5cad
author = "Adam Johnson <AdamJohnso@gmail.com>
This also allows for future expansion of new hash techniques to be added, of course the more hash techniques added the more delay at login for the lowest on the totem pole.
I have tested this against the MOULa shard that uses SHA-0 and it works, there is a slight flash of the "Connecting dialog" as it re-tries sending the login but if the user saves the password, there is no flash and no delay.
Don't crash the launcher when the HTTP request for getting the server status message fails
This should fix the crash in UruLauncher.exe after starting UruExplorer.exe, reported by Treehugger at http://forums.openuru.org/viewtopic.php?p=8976#p8976 . It is the same issue as addressed in pull request #31 for the login dialog.
Untested because testing it is hard when the launcher patches itself out.
Let ptVault.setAgePublic accept ptVaultAgeInfoNode in addition to ptAgeInfoStruct
In this case it now also works for non-owners of the age. Previously it only worked for owners because the ageInfoStruct does not contain the vault node ID, so it needed to be looked up somewhere, and that was in the AgesIOwnFolder.
Prerequisite for hood auto-bump (MOULSCRIPT-ou PR #22).
From H-uru/Plasma#461.
Shadowed Chat and Player List Text
This implements the (existing but unimplemented) plDynamicTextMap::kFontShadowed flag, making the text of the mini KI (player list and chat) better readable on light and patterned backgrounds.
For best results, an additional Python change is recommended: MOULSCRIPT-ou PR #23.
From H-uru/Plasma#392.
Fix for forgotten logins when removable media attached.
Incorporated suggestions from PR #32 which this replaces. Moved CloseHandle as suggested.
Addresses JIRA CWE-37 Corrects incorrect assignment of drive letter to the drive actually being interrogated and ignores removable drive types such as CD/DVD and USB Flash and HDs.
Alternative solution that moves login credentials to the registry is being prepared by Deledrius - H-uru/Plasma PR#448 may be a better long term fix - I'm simply offering what I have.
Don't crash when the HTTP request for getting the server status message fails
This fixes the crash that keeps Windows 7 users out of the game when support.cyanworlds.com is down, reported with some regularity e.g. at http://mystonline.com/forums/viewtopic.php?f=40&t=27352 .
Apparently on Windows 7, unlike on Windows XP and contrary to its documentation, WinHttpReadData() does not zero its lpdwNumberOfBytesRead argument when called with an invalid request, so the lack of error checking here bites.
Fix stuck-in-intro-cave bug
This reintroduces the plBinkPlayer stub removed in 8a1346b in order to fix the bug where a new player is stuck in the intro cave with the rotating wall until it occurs to them to press the esc key.
I have not spent much effort on checking that this is the correct and minimal change but it appears to work for me.
This is a quick fix, the definitive solution will be to port VP9/Opus support from https://github.com/H-uru/Plasma/pull/458.
and reenable as much USE_BINK_SDK stuff as empirically needed to get the Yeesha intro movie cave to disappear on its own, as before merging Cyan's Build 918.
Not the cleanest way, but I'm trying to minimize effort spent on this until we can get the proper solution, VP9 video support, from https://github.com/H-uru/Plasma/pull/458 .
In this case it now also works for non-owners of the age. Previously it only worked for owners because the ageInfoStruct does not contain the vault node ID, so it needed to be looked up somewhere, and that was in the AgesIOwnFolder.
Also, the text of the faded-out player list is re-rendered with alpha == 0 every time the mouse enters its area, do a little less needless work in that case.
Previous revision didn't work, many controls retained their shadows because they never got the new flags from the color scheme and put them into the dynamic text map. I haven't checked if any more of the many control classes are affected, but those that we need in the KI right now are covered.
The fix (adding adjustment of fRenderInfo.fDestPtr) made kRenderJustXForceLeft behave as intended (left-aligning the edge of the bitmap rather than the side bearing of the first character) but cuts off shadows in some places (e.g. at the left edges of "BUDDIES" and "NEIGHBORS" in the mini KI). To ensure enough space for the shadow, and considering that all content was developed and visually optimized with the bug in place, it seems better to preserve the buggy behavior and make kRenderJustXForceLeft work exactly like kRenderJustXLeft.
Should work for Cyan too because plClient uses the same libraries.
I wonder what the purpose of the Release_Patcher configuration is and whether we should be using that one, which already has all this stuff (with slight differences).
- Remove plCyDebug and NetDiag which we don't have (from ef365800375c)
- Remove pfCCR which we no longer have (since 791583dea277)
- Add plUruLauncher and plClientPatcher (from ef365800375c)
- Add plFileEncrypt, plFileSecure, plPythonPack (from f3497c6d7f6d)
I also took the liberty of restoring the post-build copy step for plFileEncrypt and plFileSecure. If Cyan doesn't want that, we can probably put it in a separate project that is only part of AllClient-ou.sln but not AllClient.sln.
- plCCRMgr.h which is still needed by plAvatarMgr.cpp (plCCRError only - if there is more in this file at Cyan, that definition should be split out into a separate header)
- Stubs for pyCCRMgr{|Glue|Glue2}.cpp which are still part of the pfPython project as well as pfCCRConsoleCommands.cpp which is still part of the pfConsole project. This is under the assumption that these files still exist with nontrivial contents at Cyan - if not, they could just be removed from the projects. Requires adjustment by Cyan to build with PLASMA_CCR_RELEASE.
- Put more missing includes and calls under #ifdef PLASMA_CCR_RELEASE
Those who have the EAX SDK should indicate this on the command line by adding /DEAX_SDK_AVAILABLE to environment variable CL.
Trying to keep common project files and configurations between OU and Cyan for now, we'll see how that goes.
Too many changes to describe in detail, see commits on parent branch build918chunks.
Some of them break buildability outside of Cyan, to be fixed in subsequent commits.
Merge conflicts in some .sln and .vcproj files all resolved by taking the Cyan version.
MarkD: My thought was for the long term was to put most of the differences in the project and solution configurations, so there would be less differences in the sources. EAX is a good example - I put the #define for EAX_SDK_AVAILABLE in the projects that used it with the thinking that the fans would create new projects that would not have EAX_SDK_AVAILABLE and would create and use a different configuration in the AllClient solution. Cyan would use the "Release" config and the fans use something like "Release-ou" to build with. But maybe there are just too many differences.
MarkD: We felt that the fan de-BINKing did not go far enough.
CW: I suspect (haven't tested yet) that it's the cause of the bug that we see on MOULa but did not on Minkata where the rotating wall behind the missing Yeesha intro video stays indefinitely, with no obvious way out for the player, until it occurs to them to use the ESC key
MarkD: Ah. I think you are right. An oversight that can be easily corrected - maybe in the python code so that Ian can see the rotating wall for a few seconds and then auto continue on.