Line data Source code
1 0 : /* 2 : 3 : OOProbabilisticTextureManager.h 4 : 5 : Manages a set of textures, specified in a property list, with associated 6 : probabilities. To avoid interfering with other PRNG-based code, it uses its 7 : own ranrot state. 8 : 9 : 10 : Copyright (C) 2007-2013 Jens Ayton 11 : 12 : Permission is hereby granted, free of charge, to any person obtaining a copy 13 : of this software and associated documentation files (the "Software"), to deal 14 : in the Software without restriction, including without limitation the rights 15 : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 : copies of the Software, and to permit persons to whom the Software is 17 : furnished to do so, subject to the following conditions: 18 : 19 : The above copyright notice and this permission notice shall be included in all 20 : copies or substantial portions of the Software. 21 : 22 : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 28 : SOFTWARE. 29 : 30 : */ 31 : 32 : #import <Foundation/Foundation.h> 33 : #import "OOTexture.h" 34 : #import "OOMaths.h" 35 : 36 : 37 0 : @interface OOProbabilisticTextureManager: NSObject 38 : { 39 : @private 40 0 : unsigned _count; 41 0 : OOTexture **_textures; 42 0 : float *_prob; 43 0 : int *_galaxy; 44 0 : float _probMax; 45 0 : float *_probMaxGal; 46 0 : RANROTSeed _seed; 47 : } 48 : 49 : /* plistName is the name of the property list specifying the actual textures 50 : to use. The plist will be loaded from Config directories and merged. It 51 : should contain an array of dictionaries; each dictionary must have a 52 : "texture" entry specifying the texture file name (in Textures directories) 53 : and an optional "probability" entry (default: 1.0). As a convenience, an 54 : entry may also be a string, in which case probability will be 1.0. 55 : 56 : If no seed is specified, the current seed will be copied. 57 : */ 58 0 : - (id)initWithPListName:(NSString *)plistName 59 : options:(uint32_t)options 60 : anisotropy:(GLfloat)anisotropy 61 : lodBias:(GLfloat)lodBias; 62 : 63 0 : - (id)initWithPListName:(NSString *)plistName 64 : options:(uint32_t)options 65 : anisotropy:(GLfloat)anisotropy 66 : lodBias:(GLfloat)lodBias 67 : seed:(RANROTSeed)seed; 68 : 69 : /* Select a texture, weighted-randomly. 70 : */ 71 0 : - (OOTexture *)selectTexture; 72 : 73 0 : - (unsigned)textureCount; 74 : 75 0 : - (void)ensureTexturesLoaded; 76 : 77 0 : - (RANROTSeed)seed; 78 0 : - (void)setSeed:(RANROTSeed)seed; 79 : 80 : @end