コード例 #1
0
        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)
        {
            MyTextureAtlas atlas = new MyTextureAtlas(0x40);

            using (Stream stream = MyFileSystem.OpenRead(Path.Combine(MyFileSystem.ContentPath, atlasFile)))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    while (!reader.EndOfStream)
                    {
                        string str = reader.ReadLine();
                        if (!str.StartsWith("#"))
                        {
                            char[] trimChars = new char[] { ' ' };
                            if (str.Trim(trimChars).Length != 0)
                            {
                                string[]           strArray  = str.Split(new char[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);
                                string             str3      = strArray[1];
                                Vector4            uvOffsets = new Vector4(Convert.ToSingle(strArray[4], CultureInfo.InvariantCulture), Convert.ToSingle(strArray[5], CultureInfo.InvariantCulture), Convert.ToSingle(strArray[7], CultureInfo.InvariantCulture), Convert.ToSingle(strArray[8], CultureInfo.InvariantCulture));
                                MyTextureAtlasItem item      = new MyTextureAtlasItem(textureDir + str3, uvOffsets);
                                atlas.Add(strArray[0], item);
                            }
                        }
                    }
                }
            }
            return(atlas);
        }
コード例 #2
0
        public static void LoadTextureAtlas(string[] enumsToStrings, string textureDir, string atlasFile, out MyTexture2D texture, out MyAtlasTextureCoordinate[] textureCoords)
        {
            //MyTextureAtlas atlas = contentManager.Load<MyTextureAtlas>(atlasFile);

            MyTextureAtlas atlas = LoadTextureAtlas(textureDir, atlasFile);

            //  Here we define particle texture coordinates inside of texture atlas
            textureCoords = new MyAtlasTextureCoordinate[enumsToStrings.Length];

            texture = null;

            for (int i = 0; i < enumsToStrings.Length; i++)
            {
                MyTextureAtlasItem textureAtlasItem = atlas[enumsToStrings[i]];

                textureCoords[i] = new MyAtlasTextureCoordinate(new Vector2(textureAtlasItem.UVOffsets.X, textureAtlasItem.UVOffsets.Y), new Vector2(textureAtlasItem.UVOffsets.Z, textureAtlasItem.UVOffsets.W));

                //  Texture atlas content processor support having more DDS files for one atlas, but we don't want it (because we want to have all particles in one texture, so we can draw fast).
                //  So here we just take first and only texture.
                if (texture == null)
                {
                    texture = textureAtlasItem.AtlasTexture;
                }
            }
        }
