/// <summary>
        /// 評価値画像を描画リストに加えます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (GL.RenderBuffer)e.StateObject;

            if (IsVisible)
            {
                var imageSet = ImageSet;
                if (imageSet == null)
                {
                    // 評価値画像のセットがない場合は、何も表示しません。
                    return;
                }

                var value     = CurrentScore.Value;
                var imagePath = imageSet.GetSelectedImagePath(value);
                if (string.IsNullOrEmpty(imagePath))
                {
                    // 評価値画像がない場合も、何もしません。
                    return;
                }

                // 描画領域を設定します。
                var texture = GL.TextureCache.GetTexture(imagePath);
                if (texture != null && texture.IsAvailable)
                {
                    // 描画領域はこのクラスの外側で指定します。
                    var rate   = (float)texture.OriginalHeight / texture.OriginalWidth;
                    var bounds = new RectangleF(-0.5f, 0.5f - rate, 1.0f, rate);

                    renderBuffer.AddRender(
                        texture, BlendType.Diffuse, bounds, Transform, 0.0);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 各フレームごとに呼ばれます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (RenderBuffer)e.StateObject;

            if (IsVisible)
            {
                // 盤
                AddRenderBoard(renderBuffer);

                // 先手と後手の駒台と駒箱
                for (var index = 0; index < 3; ++index)
                {
                    AddRenderPieceBox(renderBuffer, index);
                }

                // 盤上の駒をすべて描画登録します。
                AddRenderPieceAll(renderBuffer);

                if (Math.Abs(AutoPlayOpacity) <= 1.0e-6)
                {
                    // 候補手となる指し手のリストを表示します。
                    AddRenderArrowMoveList(renderBuffer);
                }
                else
                {
                    // 自動再生時のエフェクトを描画します。
                    AddRenderAutoPlayEffect(renderBuffer);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// フレーム毎の処理を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            var renderBuffer = (RenderBuffer)e.StateObject;

            base.OnEnterFrame(e);

            // 必要ならテクスチャの更新を行います。
            if (this.needToUpdateTexture)
            {
                UpdateTexture();
                this.needToUpdateTexture = false;
            }

            if (Mesh != null)
            {
                // 頂点カラーを算出します。
                var a     = (byte)(Color.A * InheritedOpacity);
                var color = Color.FromArgb(a, Color);

                // 描画用オブジェクトとして登録します。
                renderBuffer.AddRender(
                    TextTexture.Texture, Blend, color,
                    Mesh, Transform, InheritedZOrder);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 各フレームごとに呼ばれます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (GLUtil.RenderBuffer)e.StateObject;

            // 自動再生の更新を行います。
            if (this.autoPlay != null)
            {
                if (!this.autoPlay.Update(e.ElapsedTime))
                {
                    StopAutoPlay();
                }
            }

            if (IsVisible)
            {
                // 盤
                AddRenderBoard(renderBuffer);

                // 先手と後手の駒台と駒箱
                for (var index = 0; index < 3; ++index)
                {
                    AddRenderPieceBox(renderBuffer, index);
                }

                // 盤上の駒をすべて描画登録します。
                AddRenderPieceAll(renderBuffer);

                // 自動再生時のエフェクトを描画します。
                if (AutoPlayState == AutoPlayState.Playing)
                {
                    AddRenderAutoPlayEffect(renderBuffer);
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 各フレームごとに呼ばれます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (GLUtil.RenderBuffer)e.StateObject;

            if (IsVisible)
            {
                // 盤
                AddRenderBoard(renderBuffer);

                // 先手と後手の駒台と駒箱
                for (var index = 0; index < 3; ++index)
                {
                    AddRenderPieceBox(renderBuffer, index);
                }

                // 盤上の駒をすべて描画登録します。
                AddRenderPieceAll(renderBuffer);

                // 自動再生時のエフェクトを描画します。
                if (AutoPlayOpacity > 0.0)
                {
                    AddRenderAutoPlayEffect(renderBuffer);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 更新処理を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (OpenGL.RenderBuffer)e.StateObject;

            if (this.prevBg != null)
            {
                this.prevBg.DoEnterFrame(e.ElapsedTime, renderBuffer);
            }

            if (this.nextBg != null)
            {
                this.nextBg.DoEnterFrame(e.ElapsedTime, renderBuffer);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 毎フレーム呼ばれる更新用メソッドです。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (RenderBuffer)e.StateObject;

            // 評価値の更新を行います。
            if (this.manager.InternalObj != null)
            {
                this.manager.InternalObj.CurrentScore = CurrentScore;
            }

            // 評価値を表示する場合は、数字の描画を行います。
            if (IsVisible && IsVisibleValue)
            {
                AddRenderValue(renderBuffer, CurrentScore);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// フレーム毎に呼ばれます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);

            if (AnimationType == AnimationType.Normal)
            {
                AnimationImageIndex = Math.Min(
                    (int)(AnimationImageCount * e.ProgressRate),
                    AnimationImageCount - 1);
            }
            else
            {
                AnimationImageIndex = MathEx.RandInt(0, AnimationImageCount);
            }

            this.renderer.OnUpdateFrame(e.ElapsedTime.TotalSeconds);
            this.renderer.OnRenderFrame();
        }
Ejemplo n.º 9
0
        /// <summary>
        /// フレーム毎に呼ばれます。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);

            if (AnimationType == AnimationType.Normal)
            {
                AnimationImageIndex = Math.Min(
                    (int)(AnimationImageCount * e.ProgressRate),
                    AnimationImageCount - 1);
            }
            else
            {
                AnimationImageIndex = MathEx.RandInt(0, AnimationImageCount);
            }

            foreach (var emitter in this.renderer.Emitters)
            {
                emitter.OnUpdateFrame(e.ElapsedTime.TotalSeconds);
            }
        }