public static TpAtlasMeta *New(string str) { #if FDB Should.NotNullOrEmpty("str", str); #endif return(Init((TpAtlasMeta *)Mem.Malloc(sizeof(TpAtlasMeta)), str)); }
public static TpAtlasMeta *Init(TpAtlasMeta *self, string str) { #if FDB Should.NotNull("self", self); Should.NotNullOrEmpty("str", str); self->type = Type; #endif string[] segs = str.Split(','); int * nums = stackalloc int[segs.Length]; for (int j = 0, end = segs.Length; j < end; j += 1) { nums[j] = int.Parse(segs[j]); } int i = 0; self->name = nums[i++]; self->size[0] = nums[i++]; self->size[1] = nums[i++]; self->spriteCount = nums[i++]; self->sprites = (TpSpriteMeta *)Mem.Malloc(self->spriteCount * sizeof(TpSpriteMeta)); for (int j = 0, end = self->spriteCount; j < end; j += 1) { var sprite = self->sprites + j; #if FDB sprite->type = TpSpriteMeta.Type; #endif sprite->atlas = self; sprite->name = nums[i++]; sprite->rotated = nums[i++] != 0; sprite->size[0] = nums[i++]; sprite->size[1] = nums[i++]; sprite->pivot[0] = nums[i++]; sprite->pivot[1] = nums[i++]; sprite->quad[0] = nums[i++]; sprite->quad[1] = nums[i++]; sprite->quad[2] = nums[i++]; sprite->quad[3] = nums[i++]; sprite->uv[0] = nums[i++]; sprite->uv[1] = nums[i++]; sprite->uv[2] = nums[i++]; sprite->uv[3] = nums[i++]; sprite->border[0] = nums[i++]; sprite->border[1] = nums[i++]; sprite->border[2] = nums[i++]; sprite->border[3] = nums[i++]; } return(self); }