37 lines
		
	
	
		
			794 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			794 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package iron.data;
 | 
						|
 | 
						|
import iron.data.SceneFormat;
 | 
						|
 | 
						|
class LightData {
 | 
						|
 | 
						|
	public var name: String;
 | 
						|
	public var raw: TLightData;
 | 
						|
 | 
						|
	public function new(raw: TLightData, done: LightData->Void) {
 | 
						|
		this.raw = raw;
 | 
						|
		this.name = raw.name;
 | 
						|
		done(this);
 | 
						|
	}
 | 
						|
 | 
						|
	public static inline function typeToInt(s: String): Int {
 | 
						|
		switch (s) {
 | 
						|
			case "sun": return 0;
 | 
						|
			case "point": return 1;
 | 
						|
			case "spot": return 2;
 | 
						|
			case "area": return 3;
 | 
						|
			default: return 0;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	public static function parse(name: String, id: String, done: LightData->Void) {
 | 
						|
		Data.getSceneRaw(name, function(format: TSceneFormat) {
 | 
						|
			var raw: TLightData = Data.getLightRawByName(format.light_datas, id);
 | 
						|
			if (raw == null) {
 | 
						|
				trace('Light data "$id" not found!');
 | 
						|
				done(null);
 | 
						|
			}
 | 
						|
			new LightData(raw, done);
 | 
						|
		});
 | 
						|
	}
 | 
						|
}
 |