open_toontown_panda3d/direct/src/plugin/p3dInstanceManager.I

323 lines
9.0 KiB
Plaintext

/**
* 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."
*
* @file p3dInstanceManager.I
* @author drose
* @date 2009-05-29
*/
/**
* Returns true if the instance manager is successfully initialized, false
* otherwise.
*/
inline bool P3DInstanceManager::
is_initialized() const {
return _is_initialized;
}
/**
* 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();
}
}
/**
* 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;
}
/**
* 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;
}
}
/**
* 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;
}
/**
* 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 std::string &P3DInstanceManager::
get_host_url() const {
return _host_url;
}
/**
* 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 std::string &P3DInstanceManager::
get_root_dir() const {
return _root_dir;
}
/**
* Returns the directory that the .p3d file should be mounted to and run from.
* This is usually the "start" subdirectory of the root_dir.
*/
inline const std::string &P3DInstanceManager::
get_start_dir() const {
return _start_dir;
}
/**
* 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 std::string &P3DInstanceManager::
get_platform() const {
return _platform;
}
/**
* 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 std::string &P3DInstanceManager::
get_temp_directory() const {
return _temp_directory;
}
/**
* 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 std::string &P3DInstanceManager::
get_log_directory() const {
return _log_directory;
}
/**
* 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 std::string &P3DInstanceManager::
get_log_pathname() const {
return _log_pathname;
}
/**
* 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;
}
/**
* 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;
}
/**
* 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();
}
/**
* 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 std::string &P3DInstanceManager::
get_supported_platform(int n) const {
return _supported_platforms.at(n);
}
/**
* Returns the plugin's reported major version number.
*/
inline int P3DInstanceManager::
get_plugin_major_version() const {
return _plugin_major_version;
}
/**
* Returns the plugin's reported minor version number.
*/
inline int P3DInstanceManager::
get_plugin_minor_version() const {
return _plugin_minor_version;
}
/**
* Returns the plugin's reported sequence version number.
*/
inline int P3DInstanceManager::
get_plugin_sequence_version() const {
return _plugin_sequence_version;
}
/**
* 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;
}
/**
* Returns the "distributor" reported by the plugin. This should represent
* the entity that built and hosted the plugin.
*/
inline const std::string &P3DInstanceManager::
get_plugin_distributor() const {
return _plugin_distributor;
}
/**
* 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 std::string &P3DInstanceManager::
get_coreapi_host_url() const {
return _coreapi_host_url;
}
/**
* 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;
}
/**
* 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 std::string &P3DInstanceManager::
get_coreapi_set_ver() const {
return _coreapi_set_ver;
}
/**
* Returns the "super mirror" URL. See p3d_plugin.h.
*/
inline const std::string &P3DInstanceManager::
get_super_mirror() const {
return _super_mirror_url;
}
/**
* Returns the number of instances currently running within the world.
*/
inline int P3DInstanceManager::
get_num_instances() const {
return _instances.size();
}
/**
* Returns the singleton "undefined" object, as a new reference.
*/
inline P3D_object *P3DInstanceManager::
new_undefined_object() {
P3D_OBJECT_INCREF(_undefined_object);
return _undefined_object;
}
/**
* Returns the singleton "none" object, as a new reference.
*/
inline P3D_object *P3DInstanceManager::
new_none_object() {
P3D_OBJECT_INCREF(_none_object);
return _none_object;
}
/**
* 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;
}
/**
* 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';
}