/// <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);
                }
            }
        }
Example #2
0
        /// <summary>
        /// フレーム枚の更新処理を行います。
        /// </summary>
        protected virtual void OnEnterFrame(EnterFrameEventArgs e)
        {
            EnterFrame.SafeRaiseEvent(this, e);

            // シナリオの更新を行います。
            if (Scenario != null)
            {
                Scenario.DoEnterFrame(e.ElapsedTime, e.StateObject);
            }

            // 行列の更新
            UpdateTransform();
        }
Example #3
0
        /// <summary>
        /// フレーム毎に呼ばれ、オブジェクトの更新処理を行います。
        /// </summary>
        public void DoEnterFrame(TimeSpan elapsedTime, object state)
        {
            if (RemoveMe)
            {
                return;
            }

            // 初期化はフレームを分けます。
            if (!this.initialized)
            {
                Initialize();

                // 初期化フレームと開始フレームを分ける場合のみ
                // ここで処理を終了します。
                if (!IsFastInitialize)
                {
                    return;
                }
            }

            if (!this.started)
            {
                if (!Start())
                {
                    return;
                }
            }
            else
            {
                // もし時間制限があればその時間経過後はオブジェクトを削除します。
                this.progressSpan += elapsedTime;
                if (this.progressSpan >= Duration && (AutoRemove || !HasChildren()))
                {
                    Kill();
                    return;
                }
            }

            var e = new EnterFrameEventArgs(
                elapsedTime, progressSpan, Duration, state);

            OnEnterFrame(e);

            UpdateChildren(elapsedTime, state);
        }
Example #4
0
        /// <summary>
        /// アニメーションインデックスの更新を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);

            // 必要ならアニメーションインデックスを変更
            switch (AnimationType)
            {
            case AnimationType.Normal:
                AnimationImageIndex = Math.Min(
                    (int)(AnimationImageCount * e.ProgressRate),
                    AnimationImageCount - 1);
                break;

            case AnimationType.Random:
                AnimationImageIndex = MathEx.RandInt(0, AnimationImageCount);
                break;
            }

            // パーティクルの更新を行います。
            if (ParticleRenderer != null)
            {
                ParticleRenderer.OnUpdateFrame(e.ElapsedTime.TotalSeconds);
            }
        }
Example #5
0
        /// <summary>
        /// アニメーションインデックスの更新を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);

            // 必要ならアニメーションインデックスを変更
            switch (AnimationType)
            {
                case AnimationType.Normal:
                    AnimationImageIndex = Math.Min(
                        (int)(AnimationImageCount * e.ProgressRate),
                        AnimationImageCount - 1);
                    break;
                case AnimationType.Random:
                    AnimationImageIndex = MathEx.RandInt(0, AnimationImageCount);
                    break;
            }

            // パーティクルの更新を行います。
            if (ParticleRenderer != null)
            {
                ParticleRenderer.OnUpdateFrame(e.ElapsedTime.TotalSeconds);
            }
        }
Example #6
0
        /// <summary>
        /// 更新処理を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (GLUtil.RenderBuffer)e.StateObject;

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

            if (this.nextBg != null)
            {
                this.nextBg.DoEnterFrame(e.ElapsedTime, renderBuffer);
            }
        }
Example #7
0
        /// <summary>
        /// フレーム枚の更新処理を行います。
        /// </summary>
        protected virtual void OnEnterFrame(EnterFrameEventArgs e)
        {
            EnterFrame.SafeRaiseEvent(this, e);

            // シナリオの更新を行います。
            if (Scenario != null)
            {
                Scenario.DoEnterFrame(e.ElapsedTime, e.StateObject);
            }

            // 行列の更新
            UpdateTransform();
        }
Example #8
0
        /// <summary>
        /// フレーム毎に呼ばれ、オブジェクトの更新処理を行います。
        /// </summary>
        public void DoEnterFrame(TimeSpan elapsedTime, object state)
        {
            if (RemoveMe)
            {
                return;
            }

            // 初期化はフレームを分けます。
            if (!this.initialized)
            {
                Initialize();

                // 初期化フレームと開始フレームを分ける場合のみ
                // ここで処理を終了します。
                if (!IsFastInitialize)
                {
                    return;
                }
            }

            if (!this.started)
            {
                if (!Start()) return;
            }
            else
            {
                // もし時間制限があればその時間経過後はオブジェクトを削除します。
                this.progressSpan += elapsedTime;
                if (this.progressSpan >= Duration && (AutoRemove || !HasChildren()))
                {
                    Kill();
                    return;
                }
            }

            var e = new EnterFrameEventArgs(
                elapsedTime, progressSpan, Duration, state);
            OnEnterFrame(e);

            UpdateChildren(elapsedTime, state);
        }
Example #9
0
        /// <summary>
        /// 毎フレーム呼ばれる更新用メソッドです。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            base.OnEnterFrame(e);
            var renderBuffer = (GLUtil.RenderBuffer)e.StateObject;

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

            // 評価値を表示する場合は、数字の描画を行います。
            if (IsVisible && IsVisibleValue)
            {
                AddRenderValue(renderBuffer, CurrentScore);
            }
        }
Example #10
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);
                }
            }
        }
Example #11
0
        /// <summary>
        /// フレーム毎の処理を行います。
        /// </summary>
        protected override void OnEnterFrame(EnterFrameEventArgs e)
        {
            // パーティクルの更新前にRenderBufferを設定します。
            var renderBuffer = (GLUtil.RenderBuffer)e.StateObject;
            this.renderer.RenderBuffer = renderBuffer;

            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(
                    Texture, Blend, color,
                    Mesh, Transform, InheritedZOrder);
            }
        }