Exemplo n.º 1
0
 public static Bitmap LoadTexture(string textureName)
 {
     using (var stream = ManifestResourceManager.LoadFromResources($"Textures/{textureName}.bmp"))
     {
         return(new Bitmap(stream));
     }
 }
Exemplo n.º 2
0
        public override void PreApplicationStartInitialize()
        {
            //初始化策略管理器
            StrategyManager = new StrategyManager();
            //初始化插件管理器
            PlusManager = new PlusManager();
            //【优先加载框架策略】加载框架策略作为默认策略,如果插件实现了该策略,则会被覆盖
            //默认集成了日志策略
            PlusManager.LoadPlusStrategys(this.GetType().Assembly);
            //初始化资源压缩类
            ResourceMinHelper = new ResourceMinHelper();
            //初始化嵌入资源管理器
            ManifestResourceManager = new ManifestResourceManager();
            //初始化资源管理辅助类
            CurrentResourceHelper = new ResourceHelper();
            //初始化配置管理器
            ConfigManager = new ConfigManager();
            //加载程序集
            LoadAssemblies();

            GlobalConfigurationManager.MapHttpAttributeRoutes();
            //初始化OData
            GlobalConfigurationManager.InitializeODATA();
            //初始化WebApi
            GlobalConfigurationManager.InitializeWebAPI();
            //初始化MVC插件引擎
            GlobalConfigurationManager.InitializeMVCEngines();
        }
Exemplo n.º 3
0
 public void LoadMap(string name)
 {
     if (CurrentMap != null)
     {
         Dispose();
     }
     CurrentMap = ManifestResourceManager.LoadFromResources($"{name}.map");
     Reader     = new StreamReader(CurrentMap);
 }
Exemplo n.º 4
0
 public static Bitmap LoadCustomTexture(string textureName)
 {
     using (var stream = ManifestResourceManager.LoadFromResources($"Textures/{textureName}"))
     {
         using (var image = Image.FromStream(stream))
         {
             return(new Bitmap(image));
         }
     }
 }
Exemplo n.º 5
0
        private static uint Create(string shaderName, bool lookUpInternally = false)
        {
            var code = (string)null;

            if (lookUpInternally)
            {
                code = ManifestResourceManager.LoadInternalShader(shaderName);
            }
            else
            {
                code = ManifestResourceManager.LoadShader(shaderName);
            }
            return(Build(code));
        }
Exemplo n.º 6
0
        public static async Task <GeometricShape> LoadModel(string model, bool textured = true)
        {
            var positions = new List <vec3>(1024);
            var color     = new vec3(0.0f, 0.0f, 0.0f);
            var normals   = new List <vec3>(1024);
            var uvs       = textured ? new List <vec2>(1024) : null;

            var vertices = new List <vertex>(1024);
            var indices  = new List <int>(1024);
            var cache    = new Dictionary <string, int>();

            using (var stream = ManifestResourceManager.LoadFromResources($"Models/{model}.obj"))
            {
                using (var reader = new StreamReader(stream))
                {
                    while (!reader.EndOfStream)
                    {
                        var line = await reader.ReadLineAsync();

                        if (string.IsNullOrWhiteSpace(line))
                        {
                            continue;
                        }

                        if (line[0] == '#')
                        {
                            continue;
                        }

                        if (line.StartsWith("mtllib"))
                        {
                            continue;
                        }

                        if (line[0] == 'o')
                        {
                            continue;
                        }

                        if (line.StartsWith("usemtl"))
                        {
                            continue;
                        }

                        if (line[0] == 's')
                        {
                            continue;
                        }

                        switch (line[0])
                        {
                        case 'v':
                        {
                            var pieces = line.Split(' ');

                            var vector = new vec3
                                         (
                                Convert.ToSingle(pieces[1], CultureInfo.InvariantCulture),
                                Convert.ToSingle(pieces[2], CultureInfo.InvariantCulture),
                                pieces.Length > 3 ?
                                Convert.ToSingle(pieces[3], CultureInfo.InvariantCulture)
                                                                                        :
                                0.0f
                                         );

                            switch (line[1])
                            {
                            case ' ': positions.Add(vector); break;

                            case 'n': normals.Add(vector); break;

                            case 't': uvs?.Add(new vec2(vector.x, 1.0f - vector.y)); break;

                            default: break;
                            }
                        }
                        break;

                        case 'f':
                        {
                            var pieces = line.Split(' ');

                            void UseVertex(string vertex)
                            {
                                var data = vertex.Split('/');

                                var pos = Convert.ToInt32(data[0]) - 1;
                                var tex = Convert.ToInt32(data[1]) - 1;
                                var nor = Convert.ToInt32(data[2]) - 1;

                                var vert = new vertex(positions[pos], color, normals[nor], textured ? uvs[tex] : vector2.zero);
                                var desc = vert.ToString();

                                if (cache.TryGetValue(desc, out var index))
                                {
                                    indices.Add(index);
                                }
                                else
                                {
                                    index = vertices.Count;
                                    vertices.Add(vert);
                                    indices.Add(index);
                                    cache.Add(desc, index);
                                }
                            }

                            UseVertex(pieces[1]);
                            UseVertex(pieces[2]);
                            UseVertex(pieces[3]);
                        }
                        break;

                        default: break;
                        }
                    }
                }
            }

            return(new GeometricShape(new ShapeData(vertices.ToArray(), indices.ToArray())));
        }
Exemplo n.º 7
0
 public static Stream LoadFromResources(string resource)
 {
     return(ManifestResourceManager.LoadResource($"Resources/{resource}"));
 }
Exemplo n.º 8
0
 public static string LoadShader(string shaderName)
 {
     return(ManifestResourceManager.LoadFile($"Shaders/{shaderName}.glsl"));
 }