예제 #1
0
        protected override YanesdkResult OnReconstruct(object param)
        {
            TextrueConstructAdaptor info = param as TextrueConstructAdaptor;

            ColorKey = info.ColorKey;
            return(Load(info.FileName));
        }
예제 #2
0
        ///	<summary>指定されたファイル名の画像を読み込む。</summary>
        ///	<remarks>
        ///
        /// ここで読み込んだリソースは、VideoCache(→UnmanagedResourceManager)が
        /// いっぱいになると自動的に解放する。
        ///
        /// Bindするときにそのチェックを行ない、解放されていれば自動的に再構築するので
        /// 通常、意識する必要は無いが、解放~再構築されることがあるので
        ///	ここで読み込んだテクスチャのピクセルを直接いじってはいけない。
        ///
        /// 直接いじりたいなら、まずSurfaceに読み込ませて、それをSetSurfaceで設定してから
        /// 使うこと。あるいは、解放されないようにVideoCacheのLimitを調整するか、
        /// 毎フレーム使用するなどして、解放されないようにすること。
        ///	</remarks>
        public YanesdkResult Load(string filename)
        {
            Release();

            using (Surface tmpSurface = new Surface())
            {
                YanesdkResult result = tmpSurface.Load(filename);
                if (result == YanesdkResult.NoError)
                {
                    result = InnerSetSurface(tmpSurface, false);                        // surface,dup/init
                }
                if (result == YanesdkResult.NoError)
                {
                    this.fileName = filename;

                    // もし、ローダー以外からファイルを単に読み込んだだけならば、Reconstructableにしておく。
                    if (constructInfo == null)
                    {
                        constructInfo = new TextrueConstructAdaptor(filename, this.ColorKey);
                    }

                    // リソースサイズが変更になったことをcache systemに通知する
                    // Releaseのときに0なのは通知しているので通知するのは正常終了時のみでok.
                    CacheSystem.OnResourceChanged(this);
                }

                return(result);
            }
        }