Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package turbo.graphics.atlas;
- import haxepunk.assets.AssetLoader;
- import haxepunk.graphics.atlas.TextureAtlas;
- import haxepunk.math.Rectangle;
- class AsepriteAtlas {
- public static function loadAtlas(data:String, image:String):TextureAtlas {
- var atlasDef:AsepriteAtlasDef = haxe.Json.parse(AssetLoader.getText(data));
- @:privateAccess var atlas = new TextureAtlas(image);
- for(regionName in Reflect.fields(atlasDef.frames)) {
- var region:AsepriteFrameDef = cast Reflect.field(atlasDef.frames, regionName);
- atlas.defineRegion(
- StringTools.replace(regionName, ".ase", ""),
- new Rectangle(region.frame.x, region.frame.y, region.frame.w, region.frame.h)
- );
- }
- return return atlas;
- }
- }
- private typedef AsepriteAtlasDef = {
- var meta:AsepriteMetaDef;
- var frames:Dynamic; // StringMap<AsepriteFrameDef>
- }
- private typedef AsepriteMetaDef = {
- var app:String;
- var version:String;
- var image:String;
- var format:String;
- var size:AsepriteDimsDef;
- var scale:Float;
- }
- private typedef AsepriteFrameDef = {
- var frame:AsepriteRectDef;
- var rotated:Bool;
- var trimmed:Bool;
- var spriteSourceSize:AsepriteRectDef;
- var sourceSize:AsepriteDimsDef;
- var duration:Float;
- }
- private typedef AsepriteDimsDef = {
- var w:Float;
- var h:Float;
- }
- private typedef AsepriteRectDef = {
- var x:Float;
- var y:Float;
- var w:Float;
- var h:Float;
- }
Add Comment
Please, Sign In to add comment