Merge branch 'master' into astron-master
This commit is contained in:
commit
f102e7d60a
28
README.md
28
README.md
|
|
@ -29,8 +29,10 @@ need Microsoft Visual Studio to build Panda3D, though - the relevant compilers
|
|||
are included as part of the Windows 7.1 SDK.
|
||||
|
||||
You will also need to have the third-party dependency libraries available for
|
||||
the build scripts to use. These are available from here:
|
||||
https://www.panda3d.org/forums/viewtopic.php?f=9&t=16346
|
||||
the build scripts to use. These are available from one of these two URLs,
|
||||
depending on whether you are on a 32-bit or 64-bit system:
|
||||
https://www.panda3d.org/download/panda3d-1.9.0/panda3d-1.9.0-tools-win32.zip
|
||||
https://www.panda3d.org/download/panda3d-1.9.0/panda3d-1.9.0-tools-win64.zip
|
||||
|
||||
After acquiring these dependencies, you may simply build Panda3D from the
|
||||
command prompt using the following command:
|
||||
|
|
@ -81,3 +83,25 @@ your system. Careful: it is not easy to uninstall Panda3D in this way!
|
|||
```bash
|
||||
python2.7 makepanda/installpanda.py --prefix=/usr/local
|
||||
```
|
||||
|
||||
Mac OS X
|
||||
--------
|
||||
|
||||
On Mac OS X, all you need to compile Panda3D is a set of precompiled
|
||||
thirdparty packages, which can be acquired from here:
|
||||
https://www.panda3d.org/download/panda3d-1.9.0/panda3d-1.9.0-tools-mac.tar.gz
|
||||
|
||||
After placing the thirdparty directory inside the panda3d source directory,
|
||||
you may build Panda3D using a command like the following:
|
||||
|
||||
```bash
|
||||
python makepanda/makepanda.py --everything --installer
|
||||
```
|
||||
|
||||
In order to make a universal build, pass the --universal flag. You may also
|
||||
target a specific minimum Mac OS X version using the --osxtarget flag followed
|
||||
by the release number, eg. 10.6 or 10.7.
|
||||
|
||||
If the build was successful, makepanda will have generated a .dmg file in
|
||||
the source directory containing the installer. Simply open it and run the
|
||||
package file in order to install the SDK onto your system.
|
||||
|
|
|
|||
|
|
@ -203,6 +203,11 @@ def processType(handle, type):
|
|||
if docstring:
|
||||
print >>handle, docstring
|
||||
print >>handle, interrogate_type_enum_value_name(type, i_value), "=", interrogate_type_enum_value(type, i_value), ","
|
||||
|
||||
elif interrogate_type_is_typedef(type):
|
||||
wrapped_type = translated_type_name(interrogate_type_wrapped_type(type))
|
||||
print >>handle, "typedef %s %s;" % (wrapped_type, typename)
|
||||
return
|
||||
else:
|
||||
if interrogate_type_is_struct(type):
|
||||
classtype = "struct"
|
||||
|
|
@ -211,7 +216,7 @@ def processType(handle, type):
|
|||
elif interrogate_type_is_union(type):
|
||||
classtype = "union"
|
||||
else:
|
||||
print "I don't know what type %s is" % typename
|
||||
print "I don't know what type %s is" % interrogate_type_true_name(type)
|
||||
return
|
||||
|
||||
if len(derivations) > 0:
|
||||
|
|
|
|||
|
|
@ -107,14 +107,13 @@ def Dtool_PreloadDLL(module):
|
|||
# Dtool_FindModule to find our panda3d.core module. However, we
|
||||
# should be able to import it. To differentiate the old-style Panda
|
||||
# build (with .dll's) from the new-style Panda build (with .pyd's), we
|
||||
# first try to import libpandaexpress directly; if it succeeds we're
|
||||
# in an old-style build, and if it fails we must be in a new-style
|
||||
# build.
|
||||
# first try to import panda3d.core directly; if it succeeds we're in a
|
||||
# new-style build, and if it fails we must be in an old-style build.
|
||||
try:
|
||||
from panda3d.core import *
|
||||
except ImportError:
|
||||
Dtool_PreloadDLL("libpandaexpress")
|
||||
from libpandaexpress import *
|
||||
except ImportError:
|
||||
from panda3d.core import *
|
||||
|
||||
def Dtool_ObjectToDict(cls, name, obj):
|
||||
cls.DtoolClassDict[name] = obj;
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
|
@ -1119,14 +1119,19 @@ class Packager:
|
|||
# Skip this file.
|
||||
continue
|
||||
|
||||
origFilename = Filename(file.filename)
|
||||
|
||||
tempFile = Filename.temporary('', 'p3d_', '.txt')
|
||||
command = '/usr/bin/otool -arch all -L "%s" >"%s"' % (
|
||||
file.filename.toOsSpecific(),
|
||||
origFilename.toOsSpecific(),
|
||||
tempFile.toOsSpecific())
|
||||
if self.arch:
|
||||
arch = self.arch
|
||||
if arch == "amd64":
|
||||
arch = "x86_64"
|
||||
command = '/usr/bin/otool -arch %s -L "%s" >"%s"' % (
|
||||
self.arch,
|
||||
file.filename.toOsSpecific(),
|
||||
arch,
|
||||
origFilename.toOsSpecific(),
|
||||
tempFile.toOsSpecific())
|
||||
exitStatus = os.system(command)
|
||||
if exitStatus != 0:
|
||||
|
|
@ -1137,13 +1142,13 @@ class Packager:
|
|||
filenames = self.__parseDependenciesOSX(tempFile)
|
||||
tempFile.unlink()
|
||||
if filenames is None:
|
||||
self.notify.warning("Unable to determine dependencies from %s" % (file.filename))
|
||||
self.notify.warning("Unable to determine dependencies from %s" % (origFilename))
|
||||
continue
|
||||
|
||||
# Attempt to resolve the dependent filename relative
|
||||
# to the original filename, before we resolve it along
|
||||
# the PATH.
|
||||
path = DSearchPath(Filename(file.filename.getDirname()))
|
||||
path = DSearchPath(Filename(origFilename.getDirname()))
|
||||
|
||||
# Find the dependencies that are referencing a framework
|
||||
framework_deps = []
|
||||
|
|
@ -1156,7 +1161,10 @@ class Packager:
|
|||
self.__alterFrameworkDependencies(file, framework_deps)
|
||||
|
||||
for filename in filenames:
|
||||
if '.framework/' in filename:
|
||||
if '@loader_path' in filename:
|
||||
filename = filename.replace('@loader_path', origFilename.getDirname())
|
||||
|
||||
if False and '.framework/' in filename:
|
||||
# It references a framework, and besides the fact
|
||||
# that those often contain absolute paths, they
|
||||
# aren't commonly on the library path either.
|
||||
|
|
@ -2082,6 +2090,10 @@ class Packager:
|
|||
# particular architecture, use lipo to strip out the
|
||||
# part of the file for that architecture.
|
||||
|
||||
arch = self.arch
|
||||
if arch == "amd64":
|
||||
arch = "x86_64"
|
||||
|
||||
# First, we need to verify that it is in fact a
|
||||
# universal binary.
|
||||
tfile = Filename.temporary('', 'p3d_')
|
||||
|
|
@ -2107,25 +2119,24 @@ class Packager:
|
|||
arches = lipoData.rsplit(':', 1)[1]
|
||||
arches = arches.split()
|
||||
|
||||
if arches == [self.arch]:
|
||||
if arches == [arch]:
|
||||
# The file only contains the one architecture that
|
||||
# we want anyway.
|
||||
file.filename.setBinary()
|
||||
self.multifile.addSubfile(file.newName, file.filename, compressionLevel)
|
||||
return True
|
||||
|
||||
if self.arch not in arches:
|
||||
if arch not in arches:
|
||||
# The file doesn't support the architecture that we
|
||||
# want at all. Omit the file.
|
||||
self.notify.warning("%s doesn't support architecture %s" % (
|
||||
file.filename, self.arch))
|
||||
return False
|
||||
|
||||
|
||||
# The file contains multiple architectures. Get
|
||||
# out just the one we want.
|
||||
command = '/usr/bin/lipo -thin %s -output "%s" "%s"' % (
|
||||
self.arch, tfile.toOsSpecific(),
|
||||
arch, tfile.toOsSpecific(),
|
||||
file.filename.toOsSpecific())
|
||||
exitStatus = os.system(command)
|
||||
if exitStatus != 0:
|
||||
|
|
@ -2389,7 +2400,8 @@ class Packager:
|
|||
'shell32.dll', 'ntdll.dll', 'ws2help.dll', 'rpcrt4.dll',
|
||||
'imm32.dll', 'ddraw.dll', 'shlwapi.dll', 'secur32.dll',
|
||||
'dciman32.dll', 'comdlg32.dll', 'comctl32.dll', 'ole32.dll',
|
||||
'oleaut32.dll', 'gdiplus.dll', 'winmm.dll',
|
||||
'oleaut32.dll', 'gdiplus.dll', 'winmm.dll', 'iphlpapi.dll',
|
||||
'msvcrt.dll', 'kernelbase.dll', 'msimg32.dll', 'msacm32.dll',
|
||||
|
||||
'libsystem.b.dylib', 'libmathcommon.a.dylib', 'libmx.a.dylib',
|
||||
'libstdc++.6.dylib', 'libobjc.a.dylib', 'libauto.dylib',
|
||||
|
|
@ -2399,6 +2411,7 @@ class Packager:
|
|||
# filenames.
|
||||
self.excludeSystemGlobs = [
|
||||
GlobPattern('d3dx9_*.dll'),
|
||||
GlobPattern('api-ms-win-*.dll'),
|
||||
|
||||
GlobPattern('libGL.so*'),
|
||||
GlobPattern('libGLU.so*'),
|
||||
|
|
|
|||
|
|
@ -319,7 +319,7 @@ elif deploy_mode == 'installer':
|
|||
del i
|
||||
|
||||
elif deploy_mode == 'html':
|
||||
w, h = tokens.get("width", 640), tokens.get("height", 480)
|
||||
w, h = tokens.get("width", 800), tokens.get("height", 600)
|
||||
if "data" not in tokens:
|
||||
tokens["data"] = appFilename.getBasename()
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ Options:
|
|||
each supported architecture). On other platforms, this option
|
||||
does nothing. This is therefore safe to apply in all cases, if
|
||||
you wish to take advantage of universal binaries. This is
|
||||
equivalent to "-P osx_ppc -P osx_i386" on Mac platforms.
|
||||
equivalent to "-P osx_i386 -P osx_amd64" on Mac platforms.
|
||||
|
||||
-P platform
|
||||
Specify the platform to masquerade as. The default is whatever
|
||||
|
|
@ -215,8 +215,7 @@ if universalBinaries:
|
|||
print '\nYou may not specify both -u and -P.\n'
|
||||
sys.exit(1)
|
||||
if PandaSystem.getPlatform().startswith('osx_'):
|
||||
# Maybe soon we'll add osx_x86_64 to this default list.
|
||||
platforms = ['osx_i386', 'osx_ppc']
|
||||
platforms = ['osx_i386', 'osx_amd64']
|
||||
|
||||
if not platforms:
|
||||
platforms = [PandaSystem.getPlatform()]
|
||||
|
|
|
|||
|
|
@ -157,6 +157,10 @@ AuthDialog(const string &cert_filename, const string &cert_dir) :
|
|||
_stack = NULL;
|
||||
_verify_result = -1;
|
||||
|
||||
// Center the window on the screen.
|
||||
position((Fl::w() - w()) / 2, (Fl::h() - h()) / 2);
|
||||
set_modal();
|
||||
|
||||
read_cert_file(cert_filename);
|
||||
get_friendly_name();
|
||||
verify_cert();
|
||||
|
|
@ -583,6 +587,10 @@ ViewCertDialog(AuthDialog *auth_dialog, X509 *cert) :
|
|||
_auth_dialog(auth_dialog),
|
||||
_cert(cert)
|
||||
{
|
||||
// Center the window on the screen.
|
||||
position((Fl::w() - w()) / 2, (Fl::h() - h()) / 2);
|
||||
set_modal();
|
||||
|
||||
layout();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@
|
|||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static ofstream logfile;
|
||||
|
|
@ -230,9 +234,29 @@ initialize(int api_version, const string &contents_filename,
|
|||
_supported_platforms.push_back("win_i386");
|
||||
_supported_platforms.push_back("win32");
|
||||
}
|
||||
#elif defined(__APPLE__)
|
||||
if (_platform == "osx_amd64") {
|
||||
_supported_platforms.push_back("osx_amd64");
|
||||
_supported_platforms.push_back("osx_i386");
|
||||
|
||||
} else if (_platform == "osx_i386") {
|
||||
// This is a 32-bit process, but determine if the underlying OS
|
||||
// supports 64-bit.
|
||||
|
||||
int mib[2] = { CTL_HW, HW_MACHINE };
|
||||
char machine[512];
|
||||
size_t len = 511;
|
||||
if (sysctl(mib, 2, (void *)machine, &len, NULL, 0) == 0) {
|
||||
if (strcmp(machine, "x86_64") == 0) {
|
||||
_supported_platforms.push_back("osx_amd64");
|
||||
}
|
||||
}
|
||||
|
||||
_supported_platforms.push_back("osx_i386");
|
||||
}
|
||||
#endif // _WIN32
|
||||
|
||||
// TODO: OSX, Linux multiplatform support. Just add the
|
||||
// TODO: Linux multiplatform support. Just add the
|
||||
// appropriate platform strings to _supported_platforms.
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -461,7 +461,10 @@ def makeInstaller():
|
|||
|
||||
infoFilename = None
|
||||
descriptionFilename = None
|
||||
packagemaker = "/Developer/usr/bin/packagemaker"
|
||||
packagemaker = "/Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker"
|
||||
if not os.path.exists(packagemaker):
|
||||
packagemaker = "/Developer/usr/bin/packagemaker"
|
||||
|
||||
if os.path.exists(packagemaker):
|
||||
# PackageMaker 3.0 or better, e.g. OSX 10.5.
|
||||
CMD = packagemaker
|
||||
|
|
@ -469,7 +472,7 @@ def makeInstaller():
|
|||
CMD += ' --version "%s"' % options.version
|
||||
CMD += ' --title "%s"' % options.long_name
|
||||
CMD += ' --out "%s"' % (pkgname)
|
||||
CMD += ' --target 10.4' # The earliest version of OSX supported by Panda
|
||||
CMD += ' --target 10.5' # The earliest version of OSX supported by Panda
|
||||
CMD += ' --domain system'
|
||||
CMD += ' --root "%s"' % tmproot
|
||||
CMD += ' --resources "%s"' % tmpresdir
|
||||
|
|
@ -520,7 +523,11 @@ def makeInstaller():
|
|||
|
||||
# Pack the .pkg into a .dmg
|
||||
if not os.path.exists(tmproot): os.makedirs(tmproot)
|
||||
shutil.copytree(pkgname, os.path.join(tmproot, pkgname))
|
||||
if os.path.isdir(pkgname):
|
||||
shutil.copytree(pkgname, os.path.join(tmproot, pkgname))
|
||||
else:
|
||||
shutil.copyfile(pkgname, os.path.join(tmproot, pkgname))
|
||||
|
||||
tmpdmg = tempfile.mktemp('', 'p3d-setup') + ".dmg"
|
||||
CMD = 'hdiutil create "%s" -srcfolder "%s"' % (tmpdmg, tmproot)
|
||||
print ""
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
|
|||
if (pluginFuncs->size == 0) {
|
||||
pluginFuncs->size = sizeof(*pluginFuncs);
|
||||
}
|
||||
if (pluginFuncs->size < sizeof(*pluginFuncs)) {
|
||||
if (pluginFuncs->size < offsetof(NPPluginFuncs, gotfocus)) {
|
||||
nout << "Invalid NPPPluginFuncs size\n";
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,8 +226,8 @@ run_command_line(int argc, char *argv[]) {
|
|||
// The user asked for an embedded window. Create a toplevel
|
||||
// window to be its parent, of the requested size.
|
||||
if (_win_width == 0 && _win_height == 0) {
|
||||
_win_width = 640;
|
||||
_win_height = 480;
|
||||
_win_width = 800;
|
||||
_win_height = 600;
|
||||
}
|
||||
|
||||
make_parent_window();
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
|
@ -62,8 +62,8 @@ Panda3DBase(bool console_environment) {
|
|||
|
||||
_win_x = -1;
|
||||
_win_y = -1;
|
||||
_win_width = 640;
|
||||
_win_height = 480;
|
||||
_win_width = 800;
|
||||
_win_height = 600;
|
||||
_got_win_size = false;
|
||||
|
||||
_exit_with_last_instance = true;
|
||||
|
|
|
|||
|
|
@ -1429,11 +1429,12 @@ dtoolSuperBase = None
|
|||
|
||||
def _getDtoolSuperBase():
|
||||
global dtoolSuperBase
|
||||
from panda3d.core import PandaNode
|
||||
dtoolSuperBase = PandaNode('').__class__.__bases__[0].__bases__[0].__bases__[0]
|
||||
from panda3d.core import TypedObject
|
||||
dtoolSuperBase = TypedObject.__bases__[0]
|
||||
assert repr(dtoolSuperBase) == "<type 'libdtoolconfig.DTOOL_SUPER_BASE111'>" \
|
||||
or repr(dtoolSuperBase) == "<type 'libdtoolconfig.DTOOL_SUPPER_BASE111'>" \
|
||||
or repr(dtoolSuperBase) == "<type 'dtoolconfig.DTOOL_SUPER_BASE111'>"
|
||||
or repr(dtoolSuperBase) == "<type 'dtoolconfig.DTOOL_SUPER_BASE111'>" \
|
||||
or repr(dtoolSuperBase) == "<type 'dtoolconfig.DTOOL_SUPER_BASE'>"
|
||||
|
||||
safeReprNotify = None
|
||||
|
||||
|
|
|
|||
|
|
@ -143,8 +143,8 @@ class CompilationEnvironment:
|
|||
self.arch = '-arch i386'
|
||||
elif proc == 'ppc':
|
||||
self.arch = '-arch ppc'
|
||||
elif proc == 'x86_64':
|
||||
self.arch = '-arch x86_x64'
|
||||
elif proc == 'amd64':
|
||||
self.arch = '-arch x86_64'
|
||||
self.compileObj = "gcc -fPIC -c %(arch)s -o %(basename)s.o -O2 -I%(pythonIPath)s %(filename)s"
|
||||
self.linkExe = "gcc %(arch)s -o %(basename)s %(basename)s.o -framework Python"
|
||||
self.linkDll = "gcc %(arch)s -undefined dynamic_lookup -bundle -o %(basename)s.so %(basename)s.o"
|
||||
|
|
|
|||
111
doc/ReleaseNotes
111
doc/ReleaseNotes
|
|
@ -1,3 +1,114 @@
|
|||
------------------------ RELEASE 1.9.0 ------------------------
|
||||
|
||||
This is a major release with many exciting new features!
|
||||
Beware of bugs.
|
||||
|
||||
The list below contains a subset of the changes introduced:
|
||||
|
||||
* We now offer 64-bit Windows and Mac OS X builds.
|
||||
* Switch to MSVC 2010; no more assembly manifests.
|
||||
* Cocoa port for better Mac OS X support, esp. newer versions.
|
||||
* We now compile the Python modules into panda3d/*.pyd modules;
|
||||
no more imp.load_dynamic hackery needed.
|
||||
* Support for GPU profiling in OpenGL, see pstats-gpu-timing
|
||||
* sRGB framebuffers, see framebuffer-srgb
|
||||
* sRGB texture support, see Texture::F_srgb et al.
|
||||
* Integer vector support, including passing to shaders
|
||||
* Native .ogg vorbis and .wav loader (does not require ffmpeg)
|
||||
* FFmpeg support is a separate plug-in module now, libp3ffmpeg.
|
||||
* Sample programs are now part of the source code repository
|
||||
* Can be built with Python 3 (highly experimental)
|
||||
* Improvements to Windows installer
|
||||
* M_filled_wireframe rendering mode
|
||||
* Support specifying sampler state separate from textures
|
||||
* Support for bindless texture clearing
|
||||
* Texture LOD bias and min/max LOD settings
|
||||
* Framebuffer properties allows separate red/green/blue bits
|
||||
* Explicit float color and float depth specification in fbprops
|
||||
* Coverage samples settable via FrameBufferProperties
|
||||
* Stereo buffer implementation in OpenGL via FBOs
|
||||
* Support enumeration of pixel formats in WebcamVideo
|
||||
* Frame rate meter can be configured to show milliseconds
|
||||
* Changes to improve font crispness with default settings
|
||||
* Fix assertion error when using more than one GraphicsEngine
|
||||
* raw-w, raw-a, etc. keyboard events for layout-independent input
|
||||
* Allow querying active keyboard layout via win.get_keyboard_map()
|
||||
* Distinguish between lmeta and rmeta keys on Mac OS X
|
||||
* Floating-point image manipulation API, support float tiffs
|
||||
* Various new 16-bit and 32-bit and int texture formats
|
||||
* Man pages are now available for the majority of utilities
|
||||
|
||||
Pipeline:
|
||||
* Fix bugs with <Collide> group transformations in .egg
|
||||
* Don't create unnecessary intermediate node when loading .egg
|
||||
* bam2egg supports materials, and correctly converts animations
|
||||
* dae2egg has some skeletal animation support
|
||||
* Support Maya versions up to 2015
|
||||
|
||||
OpenGL renderer changes:
|
||||
* Error checking is now OFF by default for performance reasons,
|
||||
set gl-check-errors or gl-debug to true to enable.
|
||||
* GL 4.2 shader_image_load_store support (incl. multi-bind)
|
||||
* Layered render-to-texture (using geometry shaders)
|
||||
* Seamless cube maps (on by default), see gl-cube-map-seamless
|
||||
* Added gl-debug for improved debug output support
|
||||
* Added GL object labels when gl-debug is enabled
|
||||
* gl-dump-compiled-shaders can be used to dump program binaries
|
||||
* Direct3D-style NT_packed_dabc vertex arrays now directly supported
|
||||
* Native rendering of line strips, using primitive restart
|
||||
* Immutable texture storage support (disabled by default)
|
||||
* Bindless texture support (disabled by default)
|
||||
* Specular component is now computed separately in FFP
|
||||
|
||||
Shader system:
|
||||
* Support for tessellation shaders
|
||||
* Support for compute shaders via ComputeNode
|
||||
* GLSL preprocessor with "#pragma include" support
|
||||
* Much better coverage of shader inputs in GLSL
|
||||
* GLSL error messages now show source filename
|
||||
* Fixes apiclip_of_x shader inputs
|
||||
* Matrices can be passed directly to setShaderInput
|
||||
* Support binding images to shaders
|
||||
* Viewport array support
|
||||
|
||||
Optimizations and performance improvements:
|
||||
* Use of C++11 move semantics to reduce refcounting overhead
|
||||
* Build with Eigen by default for faster linear math
|
||||
* Dramatic overhead reduction of generated bindings
|
||||
* Streamline culling process
|
||||
* Tighter bounding volume generation
|
||||
* Take advantage of CPU features for bit operations
|
||||
* Circumvent bounding volume generation when not required
|
||||
* Optimizations for interned strings
|
||||
* Use of GCC atomics should improve 64-bit Linux performance
|
||||
|
||||
API features:
|
||||
* Buffer protocol support for textures and arrays
|
||||
* Interrogate supports various C++11 features
|
||||
* Expose TextGlyph interfaces for making custom text renderers
|
||||
* Better handling of default arguments for many functions
|
||||
* Cyclic references can sometimes be tracked through tasks
|
||||
* ShowBase clean teardown possible
|
||||
* API documentation is more accurate
|
||||
* Improve interfaces for interop with other applications
|
||||
|
||||
Deprecated features:
|
||||
* Use of pandac.PandaModules is discouraged; use panda3d.core
|
||||
* Deprecate DirectStart and global run() function; use ShowBase
|
||||
* Remove old decal system
|
||||
* Remove Direct3D 8 renderer
|
||||
* Remove M_light_vector tex gen mode and FFP-based bump mapping
|
||||
|
||||
Bug fixes:
|
||||
* Various point rendering issues are fixed now
|
||||
* Fix pview issue with 1-frame and/or multiple animations
|
||||
* Fixes for multisampling in FBOs
|
||||
* Fix aspect ratio of frame rate meter
|
||||
* Support NaN and infinity values in Config.prc variables
|
||||
* Fixes for webcams on Linux that do not output Huffman tables
|
||||
* Better support for non-basic Cg shaders on non-NVIDIA cards
|
||||
* Many others
|
||||
|
||||
------------------------ RELEASE 1.8.1 ------------------------
|
||||
|
||||
This is a bugfix release, fixing many issues in 1.8.0.
|
||||
|
|
|
|||
|
|
@ -44,5 +44,4 @@
|
|||
// integers, but by convention it will consist of four integers, with
|
||||
// the first three matching the plugin version, and the fourth integer
|
||||
// being incremented with each new Core API revision.
|
||||
#define P3D_COREAPI_VERSION $[P3D_PLUGIN_VERSION] 1
|
||||
|
||||
#define P3D_COREAPI_VERSION $[P3D_PLUGIN_VERSION] 2
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -26,6 +26,7 @@
|
|||
#include "cppFunctionGroup.h"
|
||||
#include "cppFunctionType.h"
|
||||
#include "cppBison.h"
|
||||
#include "pdtoa.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
|
|
@ -1079,7 +1080,13 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const {
|
|||
break;
|
||||
|
||||
case T_real:
|
||||
out << _u._real;
|
||||
{
|
||||
// We use our own dtoa implementation here because it guarantees
|
||||
// to never format the number as an integer.
|
||||
char buffer[32];
|
||||
pdtoa(_u._real, buffer);
|
||||
out << buffer;
|
||||
}
|
||||
break;
|
||||
|
||||
case T_string:
|
||||
|
|
@ -1155,14 +1162,15 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const {
|
|||
break;
|
||||
|
||||
case T_construct:
|
||||
out << "(" << _u._typecast._to->get_typedef_name(scope)
|
||||
<< "(";
|
||||
_u._typecast._to->output(out, indent_level, scope, false);
|
||||
out << "(";
|
||||
_u._typecast._op1->output(out, indent_level, scope, false);
|
||||
out << "))";
|
||||
out << ")";
|
||||
break;
|
||||
|
||||
case T_default_construct:
|
||||
out << "(" << _u._typecast._to->get_typedef_name(scope) << "())";
|
||||
_u._typecast._to->output(out, indent_level, scope, false);
|
||||
out << "()";
|
||||
break;
|
||||
|
||||
case T_new:
|
||||
|
|
|
|||
|
|
@ -558,7 +558,7 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete,
|
|||
out << " = 0";
|
||||
}
|
||||
if (_initializer != NULL) {
|
||||
out << " = (" << *_initializer << ")";
|
||||
out << " = " << *_initializer;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -204,6 +204,19 @@ CPPDeclaration *CPPTypedefType::
|
|||
substitute_decl(CPPDeclaration::SubstDecl &subst,
|
||||
CPPScope *current_scope, CPPScope *global_scope) {
|
||||
|
||||
if (_ident != NULL && _ident->get_scope(current_scope, global_scope) == global_scope) {
|
||||
// Hack... I know that size_t etc is supposed to work fine, so
|
||||
// preserve these top-level typedefs.
|
||||
CPPDeclaration *top =
|
||||
CPPType::substitute_decl(subst, current_scope, global_scope);
|
||||
if (top != this) {
|
||||
return top;
|
||||
}
|
||||
top = new CPPTypedefType(*this);
|
||||
subst.insert(SubstDecl::value_type(this, top));
|
||||
return top;
|
||||
}
|
||||
|
||||
return _type->substitute_decl(subst, current_scope, global_scope);
|
||||
|
||||
// Bah, this doesn't seem to work, and I can't figure out why.
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ struct AtomicAdjust {
|
|||
#include "atomicAdjustDummyImpl.h"
|
||||
typedef AtomicAdjustDummyImpl AtomicAdjust;
|
||||
|
||||
#elif defined(__i386__) || defined(_M_IX86)
|
||||
#elif (defined(__i386__) || defined(_M_IX86)) && !defined(__APPLE__)
|
||||
// For an i386 architecture, we'll always use the i386 implementation.
|
||||
// It should be safe for any OS, and it might be a bit faster than
|
||||
// any OS-provided calls.
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
////////////////////////////////////////////////////////////////////
|
||||
class EXPCL_DTOOL AtomicAdjustGccImpl {
|
||||
public:
|
||||
#if __GCC_ATOMIC_LONG_LOCK_FREE > __GCC_ATOMIC_INT_LOCK_FREE
|
||||
#if __GCC_ATOMIC_LONG_LOCK_FREE >= __GCC_ATOMIC_INT_LOCK_FREE
|
||||
// If the long can be more lock-free than int, use it instead.
|
||||
typedef __attribute__ ((aligned (__SIZEOF_LONG__))) long Integer;
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -12,10 +12,4 @@
|
|||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "selectThreadImpl.h"
|
||||
|
||||
#ifdef __i386__
|
||||
|
||||
#include "atomicAdjustI386Impl.h"
|
||||
|
||||
#endif // __i386__
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
#include "dtoolbase.h"
|
||||
#include "selectThreadImpl.h"
|
||||
|
||||
#if defined(__i386__) || defined(_M_IX86)
|
||||
#if (defined(__i386__) || defined(_M_IX86)) && !defined(__APPLE__)
|
||||
|
||||
#include "numeric_types.h"
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue