Line data Source code
1 0 : /* 2 : 3 : OOPlanetDrawable.h 4 : 5 : Draw a ball, such as might be used to represent a planet. 6 : 7 : Oolite 8 : Copyright (C) 2004-2013 Giles C Williams and contributors 9 : 10 : This program is free software; you can redistribute it and/or 11 : modify it under the terms of the GNU General Public License 12 : as published by the Free Software Foundation; either version 2 13 : of the License, or (at your option) any later version. 14 : 15 : This program is distributed in the hope that it will be useful, 16 : but WITHOUT ANY WARRANTY; without even the implied warranty of 17 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 : GNU General Public License for more details. 19 : 20 : You should have received a copy of the GNU General Public License 21 : along with this program; if not, write to the Free Software 22 : Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 23 : MA 02110-1301, USA. 24 : 25 : */ 26 : 27 : #import "OODrawable.h" 28 : #import "OOMaths.h" 29 : 30 : @class OOMaterial; 31 : 32 : 33 0 : @interface OOPlanetDrawable: OODrawable <NSCopying> 34 : { 35 : @private 36 : OOMaterial *_material; 37 0 : BOOL _isAtmosphere; 38 0 : float _radius; 39 0 : OOMatrix _transform; 40 0 : unsigned _lod; 41 0 : } 42 : 43 : + (instancetype) planetWithTextureName:(NSString *)textureName radius:(float)radius; 44 0 : + (instancetype) atmosphereWithRadius:(float)radius; 45 0 : 46 : - (id) initAsAtmosphere; 47 0 : 48 : - (OOMaterial *) material; 49 0 : - (void) setMaterial:(OOMaterial *)material; 50 0 : 51 : - (NSString *) textureName; 52 0 : - (void) setTextureName:(NSString *)textureName; 53 0 : 54 : // Radius, in game metres. 55 : - (float) radius; 56 0 : - (void) setRadius:(float)radius; 57 0 : 58 : // Level of detail, [0..1]. Granularity is implementation-defined. 59 : - (float) levelOfDetail; 60 0 : - (void) setLevelOfDetail:(float)lod; 61 0 : - (void) calculateLevelOfDetailForViewDistance:(float)distance; 62 0 : 63 : // depth-buffer hack 64 : - (void) renderTranslucentPartsOnOpaquePass; 65 0 : 66 : @end