diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71d41e1b8b..924aa9108b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: eigen: NO - profile: macos-eigen-coverage-unity-xcode - os: macOS-latest + os: macOS-10.15 config: Coverage unity: YES generator: Xcode @@ -50,7 +50,7 @@ jobs: eigen: YES - profile: macos-nometa-standard-makefile - os: macOS-latest + os: macOS-10.15 config: Standard unity: NO generator: Unix Makefiles @@ -92,10 +92,10 @@ jobs: - name: Install dependencies (macOS) if: runner.os == 'macOS' run: | - curl -O https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-mac.tar.gz - tar -xf panda3d-1.10.9-tools-mac.tar.gz - mv panda3d-1.10.9/thirdparty thirdparty - rmdir panda3d-1.10.9 + curl -O https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-mac.tar.gz + tar -xf panda3d-1.10.10-tools-mac.tar.gz + mv panda3d-1.10.10/thirdparty thirdparty + rmdir panda3d-1.10.10 # Temporary hack so that pzip can run, since we are about to remove Cg anyway. install_name_tool -id "$(pwd)/thirdparty/darwin-libs-a/nvidiacg/lib/libCg.dylib" thirdparty/darwin-libs-a/nvidiacg/lib/libCg.dylib @@ -124,16 +124,16 @@ jobs: uses: actions/cache@v1 with: path: thirdparty - key: ci-cmake-${{ runner.OS }}-thirdparty-v1.10.9-r1 + key: ci-cmake-${{ runner.OS }}-thirdparty-v1.10.10-r1 - name: Install dependencies (Windows) if: runner.os == 'Windows' shell: powershell run: | if (!(Test-Path thirdparty/win-libs-vc14-x64)) { $wc = New-Object System.Net.WebClient - $wc.DownloadFile("https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-win64.zip", "thirdparty-tools.zip") + $wc.DownloadFile("https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-win64.zip", "thirdparty-tools.zip") Expand-Archive -Path thirdparty-tools.zip - Move-Item -Path thirdparty-tools/panda3d-1.10.9/thirdparty -Destination . + Move-Item -Path thirdparty-tools/panda3d-1.10.10/thirdparty -Destination . } - name: ccache (non-Windows) @@ -186,7 +186,7 @@ jobs: - name: Setup Python (Python 3.6) if: contains(matrix.python, 'YES') - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.6 - name: Configure (Python 3.6) @@ -218,7 +218,7 @@ jobs: - name: Setup Python (Python 3.7) if: contains(matrix.python, 'YES') - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.7 - name: Configure (Python 3.7) @@ -250,7 +250,7 @@ jobs: - name: Setup Python (Python 3.8) if: contains(matrix.python, 'YES') - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.8 - name: Configure (Python 3.8) @@ -282,7 +282,7 @@ jobs: - name: Setup Python (Python 3.9) if: contains(matrix.python, 'YES') - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.9 - name: Configure (Python 3.9) @@ -333,7 +333,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')" strategy: matrix: - os: [ubuntu-18.04, windows-2016, macOS-latest] + os: [ubuntu-18.04, windows-2016, macOS-10.15] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 @@ -347,19 +347,19 @@ jobs: shell: powershell run: | $wc = New-Object System.Net.WebClient - $wc.DownloadFile("https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-win64.zip", "thirdparty-tools.zip") + $wc.DownloadFile("https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-win64.zip", "thirdparty-tools.zip") Expand-Archive -Path thirdparty-tools.zip - Move-Item -Path thirdparty-tools/panda3d-1.10.9/thirdparty -Destination . + Move-Item -Path thirdparty-tools/panda3d-1.10.10/thirdparty -Destination . - name: Get thirdparty packages (macOS) if: runner.os == 'macOS' run: | - curl -O https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-mac.tar.gz - tar -xf panda3d-1.10.9-tools-mac.tar.gz - mv panda3d-1.10.9/thirdparty thirdparty - rmdir panda3d-1.10.9 + curl -O https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-mac.tar.gz + tar -xf panda3d-1.10.10-tools-mac.tar.gz + mv panda3d-1.10.10/thirdparty thirdparty + rmdir panda3d-1.10.10 (cd thirdparty/darwin-libs-a && rm -rf rocket) - name: Set up Python 3.9 - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.9 - name: Build Python 3.9 @@ -372,7 +372,7 @@ jobs: python -m pip install pytest PYTHONPATH=built LD_LIBRARY_PATH=built/lib DYLD_LIBRARY_PATH=built/lib python -m pytest - name: Set up Python 3.8 - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.8 - name: Build Python 3.8 @@ -385,7 +385,7 @@ jobs: python -m pip install pytest PYTHONPATH=built LD_LIBRARY_PATH=built/lib DYLD_LIBRARY_PATH=built/lib python -m pytest - name: Set up Python 3.7 - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.7 - name: Build Python 3.7 diff --git a/README.md b/README.md index c59d43258b..c12125fd24 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ Building Panda3D Windows ------- -You can build Panda3D with the Microsoft Visual C++ 2015, 2017 or 2019 compiler, -which can be downloaded for free from the [Visual Studio site](https://visualstudio.microsoft.com/downloads/). +You can build Panda3D with the Microsoft Visual C++ 2015, 2017, 2019 or 2022 +compiler, which can be downloaded for free from the [Visual Studio site](https://visualstudio.microsoft.com/downloads/). You will also need to install the [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk), and if you intend to target Windows Vista, you will also need the [Windows 8.1 SDK](https://go.microsoft.com/fwlink/p/?LinkId=323507). @@ -69,12 +69,12 @@ building them from source. After acquiring these dependencies, you can build Panda3D from the command prompt using the following command. Change the `--msvc-version` option based -on your version of Visual C++; 2019 is 14.2, 2017 is 14.1, and 2015 is 14. -Remove the `--windows-sdk=10` option if you need to support Windows Vista, -which requires the Windows 8.1 SDK. +on your version of Visual C++; 2022 is 14.3, 2019 is 14.2, 2017 is 14.1, and +2015 is 14. Remove the `--windows-sdk=10` option if you need to support +Windows Vista, which requires the Windows 8.1 SDK. ```bash -makepanda\makepanda.bat --everything --installer --msvc-version=14.2 --windows-sdk=10 --no-eigen --threads=2 +makepanda\makepanda.bat --everything --installer --msvc-version=14.3 --windows-sdk=10 --no-eigen --threads=2 ``` When the build succeeds, it will produce an .exe file that you can use to diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 1ca21d97de..71dab3f7d7 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -153,7 +153,7 @@ def usage(problem): print(" --everything (enable every third-party lib)") print(" --directx-sdk=X (specify version of DirectX SDK to use: jun2010, aug2009)") print(" --windows-sdk=X (specify Windows SDK version, eg. 7.1, 8.1 or 10. Default is 8.1)") - print(" --msvc-version=X (specify Visual C++ version, eg. 10, 11, 12, 14, 14.1, 14.2. Default is 14)") + print(" --msvc-version=X (specify Visual C++ version, eg. 10, 11, 12, 14, 14.1, 14.2, 14.3. Default is 14)") print(" --use-icl (experimental setting to use an intel compiler instead of MSVC on Windows)") print("") print("The simplest way to compile panda is to just type:") @@ -1043,7 +1043,7 @@ if (COMPILER=="GCC"): LibName(pkg, "-lDependEngine") LibName(pkg, "-lCommandEngine") LibName(pkg, "-lFoundation") - if pkg != "MAYA2020": + if pkg not in ("MAYA2020", "MAYA2022"): LibName(pkg, "-lIMFbase") if GetTarget() != 'darwin': LibName(pkg, "-lOpenMayalib") diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index ef34421722..9680c1c083 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -80,6 +80,7 @@ MSVCVERSIONINFO = { (14,0): {"vsversion":(14,0), "vsname":"Visual Studio 2015"}, (14,1): {"vsversion":(15,0), "vsname":"Visual Studio 2017"}, (14,2): {"vsversion":(16,0), "vsname":"Visual Studio 2019"}, + (14,3): {"vsversion":(17,0), "vsname":"Visual Studio 2022"}, } ######################################################################## @@ -108,6 +109,7 @@ MAYAVERSIONINFO = [("MAYA6", "6.0"), ("MAYA2018","2018"), ("MAYA2019","2019"), ("MAYA2020","2020"), + ("MAYA2022","2022"), ] MAXVERSIONINFO = [("MAX6", "SOFTWARE\\Autodesk\\3DSMAX\\6.0", "installdir", "maxsdk\\cssdk\\include"), @@ -2402,7 +2404,7 @@ def SdkLocateMacOSX(archs = []): # Prefer pre-10.14 for now so that we can keep building FMOD. sdk_versions += ["10.13", "10.12", "10.11", "10.10", "10.9"] - sdk_versions += ["11.1", "11.0"] + sdk_versions += ["11.3", "11.1", "11.0"] if 'arm64' not in archs: sdk_versions += ["10.15", "10.14"] diff --git a/panda/src/device/winRawInputDevice.cxx b/panda/src/device/winRawInputDevice.cxx index 96c9b1adbe..1370561852 100644 --- a/panda/src/device/winRawInputDevice.cxx +++ b/panda/src/device/winRawInputDevice.cxx @@ -663,7 +663,15 @@ process_report(PCHAR ptr, size_t size) { if (status == HIDP_STATUS_SUCCESS) { for (ULONG di = 0; di < count; ++di) { if (data[di].DataIndex != _hat_data_index) { - nassertd(data[di].DataIndex < _indices.size()) continue; + if (data[di].DataIndex >= _indices.size()) { + if (device_cat.is_debug()) { + device_cat.debug() + << "Ignoring out of range DataIndex " << data[di].DataIndex + << "from raw device " << _path << "\n"; + } + continue; + } + const Index &idx = _indices[data[di].DataIndex]; if (idx._axis >= 0) { if (idx._signed) { diff --git a/panda/src/display/pythonGraphicsWindowProc.h b/panda/src/display/pythonGraphicsWindowProc.h index 902cb83fb7..0f5128b18a 100644 --- a/panda/src/display/pythonGraphicsWindowProc.h +++ b/panda/src/display/pythonGraphicsWindowProc.h @@ -21,7 +21,7 @@ #ifdef HAVE_PYTHON /** - * Extends GraphicsWindowProc to provde callback functionality to a python + * Extends GraphicsWindowProc to provide callback functionality to a Python * program. */ class PythonGraphicsWindowProc: public GraphicsWindowProc, diff --git a/panda/src/display/windowProperties.h b/panda/src/display/windowProperties.h index a7e808780a..f998b87ae6 100644 --- a/panda/src/display/windowProperties.h +++ b/panda/src/display/windowProperties.h @@ -235,7 +235,7 @@ private: S_maximized = 0x10000, }; - // This bitmask represents the truefalse settings for various boolean flags + // This bitmask represents the true/false settings for various boolean flags // (assuming the corresponding S_* bit has been set, above). enum Flags { F_undecorated = S_undecorated, diff --git a/panda/src/gobj/lens.cxx b/panda/src/gobj/lens.cxx index 6fabc0cf8f..989e501806 100644 --- a/panda/src/gobj/lens.cxx +++ b/panda/src/gobj/lens.cxx @@ -351,7 +351,7 @@ clear_custom_film_mat() { * nearly perpendicular to the center of the frustum as possible. Without * this bit, the orientation camera plane is defined by position of the four * points (which should all be coplanar). With this bit, the camera plane is - * arbitarary, and may be chosen so that the four points do not themselves lie + * arbitrary, and may be chosen so that the four points do not themselves lie * in the camera plane (but the points will still be within the frustum). * * FC_off_axis - This allows the resulting frustum to be off-axis to get the diff --git a/panda/src/gobj/texturePeeker.cxx b/panda/src/gobj/texturePeeker.cxx index 97da4edec2..b531e04bff 100644 --- a/panda/src/gobj/texturePeeker.cxx +++ b/panda/src/gobj/texturePeeker.cxx @@ -361,7 +361,7 @@ lookup(LColor &color, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w) const { } /** - * Works like TexturePeeker::lookup(), but instead uv-coordinates integer + * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer * coordinates are used. */ void TexturePeeker:: @@ -372,7 +372,7 @@ fetch_pixel(LColor &color, int x, int y) const { } /** - * Works like TexturePeeker::lookup(), but instead uv-coordinates integer + * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer * coordinates are used. */ void TexturePeeker:: diff --git a/panda/src/putil/bamReader_ext.cxx b/panda/src/putil/bamReader_ext.cxx index a224a36037..99ec982d74 100644 --- a/panda/src/putil/bamReader_ext.cxx +++ b/panda/src/putil/bamReader_ext.cxx @@ -79,7 +79,7 @@ static TypedWritable *factory_callback(const FactoryParams ¶ms){ // If the Python pointer is the last reference to it, make sure that the // object isn't destroyed. We do this by calling unref(), which // decreases the reference count without destroying the object. - if (result->ob_refcnt <= 1) { + if (Py_REFCNT(result) <= 1) { ref_count->unref(); // Tell the Python wrapper object that it shouldn't try to delete the diff --git a/pandatool/src/mayaprogs/mayapath.cxx b/pandatool/src/mayaprogs/mayapath.cxx index c98e38243b..f8cd8bc1e9 100644 --- a/pandatool/src/mayaprogs/mayapath.cxx +++ b/pandatool/src/mayaprogs/mayapath.cxx @@ -108,6 +108,7 @@ struct MayaVerInfo maya_versions[] = { { "MAYA2018", "2018"}, { "MAYA2019", "2019"}, { "MAYA2020", "2020"}, + { "MAYA2022", "2022"}, { 0, 0 }, }; diff --git a/samples/asteroids/main.py b/samples/asteroids/main.py index 102a163012..4abe9be00f 100755 --- a/samples/asteroids/main.py +++ b/samples/asteroids/main.py @@ -24,6 +24,7 @@ from direct.showbase.ShowBase import ShowBase from direct.task.Task import Task from panda3d.core import TextNode, TransparencyAttrib from panda3d.core import LPoint3, LVector3 +from panda3d.core import SamplerState # Constants that will control the behavior of the game. It is good to # group constants like this so that they can be changed once without @@ -73,6 +74,8 @@ def loadObject(tex=None, pos=LPoint3(0, 0), depth=SPRITE_POS, scale=1, if tex: # Load and set the requested texture. tex = base.loader.loadTexture("textures/" + tex) + tex.setWrapU(SamplerState.WM_clamp) + tex.setWrapV(SamplerState.WM_clamp) obj.setTexture(tex, 1) return obj