open_toontown_panda3d/direct/src/p3d/coreapi.pdef

122 lines
4.7 KiB
Plaintext

from pandac.PandaModules import getModelPath, Filename, ConfigVariableFilename, DSearchPath, ExecutionEnvironment, PandaSystem
# This file defines a number of standard "packages" that correspond to
# a Panda3D distribution. These packages are built by passing this
# file to the ppackage utility, either as a packaged application, or
# as the module direct.p3d.ppackage.
# The packages in this file define the "Core API". This is the second
# installed piece of the three-part plugin system (the plugin, the
# core API, Panda3D).
# These packages are downloaded directly by the plugin, from the host
# specified by the value of PANDA_PACKAGE_HOST_URL compiled into the
# plugin. Thus, these packages are inextricably tied to the
# particular plugin they have been built with. They do not have to be
# present on a server that hosts a version of Panda3D for download,
# just on the server that hosts the plugin itself. These packages do
# not need to be updated with each new version of Panda3D.
# Also see panda3d.pdef.
class coreapi(solo):
# The special "coreapi" package. As a "solo", this is just a
# single .dll (or dylib, or whatever).
setVer(PandaSystem.getP3dCoreapiVersionString())
file('p3d_plugin.dll')
class images(package):
# The default startup images are stored as their own package.
names = ['download', 'failed', 'play_click', 'play_ready', 'play_rollover',
'auth_click', 'auth_ready', 'auth_rollover']
configDict = {}
# Construct a search path to look for the images.
search = DSearchPath()
# First on the path: an explicit $PLUGIN_IMAGES env var.
if ExecutionEnvironment.hasEnvironmentVariable('PLUGIN_IMAGES'):
search.appendDirectory(Filename.expandFrom('$PLUGIN_IMAGES'))
# Next on the path: the models/plugin_images directory within the
# current directory.
search.appendDirectory('models/plugin_images')
# Finally on the path: models/plugin_images within the model
# search path.
for dir in getModelPath().getDirectories():
search.appendDirectory(Filename(dir, 'plugin_images'))
for name in names:
# Look for a png image first.
basename = '%s.png' % (name)
filename = Filename(basename)
found = filename.resolveFilename(search)
if not found:
# Then try a jpeg image.
basename = '%s.jpg' % (name)
filename = Filename(basename)
found = filename.resolveFilename(search)
if found:
# Add the image file to the package
file(filename, newName = basename, extract = True)
# And set the config variable to reference it.
token = '%s_img' % (name)
configDict[token] = basename
else:
print "Could not locate %s" % (filename)
# Also make a few special cases. We use the same default image
# for many of the states.
download = configDict.get('download_img', None)
if download:
configDict['ready_img'] = download
configDict['unauth_img'] = download
configDict['launch_img'] = download
configDict['active_img'] = download
config(**configDict)
class certlist(package):
# This package holds any certificates that should be considered
# pre-approved by the plugin vendor. If you build and host your
# own version of the Panda3D plugin, you can add your own
# certificates to this list. The certificates in this package
# will be assumed to have been approved by the user when he/she
# installed the plugin.
# They should be PEM-encoded and their filenames must end in the
# ".pem" or ".crt" extension, and they should be added with the
# extract = True flag so they will be extracted to disk.
pass
class p3dcert(package):
# This special application, used to pop up a dialog to prompt the
# user to accept or deny unknown applications, is its own package.
config(display_name = "Authorization Dialog")
if platform.startswith('osx'):
# On Mac, we package up a P3DCert.app bundle. This includes
# specifications in the plist file to avoid creating a dock
# icon and stuff.
# Find p3dcert.plist in the direct source tree.
import direct
plist = Filename(direct.__path__[0], 'plugin/p3dcert.plist')
makeBundle('P3DCert.app', plist, executable = 'p3dcert')
else:
# Anywhere else, we just ship the executable file p3dcert.exe.
file('p3dcert.exe', required = True)
class p3dembed(package):
# This contains the p3dembed executable, that is used by
# pdeploy to generate a self-extracting .p3d executable.
config(platform_specific = True)
file('p3dembed.exe', required = True)