public idImage(string name, TextureType type, TextureFilter filter, TextureRepeat repeat, TextureDepth depth, CubeFiles cubeMap, bool allowDownSize) { _name = name; _type = type; _filter = filter; _repeat = repeat; _depth = depth; _cubeFiles = cubeMap; _allowDownSize = allowDownSize; }
// background loading information. /*private idImage _partialImage; // shrunken, space-saving version * private bool _isPartialImage; // true if this is pointed to by another image*/ #endregion #region Constructor public idImage(string name, ImageLoadCallback generator) { _name = name; _generator = generator; _type = TextureType.Disabled; _filter = TextureFilter.Default; _repeat = TextureRepeat.Repeat; _depth = TextureDepth.Default; _cubeFiles = CubeFiles.TwoD; }
/// <summary> /// Finds or loads the given image, always returning a valid image pointer. /// Loading of the image may be deferred for dynamic loading. /// </summary> /// <param name="name"></param> /// <param name="filter"></param> /// <param name="allowDownSize"></param> /// <param name="repeat"></param> /// <param name="depth"></param> /// <param name="cubeMap"></param> /// <returns></returns> public idImage ImageFromFile(string name, TextureFilter filter, bool allowDownSize, TextureRepeat repeat, TextureDepth depth, CubeFiles cubeMap) { if((name == null) || (name == string.Empty) || (name.Equals("default", StringComparison.OrdinalIgnoreCase) == true) || (name.Equals("_default", StringComparison.OrdinalIgnoreCase) == true)) { idE.DeclManager.MediaPrint("DEFAULTED"); return this.DefaultImage; } idImage image; // strip any .tga file extensions from anywhere in the _name, including image program parameters name = name.Replace(".tga", ""); // // see if the image is already loaded, unless we // are in a reloadImages call // if(_imageDictionary.TryGetValue(name, out image) == true) { // the built in's, like _white and _flat always match the other options if(name.StartsWith("_") == true) { return image; } if(image.CubeFiles != cubeMap) { idConsole.Error("Image '{0}' has been referenced with conflicting cube map states", name); } if((image.Filter != filter) || (image.Repeat != repeat)) { // we might want to have the system reset these parameters on every bind and // share the image data // FIXME: this might be the wrong behaviour. original d3 would return a new image but our dictionary // requires unique keys. return image; } else { if((image.AllowDownSize == allowDownSize) && (image.Depth == depth)) { // note that it is used this level load image.LevelLoadReferenced = true; return image; } // the same image is being requested, but with a different allowDownSize or depth // so pick the highest of the two and reload the old image with those parameters if(image.AllowDownSize == false) { allowDownSize = false; } if(image.Depth > depth) { depth = image.Depth; } if((image.AllowDownSize == allowDownSize) && (image.Depth == depth)) { // the already created one is already the highest quality image.LevelLoadReferenced = true; return image; } /*image.AllowDownSize = allowDownSize; image.Depth = depth;*/ image.LevelLoadReferenced = true; if((idE.CvarSystem.GetBool("image_preload") == true) && (_insideLevelLoad == false)) { image.ReferencedOutsideLevelLoad = true; image.ActuallyLoadImage(true, false); // check for precompressed, load is from front end idE.DeclManager.MediaPrint("{0}x{1} {1} (reload for mixed referneces)", image.Width, image.Height, image.Name); } return image; } } // HACK: to allow keep fonts from being mip'd, as new ones will be introduced with localization // this keeps us from having to make a material for each font tga if(name.Contains("fontImage_") == true) { allowDownSize = false; } // // create a new image // image = CreateImage(name, TextureType.TwoD, filter, repeat, depth, cubeMap, allowDownSize); image.LevelLoadReferenced = true; // load it if we aren't in a level preload if((idE.CvarSystem.GetBool("image_preload") == true) && (_insideLevelLoad == false)) { image.ReferencedOutsideLevelLoad = true; image.ActuallyLoadImage(true, false); // check for precompressed, load is from front end idE.DeclManager.MediaPrint("{0}x{1} {2}", image.Width, image.Height, image.Name); } else { idE.DeclManager.MediaPrint(image.Name); } return image; }
private idImage CreateImage(string name, TextureType type, TextureFilter filter, TextureRepeat repeat, TextureDepth depth, CubeFiles cubeMap, bool allowDownSize) { idImage image = new idImage(name, type, filter, repeat, depth, cubeMap, allowDownSize); _images.Add(image); _imageDictionary.Add(name, image); return image; }
public idImage(string name, TextureType type, TextureFilter filter, TextureRepeat repeat, TextureDepth depth, CubeFiles cubeMap, bool allowDownSize) { _name = name; _type = type; _filter = filter; _repeat = repeat; _depth = depth; _cubeFiles = cubeMap; _allowDownSize = allowDownSize; }
// background loading information. /*private idImage _partialImage; // shrunken, space-saving version private bool _isPartialImage; // true if this is pointed to by another image*/ #endregion #region Constructor public idImage(string name, ImageLoadCallback generator) { _name = name; _generator = generator; _type = TextureType.Disabled; _filter = TextureFilter.Default; _repeat = TextureRepeat.Repeat; _depth = TextureDepth.Default; _cubeFiles = CubeFiles.TwoD; }