mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-14 07:46:39 -04:00
Fixes related to -ps keep, -ps rel
This commit is contained in:
parent
c088cb7cf4
commit
82b1ac94c4
@ -153,24 +153,27 @@ convert_paths(EggNode *node, PathReplace *path_replace,
|
|||||||
const DSearchPath &additional_path) {
|
const DSearchPath &additional_path) {
|
||||||
if (node->is_of_type(EggTexture::get_class_type())) {
|
if (node->is_of_type(EggTexture::get_class_type())) {
|
||||||
EggTexture *egg_tex = DCAST(EggTexture, node);
|
EggTexture *egg_tex = DCAST(EggTexture, node);
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
path_replace->match_path(egg_tex->get_filename(), additional_path);
|
path_replace->full_convert_path(egg_tex->get_filename(), additional_path,
|
||||||
egg_tex->set_filename(path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
egg_tex->set_filename(outpath);
|
||||||
egg_tex->set_fullpath(fullpath);
|
egg_tex->set_fullpath(fullpath);
|
||||||
|
|
||||||
if (egg_tex->has_alpha_filename()) {
|
if (egg_tex->has_alpha_filename()) {
|
||||||
Filename alpha_fullpath =
|
Filename alpha_fullpath, alpha_outpath;
|
||||||
path_replace->match_path(egg_tex->get_alpha_filename(), additional_path);
|
path_replace->full_convert_path(egg_tex->get_alpha_filename(), additional_path,
|
||||||
egg_tex->set_alpha_filename(path_replace->store_path(alpha_fullpath));
|
alpha_fullpath, alpha_outpath);
|
||||||
|
egg_tex->set_alpha_filename(alpha_outpath);
|
||||||
egg_tex->set_alpha_fullpath(alpha_fullpath);
|
egg_tex->set_alpha_fullpath(alpha_fullpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (node->is_of_type(EggFilenameNode::get_class_type())) {
|
} else if (node->is_of_type(EggFilenameNode::get_class_type())) {
|
||||||
EggFilenameNode *egg_fnode = DCAST(EggFilenameNode, node);
|
EggFilenameNode *egg_fnode = DCAST(EggFilenameNode, node);
|
||||||
|
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
path_replace->match_path(egg_fnode->get_filename(), additional_path);
|
path_replace->full_convert_path(egg_fnode->get_filename(), additional_path,
|
||||||
egg_fnode->set_filename(path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
egg_fnode->set_filename(outpath);
|
||||||
egg_fnode->set_fullpath(fullpath);
|
egg_fnode->set_fullpath(fullpath);
|
||||||
|
|
||||||
} else if (node->is_of_type(EggGroupNode::get_class_type())) {
|
} else if (node->is_of_type(EggGroupNode::get_class_type())) {
|
||||||
|
@ -145,7 +145,9 @@ read_egg(const Filename &filename) {
|
|||||||
// filename, since egg files almost always store relative paths.
|
// filename, since egg files almost always store relative paths.
|
||||||
// This is a temporary kludge around integrating the path_replace
|
// This is a temporary kludge around integrating the path_replace
|
||||||
// system with the EggData better.
|
// system with the EggData better.
|
||||||
data->resolve_filenames(file_path);
|
//
|
||||||
|
// Update: I believe this kludge is obsolete. Commenting out. - Josh.
|
||||||
|
// data->resolve_filenames(file_path);
|
||||||
|
|
||||||
if (_force_complete) {
|
if (_force_complete) {
|
||||||
if (!data->load_externals()) {
|
if (!data->load_externals()) {
|
||||||
|
@ -198,7 +198,9 @@ handle_args(ProgramBase::Args &args) {
|
|||||||
// filename, since egg files almost always store relative paths.
|
// filename, since egg files almost always store relative paths.
|
||||||
// This is a temporary kludge around integrating the path_replace
|
// This is a temporary kludge around integrating the path_replace
|
||||||
// system with the EggData better.
|
// system with the EggData better.
|
||||||
file_data.resolve_filenames(file_path);
|
//
|
||||||
|
// Update: I believe this kludge is obsolete. Commenting out. - Josh.
|
||||||
|
// file_data.resolve_filenames(file_path);
|
||||||
|
|
||||||
if (_force_complete) {
|
if (_force_complete) {
|
||||||
if (!file_data.load_externals()) {
|
if (!file_data.load_externals()) {
|
||||||
|
@ -220,6 +220,7 @@ handle_args(ProgramBase::Args &args) {
|
|||||||
if (!_got_path_directory && _got_output_filename) {
|
if (!_got_path_directory && _got_output_filename) {
|
||||||
// Put in the name of the output directory.
|
// Put in the name of the output directory.
|
||||||
_path_replace->_path_directory = _output_filename.get_dirname();
|
_path_replace->_path_directory = _output_filename.get_dirname();
|
||||||
|
cerr << "_path_directory defaults to " << _path_replace->_path_directory << " in eggWriter\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -291,6 +291,11 @@ handle_args(Args &args) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!_got_path_directory && _got_output_filename) {
|
||||||
|
// Put in the name of the output directory.
|
||||||
|
_path_replace->_path_directory = _output_filename.get_dirname();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1865,9 +1865,10 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader) {
|
|||||||
if (color_def._has_texture) {
|
if (color_def._has_texture) {
|
||||||
// If we have a texture on color, apply it as the filename.
|
// If we have a texture on color, apply it as the filename.
|
||||||
Filename filename = Filename::from_os_specific(color_def._texture);
|
Filename filename = Filename::from_os_specific(color_def._texture);
|
||||||
Filename fullpath =
|
Filename fullpath,outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
apply_texture_properties(tex, color_def);
|
apply_texture_properties(tex, color_def);
|
||||||
|
|
||||||
@ -1910,8 +1911,9 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader) {
|
|||||||
// set_alpha_file_channel()), but for now we assume it comes
|
// set_alpha_file_channel()), but for now we assume it comes
|
||||||
// from the grayscale data.
|
// from the grayscale data.
|
||||||
filename = Filename::from_os_specific(trans_def._texture);
|
filename = Filename::from_os_specific(trans_def._texture);
|
||||||
fullpath = _path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_alpha_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_alpha_filename(outpath);
|
||||||
tex.set_alpha_fullpath(fullpath);
|
tex.set_alpha_fullpath(fullpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1926,9 +1928,10 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader) {
|
|||||||
// We have a texture on transparency only. Apply it as the
|
// We have a texture on transparency only. Apply it as the
|
||||||
// primary filename, and set the format accordingly.
|
// primary filename, and set the format accordingly.
|
||||||
Filename filename = Filename::from_os_specific(trans_def._texture);
|
Filename filename = Filename::from_os_specific(trans_def._texture);
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
tex.set_format(EggTexture::F_alpha);
|
tex.set_format(EggTexture::F_alpha);
|
||||||
apply_texture_properties(tex, trans_def);
|
apply_texture_properties(tex, trans_def);
|
||||||
@ -2014,9 +2017,10 @@ set_material_attributes(EggPrimitive &primitive, Mtl *maxMaterial, Face *face) {
|
|||||||
|
|
||||||
maxBitmapTex = (BitmapTex *) maxTexmap;
|
maxBitmapTex = (BitmapTex *) maxTexmap;
|
||||||
Filename filename = Filename::from_os_specific(maxBitmapTex->GetMapName());
|
Filename filename = Filename::from_os_specific(maxBitmapTex->GetMapName());
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
apply_texture_properties(tex, maxStandardMaterial);
|
apply_texture_properties(tex, maxStandardMaterial);
|
||||||
// *** Must add stuff here for looking for transparencies
|
// *** Must add stuff here for looking for transparencies
|
||||||
@ -2145,11 +2149,11 @@ set_material_attributes(EggPrimitive &primitive, Mtl *maxMaterial, Face *face) {
|
|||||||
|
|
||||||
if (has_diffuse_texture) {
|
if (has_diffuse_texture) {
|
||||||
// It is!
|
// It is!
|
||||||
|
|
||||||
Filename filename = Filename::from_os_specific(diffuseBitmapTex->GetMapName());
|
Filename filename = Filename::from_os_specific(diffuseBitmapTex->GetMapName());
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
apply_texture_properties(tex, maxStandardMaterial);
|
apply_texture_properties(tex, maxStandardMaterial);
|
||||||
// *** Must add stuff here for looking for transparencies
|
// *** Must add stuff here for looking for transparencies
|
||||||
@ -2162,8 +2166,9 @@ set_material_attributes(EggPrimitive &primitive, Mtl *maxMaterial, Face *face) {
|
|||||||
// nothing more needs to be done
|
// nothing more needs to be done
|
||||||
} else {
|
} else {
|
||||||
filename = Filename::from_os_specific(transBitmapTex->GetMapName());
|
filename = Filename::from_os_specific(transBitmapTex->GetMapName());
|
||||||
fullpath = _path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_alpha_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_alpha_filename(outpath);
|
||||||
tex.set_alpha_fullpath(fullpath);
|
tex.set_alpha_fullpath(fullpath);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -2177,9 +2182,10 @@ set_material_attributes(EggPrimitive &primitive, Mtl *maxMaterial, Face *face) {
|
|||||||
// We have a texture on transparency only. Apply it as the
|
// We have a texture on transparency only. Apply it as the
|
||||||
// primary filename, and set the format accordingly.
|
// primary filename, and set the format accordingly.
|
||||||
Filename filename = Filename::from_os_specific(transBitmapTex->GetMapName());
|
Filename filename = Filename::from_os_specific(transBitmapTex->GetMapName());
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
tex.set_format(EggTexture::F_alpha);
|
tex.set_format(EggTexture::F_alpha);
|
||||||
apply_texture_properties(tex, maxStandardMaterial);
|
apply_texture_properties(tex, maxStandardMaterial);
|
||||||
|
@ -2280,9 +2280,9 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader,
|
|||||||
// If we have a texture on color, apply it as the filename.
|
// If we have a texture on color, apply it as the filename.
|
||||||
//mayaegg_cat.debug() << "ssa:got texture name" << color_def->_texture_filename << endl;
|
//mayaegg_cat.debug() << "ssa:got texture name" << color_def->_texture_filename << endl;
|
||||||
Filename filename = Filename::from_os_specific(color_def->_texture_filename);
|
Filename filename = Filename::from_os_specific(color_def->_texture_filename);
|
||||||
Filename fullpath =
|
Filename fullpath, outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(), fullpath, outpath);
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
apply_texture_properties(tex, *color_def);
|
apply_texture_properties(tex, *color_def);
|
||||||
|
|
||||||
@ -2325,8 +2325,9 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader,
|
|||||||
// set_alpha_file_channel()), but for now we assume it comes
|
// set_alpha_file_channel()), but for now we assume it comes
|
||||||
// from the grayscale data.
|
// from the grayscale data.
|
||||||
filename = Filename::from_os_specific(trans_def._texture_filename);
|
filename = Filename::from_os_specific(trans_def._texture_filename);
|
||||||
fullpath = _path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_alpha_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_alpha_filename(outpath);
|
||||||
tex.set_alpha_fullpath(fullpath);
|
tex.set_alpha_fullpath(fullpath);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -2355,9 +2356,10 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader,
|
|||||||
// We have a texture on transparency only. Apply it as the
|
// We have a texture on transparency only. Apply it as the
|
||||||
// primary filename, and set the format accordingly.
|
// primary filename, and set the format accordingly.
|
||||||
Filename filename = Filename::from_os_specific(trans_def._texture_filename);
|
Filename filename = Filename::from_os_specific(trans_def._texture_filename);
|
||||||
Filename fullpath =
|
Filename fullpath,outpath;
|
||||||
_path_replace->match_path(filename, get_texture_path());
|
_path_replace->full_convert_path(filename, get_texture_path(),
|
||||||
tex.set_filename(_path_replace->store_path(fullpath));
|
fullpath, outpath);
|
||||||
|
tex.set_filename(outpath);
|
||||||
tex.set_fullpath(fullpath);
|
tex.set_fullpath(fullpath);
|
||||||
apply_texture_properties(tex, trans_def);
|
apply_texture_properties(tex, trans_def);
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,9 @@ is_empty() const {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE Filename PathReplace::
|
INLINE Filename PathReplace::
|
||||||
convert_path(const Filename &orig_filename, const DSearchPath &additional_path) {
|
convert_path(const Filename &orig_filename, const DSearchPath &additional_path) {
|
||||||
return store_path(match_path(orig_filename, additional_path));
|
Filename fullpath, outpath;
|
||||||
|
full_convert_path(orig_filename, additional_path, fullpath, outpath);
|
||||||
|
return outpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
@ -201,6 +201,168 @@ store_path(const Filename &orig_filename) {
|
|||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: PathReplace::full_convert_path
|
||||||
|
// Access: Public
|
||||||
|
// Description: Converts the input path into two different forms:
|
||||||
|
// A resolved path, and an output path. The resolved
|
||||||
|
// path is an absolute path if at all possible. The
|
||||||
|
// output path is in the form specified by the -ps
|
||||||
|
// path store option.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void PathReplace::
|
||||||
|
full_convert_path(const Filename &orig_filename,
|
||||||
|
const DSearchPath &additional_path,
|
||||||
|
Filename &resolved_path,
|
||||||
|
Filename &output_path) {
|
||||||
|
Filename match;
|
||||||
|
bool got_match = false;
|
||||||
|
|
||||||
|
VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
|
||||||
|
|
||||||
|
Entries::const_iterator ei;
|
||||||
|
for (ei = _entries.begin(); ei != _entries.end(); ++ei) {
|
||||||
|
const Entry &entry = (*ei);
|
||||||
|
Filename new_filename;
|
||||||
|
if (entry.try_match(orig_filename, new_filename)) {
|
||||||
|
// The prefix matches. Save the resulting filename for
|
||||||
|
// posterity.
|
||||||
|
got_match = true;
|
||||||
|
match = new_filename;
|
||||||
|
|
||||||
|
if (new_filename.is_fully_qualified()) {
|
||||||
|
// If the resulting filename is fully qualified, it's a match
|
||||||
|
// if and only if it exists.
|
||||||
|
if (vfs->exists(new_filename)) {
|
||||||
|
resolved_path = new_filename;
|
||||||
|
goto calculate_output_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Otherwise, if it's a relative filename, attempt to look it
|
||||||
|
// up on the search path.
|
||||||
|
if (vfs->resolve_filename(new_filename, _path) ||
|
||||||
|
vfs->resolve_filename(new_filename, additional_path) ||
|
||||||
|
vfs->resolve_filename(new_filename, get_model_path())) {
|
||||||
|
// Found it!
|
||||||
|
resolved_path = new_filename;
|
||||||
|
goto calculate_output_path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The prefix matched, but it didn't exist. Keep looking.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The file couldn't be found anywhere. Did we at least get any
|
||||||
|
// prefix match?
|
||||||
|
if (got_match) {
|
||||||
|
if (_exists) {
|
||||||
|
_error_flag = true;
|
||||||
|
pandatoolbase_cat.error()
|
||||||
|
<< "File does not exist: " << match << "\n";
|
||||||
|
} else if (pandatoolbase_cat.is_debug()) {
|
||||||
|
pandatoolbase_cat.debug()
|
||||||
|
<< "File does not exist: " << match << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
resolved_path = match;
|
||||||
|
goto calculate_output_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!orig_filename.is_local()) {
|
||||||
|
// Ok, we didn't match any specified prefixes. If the file is an
|
||||||
|
// absolute pathname and we have _noabs set, that's an error.
|
||||||
|
if (_noabs) {
|
||||||
|
_error_flag = true;
|
||||||
|
pandatoolbase_cat.error()
|
||||||
|
<< "Absolute pathname: " << orig_filename << "\n";
|
||||||
|
} else if (pandatoolbase_cat.is_debug()) {
|
||||||
|
pandatoolbase_cat.debug()
|
||||||
|
<< "Absolute pathname: " << orig_filename << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Well, we still haven't found it; look it up on the search path as
|
||||||
|
// is.
|
||||||
|
{
|
||||||
|
Filename new_filename = orig_filename;
|
||||||
|
if (vfs->resolve_filename(new_filename, _path) ||
|
||||||
|
vfs->resolve_filename(new_filename, additional_path) ||
|
||||||
|
vfs->resolve_filename(new_filename, get_model_path())) {
|
||||||
|
// Found it!
|
||||||
|
match = orig_filename;
|
||||||
|
resolved_path = new_filename;
|
||||||
|
goto calculate_output_path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nope, couldn't find anything. This is an error, but just return
|
||||||
|
// the original filename.
|
||||||
|
if (_exists) {
|
||||||
|
_error_flag = true;
|
||||||
|
pandatoolbase_cat.error()
|
||||||
|
<< "File does not exist: " << orig_filename << "\n";
|
||||||
|
} else if (pandatoolbase_cat.is_debug()) {
|
||||||
|
pandatoolbase_cat.debug()
|
||||||
|
<< "File does not exist: " << orig_filename << "\n";
|
||||||
|
}
|
||||||
|
match = orig_filename;
|
||||||
|
resolved_path = orig_filename;
|
||||||
|
|
||||||
|
// To calculate the output path, we need two inputs:
|
||||||
|
// the match, and the resolved path. Which one is used
|
||||||
|
// depends upon the path-store mode.
|
||||||
|
calculate_output_path:
|
||||||
|
|
||||||
|
switch (_path_store) {
|
||||||
|
case PS_relative:
|
||||||
|
if (resolved_path.empty())
|
||||||
|
output_path = resolved_path;
|
||||||
|
else {
|
||||||
|
if (_path_directory.is_local())
|
||||||
|
_path_directory.make_absolute();
|
||||||
|
output_path = resolved_path;
|
||||||
|
output_path.make_absolute();
|
||||||
|
output_path.make_relative_to(_path_directory);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PS_absolute:
|
||||||
|
if (resolved_path.empty())
|
||||||
|
output_path = resolved_path;
|
||||||
|
else {
|
||||||
|
output_path = resolved_path;
|
||||||
|
output_path.make_absolute();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PS_rel_abs:
|
||||||
|
if (resolved_path.empty())
|
||||||
|
output_path = resolved_path;
|
||||||
|
else {
|
||||||
|
if (_path_directory.is_local())
|
||||||
|
_path_directory.make_absolute();
|
||||||
|
output_path = resolved_path;
|
||||||
|
output_path.make_absolute();
|
||||||
|
output_path.make_relative_to(_path_directory, false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PS_strip:
|
||||||
|
output_path = match.get_basename();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PS_keep:
|
||||||
|
output_path = match;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PS_invalid:
|
||||||
|
output_path = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: PathReplace::write
|
// Function: PathReplace::write
|
||||||
// Access: Public
|
// Access: Public
|
||||||
|
@ -64,6 +64,11 @@ public:
|
|||||||
INLINE Filename convert_path(const Filename &orig_filename,
|
INLINE Filename convert_path(const Filename &orig_filename,
|
||||||
const DSearchPath &additional_path = DSearchPath());
|
const DSearchPath &additional_path = DSearchPath());
|
||||||
|
|
||||||
|
void full_convert_path(const Filename &orig_filename,
|
||||||
|
const DSearchPath &additional_path,
|
||||||
|
Filename &resolved_path,
|
||||||
|
Filename &output_path);
|
||||||
|
|
||||||
void write(ostream &out, int indent_level = 0) const;
|
void write(ostream &out, int indent_level = 0) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user