Exemple #1
0
        public static (IModelMotion, IKingdomTexture[]) BBSMeshLoader(GraphicsDevice graphics, string FilePath, IModelMotion Model, IKingdomTexture[] Textures)
        {
            const float Scale = 100.0f;
            var         file  = File.OpenRead(FilePath);
            Pmo         pmo   = Pmo.Read(file);

            Model = new PmoParser(pmo, Scale);

            List <Tim2KingdomTexture> BbsTextures = new List <Tim2KingdomTexture>();

            Textures = new IKingdomTexture[pmo.header.TextureCount];

            for (int i = 0; i < pmo.header.TextureCount; i++)
            {
                BbsTextures.Add(new Tim2KingdomTexture(pmo.texturesData[i], graphics));
                Textures[i] = BbsTextures[i];
            }

            return(Model, Textures);
        }
Exemple #2
0
        public static void SetRenderTexture(this KingdomShader shader, EffectPass pass, IKingdomTexture texture)
        {
            if (shader.Texture0 != texture.Texture2D)
            {
                shader.Texture0 = texture.Texture2D;
                switch (texture.AddressU)
                {
                case ModelTexture.TextureWrapMode.Clamp:
                    shader.TextureRegionU   = KingdomShader.DefaultTextureRegion;
                    shader.TextureWrapModeU = TextureWrapMode.Clamp;
                    break;

                case ModelTexture.TextureWrapMode.Repeat:
                    shader.TextureRegionU   = KingdomShader.DefaultTextureRegion;
                    shader.TextureWrapModeU = TextureWrapMode.Repeat;
                    break;

                case ModelTexture.TextureWrapMode.RegionClamp:
                    shader.TextureRegionU   = texture.RegionU;
                    shader.TextureWrapModeU = TextureWrapMode.Clamp;
                    break;

                case ModelTexture.TextureWrapMode.RegionRepeat:
                    shader.TextureRegionU   = texture.RegionU;
                    shader.TextureWrapModeU = TextureWrapMode.Repeat;
                    break;
                }
                switch (texture.AddressV)
                {
                case ModelTexture.TextureWrapMode.Clamp:
                    shader.TextureRegionV   = KingdomShader.DefaultTextureRegion;
                    shader.TextureWrapModeV = TextureWrapMode.Clamp;
                    break;

                case ModelTexture.TextureWrapMode.Repeat:
                    shader.TextureRegionV   = KingdomShader.DefaultTextureRegion;
                    shader.TextureWrapModeV = TextureWrapMode.Repeat;
                    break;

                case ModelTexture.TextureWrapMode.RegionClamp:
                    shader.TextureRegionV   = texture.RegionV;
                    shader.TextureWrapModeV = TextureWrapMode.Clamp;
                    break;

                case ModelTexture.TextureWrapMode.RegionRepeat:
                    shader.TextureRegionV   = texture.RegionV;
                    shader.TextureWrapModeV = TextureWrapMode.Repeat;
                    break;
                }

                pass.Apply();
            }
        }