Beispiel #1
0
        internal void Deserialize(GMGraphicsOptionsModel graphicsOptions)
        {
            Id = graphicsOptions.id;

            foreach (var modelTextureGroup in graphicsOptions.textureGroups)
            {
                var textureGroup = new GMTextureGroup();
                textureGroup.Deserialize(modelTextureGroup);
                TextureGroups.Add(textureGroup);
            }
        }
Beispiel #2
0
        public GMTextureGroup CreateTextureGroup(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            // TODO Validate name

            var textureGroup = new GMTextureGroup
            {
                Id   = Guid.NewGuid(),
                Name = name
            };

            TextureGroups.Add(textureGroup);

            return(textureGroup);
        }
Beispiel #3
0
        public void Compile()
        {
            IOrderedEnumerable <TexturePageEntry> orderedEnumerable = from e in Entries
                                                                      orderby e.Name, e.HasAlpha, e.W *e.H descending
            select e;

            Entries = orderedEnumerable.ToList();
            int num = -1;

            foreach (TexturePageEntry item in orderedEnumerable)
            {
                num++;
                if (Program.DisplaySortedTextures)
                {
                    Console.WriteLine("entry :: w={0} h={1} hasAlpha={2}", item.W, item.H, item.HasAlpha);
                }
                List <Texture> list = null;
                int            num2 = 0;
                foreach (KeyValuePair <string, List <Texture> > textureGroup in TextureGroups)
                {
                    if (item.Name == textureGroup.Key)
                    {
                        list = textureGroup.Value;
                        break;
                    }
                    num2++;
                }
                if (list == null)
                {
                    list = new List <Texture>();
                    TextureGroups.Add(item.Name, list);
                    num2++;
                }
                int     _X      = 0;
                int     _Y      = 0;
                bool    flag    = false;
                Texture texture = null;
                foreach (Texture item2 in list)
                {
                    flag = item2.Alloc(item, out _X, out _Y);
                    if (flag)
                    {
                        texture = item2;
                        break;
                    }
                }
                if (!flag)
                {
                    Texture texture2 = new Texture(TextureSizeWidth, TextureSizeHeight, GapX, GapY, MarginX, MarginY);
                    texture2.Group = 0;
                    list.Add(texture2);
                    texture2.Alloc(item, out _X, out _Y);
                    texture = texture2;
                }
                item.X  = _X;
                item.Y  = _Y;
                item.TP = texture;
                texture.Entries.Add(item);
                if (item.DebugTag)
                {
                    item.DebugTag = true;
                }
            }
            foreach (Texture texture3 in Textures)
            {
                int  num3  = texture3.Bitmap.Width;
                int  num4  = texture3.Bitmap.Height;
                int  _X2   = 0;
                int  _Y2   = 0;
                bool flag2 = true;
                while (flag2)
                {
                    int num5 = (num3 == num4) ? num3 : (num3 / 2);
                    int num6 = (num3 == num4) ? (num4 / 2) : num4;
                    texture3.Resize(num5, num6);
                    foreach (TexturePageEntry entry in texture3.Entries)
                    {
                        if (!texture3.Alloc(entry, out _X2, out _Y2))
                        {
                            flag2 = false;
                            break;
                        }
                        entry.X = _X2;
                        entry.Y = _Y2;
                    }
                    if (flag2)
                    {
                        num3 = num5;
                        num4 = num6;
                    }
                }
                num = -1;
                texture3.Resize(num3, num4);
                foreach (TexturePageEntry entry2 in texture3.Entries)
                {
                    num++;
                    if (texture3.Alloc(entry2, out _X2, out _Y2))
                    {
                        entry2.X = _X2;
                        entry2.Y = _Y2;
                    }
                    else
                    {
                        Console.WriteLine("This should not happen #2");
                    }
                }
            }
            int num7 = 0;

            foreach (Texture texture4 in Textures)
            {
                texture4.TP = num7;
                texture4.CopyEntries();
                num7++;
            }
        }