/// <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); } } }
/// <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); } } }
/// <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); } }
/// <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); } } }
/// <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); } } }
/// <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); } }
/// <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); } }
/// <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(); }
/// <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); } }