open_toontown_panda3d/direct/src/plugin/p3dInstanceManager.I

402 lines
16 KiB
Plaintext

// Filename: p3dInstanceManager.I
// Created by: drose (29May09)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::is_initialized
// Access: Public
// Description: Returns true if the instance manager is successfully
// initialized, false otherwise.
////////////////////////////////////////////////////////////////////
inline bool P3DInstanceManager::
is_initialized() const {
return _is_initialized;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::reconsider_runtime_environment
// Access: Public
// Description: Recreates the runtime environment if a previous call
// to uninstall_all() removed it. Does nothing if the
// runtime environment is already correctly set up.
////////////////////////////////////////////////////////////////////
inline void P3DInstanceManager::
reconsider_runtime_environment() {
assert(_is_initialized);
if (!_created_runtime_environment) {
create_runtime_environment();
}
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::verify_contents
// Access: Public
// Description: Returns the verify_contents setting. When this is
// set to P3D_VC_none, it indicates that we don't need
// to contact the server to verify that a contents.xml
// file is fresh before using it; we should just use it
// as it is.
////////////////////////////////////////////////////////////////////
inline P3D_verify_contents P3DInstanceManager::
get_verify_contents() const {
return _verify_contents;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::reset_verify_contents
// Access: Public
// Description: Resets the verify_contents flag to P3D_VC_normal, if
// it is P3D_VC_none. This should be done whenever we
// discover anything needs to be downloaded. At this
// point, we might as well verify everything.
////////////////////////////////////////////////////////////////////
inline void P3DInstanceManager::
reset_verify_contents() {
if (_verify_contents == P3D_VC_none) {
_verify_contents = P3D_VC_normal;
}
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_api_version
// Access: Public
// Description: Returns the api_version number which was passed to
// P3D_initialize(). Client code may use this to
// determine how to interpret parameters to various
// functions whose interface may have changed over
// different versions.
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_api_version() const {
return _api_version;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_host_url
// Access: Public
// Description: Returns the standard host_url which the instances
// should attempt to contact to download auxiliary
// packages associated with the core API, such as the
// p3dcert and images packages. This is normally the
// compiled-in PANDA_PACKAGE_HOST_URL, but it might be
// set to something different by the -u parameter on the
// panda3d executable.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_host_url() const {
return _host_url;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_root_dir
// Access: Public
// Description: Returns the root directory into which all the P3D
// runtime files are downloaded and installed. This
// must be a writable directory or nothing will work.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_root_dir() const {
return _root_dir;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_platform
// Access: Public
// Description: Returns the string that corresponds to the platform
// on which we are running. This string will be used to
// determine the appropriate packages to download.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_platform() const {
return _platform;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_temp_directory
// Access: Public
// Description: Returns the pathname of the directory into which
// temporary files should be written. This filename
// will end with a slash, so that full pathnames may be
// made by concatenting directly with this string.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_temp_directory() const {
return _temp_directory;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_log_directory
// Access: Public
// Description: Returns the pathname of the directory into which all
// log files should be written. This filename will end
// with a slash, so that full pathnames may be made by
// concatenting directly with this string.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_log_directory() const {
return _log_directory;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_log_pathname
// Access: Public
// Description: Returns the filename of the system log file; this
// file is responsible for downloading and installing
// updates, and launching applications. This is
// different from the session log file(s), which
// represent the output from a particular Python
// session.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_log_pathname() const {
return _log_pathname;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_trusted_environment
// Access: Public
// Description: Returns the value of the trusted_environment flag
// passed to the constructor. If this is true, it means
// the environment we are running in is trusted and the
// p3d file is already vetted. This means the current
// working directory will remain unchanged, and the p3d
// file will be run without checking its signature.
//
// This should generally be true only when run by
// panda3d.exe or panda3dw.exe, and not when run by the
// web plugin.
////////////////////////////////////////////////////////////////////
inline bool P3DInstanceManager::
get_trusted_environment() const {
return _trusted_environment;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_console_environment
// Access: Public
// Description: Returns the value of the console_environment flag
// passed to the constructor. If this is true, it means
// we are running from a text-based console window, and
// not from a desktop environment.
//
// This should generally be true only when run by
// panda3d.exe, and not when run by the web plugin or by
// panda3dw.exe.
////////////////////////////////////////////////////////////////////
inline bool P3DInstanceManager::
get_console_environment() const {
return _console_environment;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_num_supported_platforms
// Access: Public
// Description: Returns the number of different supported platforms
// available in get_supported_platform().
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_num_supported_platforms() const {
return (int)_supported_platforms.size();
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_supported_platform
// Access: Public
// Description: Returns the nth supported platform, where 0 <= n <
// get_num_supported_platforms().
//
// A given runtime environment may support multiple
// different platforms, e.g. win32 or win64, with the
// restriction that all platform-specific packages
// (beginning from panda3d), must be the same platform.
//
// This function enumerates the different platforms that
// the current runtime environment will support, in
// order of preference--preferred platforms appear first
// in the list.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_supported_platform(int n) const {
return _supported_platforms.at(n);
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_plugin_major_version
// Access: Public
// Description: Returns the plugin's reported major version number.
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_plugin_major_version() const {
return _plugin_major_version;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_plugin_minor_version
// Access: Public
// Description: Returns the plugin's reported minor version number.
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_plugin_minor_version() const {
return _plugin_minor_version;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_plugin_sequence_version
// Access: Public
// Description: Returns the plugin's reported sequence version number.
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_plugin_sequence_version() const {
return _plugin_sequence_version;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_plugin_official_version
// Access: Public
// Description: Returns true if the plugin claims to be from an
// "official" build, and the its version number is
// authoritative; or false if it makes no such claim
// (for instance, it was built by someone checking out
// from cvs).
////////////////////////////////////////////////////////////////////
inline bool P3DInstanceManager::
get_plugin_official_version() const {
return _plugin_official_version;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_plugin_distributor
// Access: Public
// Description: Returns the "distributor" reported by the plugin.
// This should represent the entity that built and
// hosted the plugin.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_plugin_distributor() const {
return _plugin_distributor;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_coreapi_host_url
// Access: Public
// Description: Returns the host URL from which this Core API was
// downloaded (according to the plugin). This is for
// reporting purposes only; see get_host_url() for the
// URL to contact to actually download content.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_coreapi_host_url() const {
return _coreapi_host_url;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_coreapi_timestamp
// Access: Public
// Description: Returns the timestamp associated with this Core API
// DLL (according to the plugin). This is the timestamp
// shown in the contents.xml for this host, and is
// usually the time at which the plugin was built.
////////////////////////////////////////////////////////////////////
inline time_t P3DInstanceManager::
get_coreapi_timestamp() const {
return _coreapi_timestamp;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_coreapi_set_ver
// Access: Public
// Description: Returns the version number associated with the Core
// API, if provided. Some early versions of the Core
// API, and some early versions of the plugin, did not
// provide a number here. If provided, this will be a
// string of dot-separated integers.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_coreapi_set_ver() const {
return _coreapi_set_ver;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_super_mirror
// Access: Public
// Description: Returns the "super mirror" URL. See p3d_plugin.h.
////////////////////////////////////////////////////////////////////
inline const string &P3DInstanceManager::
get_super_mirror() const {
return _super_mirror_url;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::get_num_instances
// Access: Public
// Description: Returns the number of instances currently running
// within the world.
////////////////////////////////////////////////////////////////////
inline int P3DInstanceManager::
get_num_instances() const {
return _instances.size();
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::new_undefined_object
// Access: Public
// Description: Returns the singleton "undefined" object, as a new
// reference.
////////////////////////////////////////////////////////////////////
inline P3D_object *P3DInstanceManager::
new_undefined_object() {
P3D_OBJECT_INCREF(_undefined_object);
return _undefined_object;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::new_none_object
// Access: Public
// Description: Returns the singleton "none" object, as a new
// reference.
////////////////////////////////////////////////////////////////////
inline P3D_object *P3DInstanceManager::
new_none_object() {
P3D_OBJECT_INCREF(_none_object);
return _none_object;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::new_bool_object
// Access: Public
// Description: Returns the singleton "true" or "false" object, as a
// new reference.
////////////////////////////////////////////////////////////////////
inline P3D_object *P3DInstanceManager::
new_bool_object(bool value) {
P3D_object *obj = (value) ? _true_object : _false_object;
P3D_OBJECT_INCREF(obj);
return obj;
}
////////////////////////////////////////////////////////////////////
// Function: P3DInstanceManager::encode_hexdigit
// Access: Public
// Description: Returns the hex digit corresponding to the
// indicated integer value.
////////////////////////////////////////////////////////////////////
inline char P3DInstanceManager::
encode_hexdigit(int c) {
if (c >= 10) {
return c - 10 + 'a';
}
return c + '0';
}