コード例 #3
0
        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)
        {
            var fsPath = Path.Combine(MyFileSystem.ContentPath, atlasFile);

            if (!File.Exists(fsPath))
            {
                MyLog.Default.WriteLine("Warning: " + atlasFile + " not found.");
                return(null);
            }

            try
            {
                var atlas = new MyTextureAtlas(64);

                using (var file = MyFileSystem.OpenRead(fsPath))
                    using (StreamReader sr = new StreamReader(file))
                    {
                        while (!sr.EndOfStream)
                        {
                            string line = sr.ReadLine();

                            if (line.StartsWith("#"))
                            {
                                continue;
                            }
                            if (line.Trim(' ').Length == 0)
                            {
                                continue;
                            }

                            string[] parts = line.Split(new char[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);

                            string name      = parts[0];
                            string atlasName = parts[1];

                            Vector4 uv = new Vector4(
                                Convert.ToSingle(parts[4], System.Globalization.CultureInfo.InvariantCulture),
                                Convert.ToSingle(parts[5], System.Globalization.CultureInfo.InvariantCulture),
                                Convert.ToSingle(parts[7], System.Globalization.CultureInfo.InvariantCulture),
                                Convert.ToSingle(parts[8], System.Globalization.CultureInfo.InvariantCulture));

                            MyTexture2D        atlasTexture = MyTextureManager.GetTexture <MyTexture2D>(textureDir + atlasName);
                            MyTextureAtlasItem item         = new MyTextureAtlasItem(atlasTexture, uv);
                            atlas.Add(name, item);
                        }
                    }

                return(atlas);
            }
            catch (Exception e)
            {
                MyLog.Default.WriteLine("Warning: " + e.ToString());
            }

            return(null);
        }
コード例 #4
0
        public static void LoadTextureAtlas(string[] enumsToStrings, string textureDir, string atlasFile, out string texture, out MyAtlasTextureCoordinate[] textureCoords)
        {
            MyTextureAtlas atlas = LoadTextureAtlas(textureDir, atlasFile);

            textureCoords = new MyAtlasTextureCoordinate[enumsToStrings.Length];
            texture       = null;
            for (int i = 0; i < enumsToStrings.Length; i++)
            {
                MyTextureAtlasItem item = atlas[enumsToStrings[i]];
                textureCoords[i] = new MyAtlasTextureCoordinate(new Vector2(item.UVOffsets.X, item.UVOffsets.Y), new Vector2(item.UVOffsets.Z, item.UVOffsets.W));
                if (texture == null)
                {
                    texture = item.AtlasTexture;
                }
            }
        }
コード例 #5
0
        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)
        {
            var atlas  = new MyTextureAtlas(64);
            var fsPath = Path.Combine(MyFileSystem.ContentPath, atlasFile);

            using (var stream = MyFileSystem.OpenRead(fsPath))
                using (StreamReader sr = new StreamReader(stream))
                {
                    while (!sr.EndOfStream)
                    {
                        string line = sr.ReadLine();

                        if (line.StartsWith("#"))
                        {
                            continue;
                        }
                        if (line.Trim(' ').Length == 0)
                        {
                            continue;
                        }

                        string[] parts = line.Split(new char[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);

                        string name = parts[0];

                        string atlasName = parts[1];

                        Vector4 uv = new Vector4(
                            Convert.ToSingle(parts[4], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[5], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[7], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[8], System.Globalization.CultureInfo.InvariantCulture));

                        string             atlasTexture = textureDir + atlasName;
                        MyTextureAtlasItem item         = new MyTextureAtlasItem(atlasTexture, uv);
                        atlas.Add(name, item);
                    }
                }

            return(atlas);
        }
コード例 #6
0
        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)
        {
            var atlas = new MyTextureAtlas(64);
            var fsPath = Path.Combine(MyFileSystem.ContentPath, atlasFile);

            using (var stream = MyFileSystem.OpenRead(fsPath))
            using (StreamReader sr = new StreamReader(stream))
            {
                while (!sr.EndOfStream)
                {
                    string line = sr.ReadLine();

                    if (line.StartsWith("#"))
                        continue;
                    if (line.Trim(' ').Length == 0)
                        continue;

                    string[] parts = line.Split(new char[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);

                    string name = parts[0];

                    string atlasName = parts[1];

                    Vector4 uv = new Vector4(
                        Convert.ToSingle(parts[4], System.Globalization.CultureInfo.InvariantCulture),
                        Convert.ToSingle(parts[5], System.Globalization.CultureInfo.InvariantCulture),
                        Convert.ToSingle(parts[7], System.Globalization.CultureInfo.InvariantCulture),
                        Convert.ToSingle(parts[8], System.Globalization.CultureInfo.InvariantCulture));

                    string atlasTexture = textureDir + atlasName;
                    MyTextureAtlasItem item = new MyTextureAtlasItem(atlasTexture, uv);
                    atlas.Add(name, item);
                }
            }

            return atlas;
        }
コード例 #7
0
        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)
        {
            var fsPath = Path.Combine(MyFileSystem.ContentPath, atlasFile);
            if (!File.Exists(fsPath))
            {
                MyLog.Default.WriteLine("Warning: " + atlasFile + " not found.");
                return null;
            }

            try
            {
                var atlas = new MyTextureAtlas(64);
                
                using (var file = MyFileSystem.OpenRead(fsPath))
                using (StreamReader sr = new StreamReader(file))
                {
                    while (!sr.EndOfStream)
                    {
                        string line = sr.ReadLine();

                        if (line.StartsWith("#"))
                            continue;
                        if (line.Trim(' ').Length == 0)
                            continue;

                        string[] parts = line.Split(new char[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);

                        string name = parts[0];
                        string atlasName = parts[1];

                        Vector4 uv = new Vector4(
                            Convert.ToSingle(parts[4], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[5], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[7], System.Globalization.CultureInfo.InvariantCulture),
                            Convert.ToSingle(parts[8], System.Globalization.CultureInfo.InvariantCulture));

                        MyTexture2D atlasTexture = MyTextureManager.GetTexture<MyTexture2D>(textureDir + atlasName);
                        MyTextureAtlasItem item = new MyTextureAtlasItem(atlasTexture, uv);
                        atlas.Add(name, item);
                    }
                }

                return atlas;
            }
            catch (Exception e)
            {
                MyLog.Default.WriteLine("Warning: " + e.ToString());
            }

            return null;
        }