示例#1
0
        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);
        }
示例#2
0
 public static void Decon(TpAtlasMeta *self)
 {
                 #if FDB
     Should.NotNull("self", self);
     Should.TypeEqual("self", self->type, Type);
     Should.NotNull("self->sprites", self->sprites);
     self->type = Fdb.NullType;
     for (int j = 0, end = self->spriteCount; j < end; j += 1)
     {
         var sprite = self->sprites + j;
         Should.TypeEqual("sprite->type", sprite->type, TpSpriteMeta.Type);
         sprite->type = Fdb.NullType;
     }
                 #endif
     self->name = -1;
     Mem.Free(self->sprites); self->sprites = null;
 }