add Renderer::CheckVisibility()
This commit is contained in:
parent
ab9ffb5e79
commit
47be1dc413
|
|
@ -33,8 +33,9 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGuiLayer::OnRender()
|
void ImGuiLayer::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
|
PrepareRender(renderer);
|
||||||
for (const auto& pipeline : pipelines_)
|
for (const auto& pipeline : pipelines_)
|
||||||
{
|
{
|
||||||
pipeline.second();
|
pipeline.second();
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace kiwano
|
||||||
void RemoveAllItems();
|
void RemoveAllItems();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Map<String, ImGuiPipeline> pipelines_;
|
Map<String, ImGuiPipeline> pipelines_;
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ namespace kiwano
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Actor::Render()
|
void Actor::Render(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (!visible_)
|
if (!visible_)
|
||||||
return;
|
return;
|
||||||
|
|
@ -91,8 +91,7 @@ namespace kiwano
|
||||||
|
|
||||||
if (children_.is_empty())
|
if (children_.is_empty())
|
||||||
{
|
{
|
||||||
PrepareRender();
|
OnRender(renderer);
|
||||||
OnRender();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -103,21 +102,26 @@ namespace kiwano
|
||||||
if (child->GetZOrder() >= 0)
|
if (child->GetZOrder() >= 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
child->Render();
|
child->Render(renderer);
|
||||||
child = child->next_item().get();
|
child = child->next_item().get();
|
||||||
}
|
}
|
||||||
|
|
||||||
PrepareRender();
|
OnRender(renderer);
|
||||||
OnRender();
|
|
||||||
|
|
||||||
while (child)
|
while (child)
|
||||||
{
|
{
|
||||||
child->Render();
|
child->Render(renderer);
|
||||||
child = child->next_item().get();
|
child = child->next_item().get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actor::PrepareRender(Renderer* renderer)
|
||||||
|
{
|
||||||
|
renderer->SetTransform(transform_matrix_);
|
||||||
|
renderer->SetOpacity(displayed_opacity_);
|
||||||
|
}
|
||||||
|
|
||||||
void Actor::RenderBorder()
|
void Actor::RenderBorder()
|
||||||
{
|
{
|
||||||
if (show_border_)
|
if (show_border_)
|
||||||
|
|
@ -656,12 +660,4 @@ namespace kiwano
|
||||||
return GetBounds().ContainsPoint(local);
|
return GetBounds().ContainsPoint(local);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void VisualActor::PrepareRender()
|
|
||||||
{
|
|
||||||
auto renderer = Renderer::GetInstance();
|
|
||||||
renderer->SetTransform(transform_matrix_);
|
|
||||||
renderer->SetOpacity(displayed_opacity_);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
class Director;
|
class Director;
|
||||||
|
class Renderer;
|
||||||
|
|
||||||
// 실<>
|
// 실<>
|
||||||
class KGE_API Actor
|
class KGE_API Actor
|
||||||
|
|
@ -51,7 +52,7 @@ namespace kiwano
|
||||||
virtual void OnUpdate(Duration dt) { KGE_UNUSED(dt); }
|
virtual void OnUpdate(Duration dt) { KGE_UNUSED(dt); }
|
||||||
|
|
||||||
// 斡횡실<ED9AA1>
|
// 斡횡실<ED9AA1>
|
||||||
virtual void OnRender() {}
|
virtual void OnRender(Renderer* renderer) { KGE_UNUSED(renderer); }
|
||||||
|
|
||||||
// 삿혤鞫刻榴檄
|
// 삿혤鞫刻榴檄
|
||||||
bool IsVisible() const { return visible_; }
|
bool IsVisible() const { return visible_; }
|
||||||
|
|
@ -135,10 +136,10 @@ namespace kiwano
|
||||||
Transform GetTransform() const { return transform_; }
|
Transform GetTransform() const { return transform_; }
|
||||||
|
|
||||||
// 삿혤긋움
|
// 삿혤긋움
|
||||||
Rect GetBounds() const;
|
virtual Rect GetBounds() const;
|
||||||
|
|
||||||
// 삿혤棍학관鍋분
|
// 삿혤棍학관鍋분
|
||||||
Rect GetBoundingBox() const;
|
virtual Rect GetBoundingBox() const;
|
||||||
|
|
||||||
// 삿혤랗郭긴뻣앤黎
|
// 삿혤랗郭긴뻣앤黎
|
||||||
Matrix const& GetTransformMatrix() const;
|
Matrix const& GetTransformMatrix() const;
|
||||||
|
|
@ -379,6 +380,9 @@ namespace kiwano
|
||||||
// 닒만실<EBA78C>盧뇜
|
// 닒만실<EBA78C>盧뇜
|
||||||
void RemoveFromParent();
|
void RemoveFromParent();
|
||||||
|
|
||||||
|
// 事件分发
|
||||||
|
void Dispatch(Event& evt) override;
|
||||||
|
|
||||||
// 董界실<E7958C>뫘劤
|
// 董界실<E7958C>뫘劤
|
||||||
inline void PauseUpdating() { update_pausing_ = true; }
|
inline void PauseUpdating() { update_pausing_ = true; }
|
||||||
|
|
||||||
|
|
@ -403,16 +407,12 @@ namespace kiwano
|
||||||
float anchor_y
|
float anchor_y
|
||||||
);
|
);
|
||||||
|
|
||||||
public:
|
|
||||||
// 事件分发
|
|
||||||
void Dispatch(Event& evt) override;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void PrepareRender() {}
|
|
||||||
|
|
||||||
virtual void Update(Duration dt);
|
virtual void Update(Duration dt);
|
||||||
|
|
||||||
virtual void Render();
|
virtual void Render(Renderer* renderer);
|
||||||
|
|
||||||
|
void PrepareRender(Renderer* renderer);
|
||||||
|
|
||||||
void RenderBorder();
|
void RenderBorder();
|
||||||
|
|
||||||
|
|
@ -451,14 +451,4 @@ namespace kiwano
|
||||||
mutable Matrix transform_matrix_inverse_;
|
mutable Matrix transform_matrix_inverse_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 可视角色
|
|
||||||
// 在渲染前处理二维旋转矩阵和透明度
|
|
||||||
class KGE_API VisualActor
|
|
||||||
: public Actor
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual void PrepareRender() override;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ namespace kiwano
|
||||||
cache_expired_ = true;
|
cache_expired_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas::OnRender()
|
void Canvas::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (cache_expired_)
|
if (cache_expired_)
|
||||||
{
|
{
|
||||||
|
|
@ -95,8 +95,10 @@ namespace kiwano
|
||||||
|
|
||||||
if (bitmap_cached_)
|
if (bitmap_cached_)
|
||||||
{
|
{
|
||||||
|
PrepareRender(renderer);
|
||||||
|
|
||||||
Rect bitmap_rect(0.f, 0.f, bitmap_cached_->GetSize().width, bitmap_cached_->GetSize().height);
|
Rect bitmap_rect(0.f, 0.f, bitmap_cached_->GetSize().width, bitmap_cached_->GetSize().height);
|
||||||
Renderer::GetInstance()->DrawBitmap(
|
renderer->DrawBitmap(
|
||||||
bitmap_cached_,
|
bitmap_cached_,
|
||||||
bitmap_rect,
|
bitmap_rect,
|
||||||
bitmap_rect
|
bitmap_rect
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
// 画布
|
// 画布
|
||||||
class KGE_API Canvas
|
class KGE_API Canvas
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Canvas();
|
Canvas();
|
||||||
|
|
@ -211,7 +211,7 @@ namespace kiwano
|
||||||
// 导出为图片
|
// 导出为图片
|
||||||
ImagePtr ExportToImage() const;
|
ImagePtr ExportToImage() const;
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ComPtr<ID2D1Bitmap> const& GetBitmap() const;
|
ComPtr<ID2D1Bitmap> const& GetBitmap() const;
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
DebugNode::DebugNode()
|
DebugActor::DebugActor()
|
||||||
: background_color_(0.0f, 0.0f, 0.0f, 0.7f)
|
: background_color_(0.0f, 0.0f, 0.0f, 0.7f)
|
||||||
{
|
{
|
||||||
SetName(L"kiwano-debug-actor");
|
SetName(L"kiwano-debug-actor");
|
||||||
|
|
@ -54,13 +54,13 @@ namespace kiwano
|
||||||
AddListener(Event::MouseOut, [=](const Event&) { SetOpacity(1.f); });
|
AddListener(Event::MouseOut, [=](const Event&) { SetOpacity(1.f); });
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugNode::~DebugNode()
|
DebugActor::~DebugActor()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugNode::OnRender()
|
void DebugActor::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
auto renderer = Renderer::GetInstance();
|
PrepareRender(renderer);
|
||||||
|
|
||||||
renderer->GetSolidColorBrush()->SetColor(DX::ConvertToColorF(background_color_));
|
renderer->GetSolidColorBrush()->SetColor(DX::ConvertToColorF(background_color_));
|
||||||
renderer->GetD2DDeviceResources()->GetDeviceContext()->FillRoundedRectangle(
|
renderer->GetD2DDeviceResources()->GetDeviceContext()->FillRoundedRectangle(
|
||||||
|
|
@ -69,7 +69,7 @@ namespace kiwano
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugNode::OnUpdate(Duration dt)
|
void DebugActor::OnUpdate(Duration dt)
|
||||||
{
|
{
|
||||||
KGE_UNUSED(dt);
|
KGE_UNUSED(dt);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,15 +23,15 @@
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
class KGE_API DebugNode
|
class KGE_API DebugActor
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DebugNode();
|
DebugActor();
|
||||||
|
|
||||||
virtual ~DebugNode();
|
virtual ~DebugActor();
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
void OnUpdate(Duration dt) override;
|
void OnUpdate(Duration dt) override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ namespace kiwano
|
||||||
|
|
||||||
void GifSprite::Update(Duration dt)
|
void GifSprite::Update(Duration dt)
|
||||||
{
|
{
|
||||||
VisualActor::Update(dt);
|
Actor::Update(dt);
|
||||||
|
|
||||||
if (image_ && animating_)
|
if (image_ && animating_)
|
||||||
{
|
{
|
||||||
|
|
@ -100,12 +100,14 @@ namespace kiwano
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GifSprite::OnRender()
|
void GifSprite::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (frame_to_render_)
|
if (frame_to_render_ && renderer->CheckVisibility(size_, transform_matrix_))
|
||||||
{
|
{
|
||||||
|
PrepareRender(renderer);
|
||||||
|
|
||||||
Rect bounds = GetBounds();
|
Rect bounds = GetBounds();
|
||||||
Renderer::GetInstance()->DrawBitmap(frame_to_render_, bounds, bounds);
|
renderer->DrawBitmap(frame_to_render_, bounds, bounds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
class KGE_API GifSprite
|
class KGE_API GifSprite
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using LoopDoneCallback = Function<void(int)>;
|
using LoopDoneCallback = Function<void(int)>;
|
||||||
|
|
@ -67,7 +67,7 @@ namespace kiwano
|
||||||
|
|
||||||
inline DoneCallback GetDoneCallback() const { return done_cb_; }
|
inline DoneCallback GetDoneCallback() const { return done_cb_; }
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Update(Duration dt) override;
|
void Update(Duration dt) override;
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect ShapeActor::GetBoundingBox()
|
Rect ShapeActor::GetBounds() const
|
||||||
{
|
{
|
||||||
if (!geo_)
|
if (!geo_)
|
||||||
return Rect{};
|
return Rect{};
|
||||||
|
|
@ -52,6 +52,17 @@ namespace kiwano
|
||||||
return Rect{ rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top };
|
return Rect{ rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rect ShapeActor::GetBoundingBox() const
|
||||||
|
{
|
||||||
|
if (!geo_)
|
||||||
|
return Rect{};
|
||||||
|
|
||||||
|
D2D1_RECT_F rect;
|
||||||
|
// no matter it failed or not
|
||||||
|
geo_->GetBounds(DX::ConvertToMatrix3x2F(transform_matrix_), &rect);
|
||||||
|
return Rect{ rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top };
|
||||||
|
}
|
||||||
|
|
||||||
float ShapeActor::GetLength()
|
float ShapeActor::GetLength()
|
||||||
{
|
{
|
||||||
float length = 0.f;
|
float length = 0.f;
|
||||||
|
|
@ -125,16 +136,18 @@ namespace kiwano
|
||||||
outline_join_ = outline_join;
|
outline_join_ = outline_join;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShapeActor::OnRender()
|
void ShapeActor::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (geo_)
|
if (geo_)
|
||||||
{
|
{
|
||||||
Renderer::GetInstance()->FillGeometry(
|
PrepareRender(renderer);
|
||||||
|
|
||||||
|
renderer->FillGeometry(
|
||||||
geo_,
|
geo_,
|
||||||
fill_color_
|
fill_color_
|
||||||
);
|
);
|
||||||
|
|
||||||
Renderer::GetInstance()->DrawGeometry(
|
renderer->DrawGeometry(
|
||||||
geo_,
|
geo_,
|
||||||
stroke_color_,
|
stroke_color_,
|
||||||
stroke_width_,
|
stroke_width_,
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
// 랗郭暠近실<E8BF91>
|
// 랗郭暠近실<E8BF91>
|
||||||
class KGE_API ShapeActor
|
class KGE_API ShapeActor
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ShapeActor();
|
ShapeActor();
|
||||||
|
|
@ -49,8 +49,11 @@ namespace kiwano
|
||||||
// 삿혤窟係宮슥湳駕
|
// 삿혤窟係宮슥湳駕
|
||||||
StrokeStyle SetOutlineJoinStyle() const { return outline_join_; }
|
StrokeStyle SetOutlineJoinStyle() const { return outline_join_; }
|
||||||
|
|
||||||
|
// »ñÈ¡±ß½ç
|
||||||
|
Rect GetBounds() const override;
|
||||||
|
|
||||||
// 삿혤棍학관鍋분
|
// 삿혤棍학관鍋분
|
||||||
Rect GetBoundingBox();
|
Rect GetBoundingBox() const override;
|
||||||
|
|
||||||
// 털뙤暠近角뤠관벵듐
|
// 털뙤暠近角뤠관벵듐
|
||||||
bool ContainsPoint(
|
bool ContainsPoint(
|
||||||
|
|
@ -96,7 +99,7 @@ namespace kiwano
|
||||||
// 삿혤近榴
|
// 삿혤近榴
|
||||||
inline ComPtr<ID2D1Geometry> GetGeometry() const { return geo_; }
|
inline ComPtr<ID2D1Geometry> GetGeometry() const { return geo_; }
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Color fill_color_;
|
Color fill_color_;
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,12 @@ namespace kiwano
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sprite::OnRender()
|
void Sprite::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (frame_)
|
if (frame_ && renderer->CheckVisibility(size_, transform_matrix_))
|
||||||
{
|
{
|
||||||
Renderer::GetInstance()->DrawBitmap(frame_->GetImage()->GetBitmap(), frame_->GetCropRect(), GetBounds());
|
PrepareRender(renderer);
|
||||||
|
renderer->DrawBitmap(frame_->GetImage()->GetBitmap(), frame_->GetCropRect(), GetBounds());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
// ¾«Áé
|
// ¾«Áé
|
||||||
class KGE_API Sprite
|
class KGE_API Sprite
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Sprite();
|
Sprite();
|
||||||
|
|
@ -63,7 +63,7 @@ namespace kiwano
|
||||||
void SetFrame(FramePtr frame);
|
void SetFrame(FramePtr frame);
|
||||||
|
|
||||||
// äÖȾ¾«Áé
|
// äÖȾ¾«Áé
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
FramePtr frame_;
|
FramePtr frame_;
|
||||||
|
|
|
||||||
|
|
@ -297,14 +297,14 @@ namespace kiwano
|
||||||
style_.outline_stroke = outline_stroke;
|
style_.outline_stroke = outline_stroke;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Text::OnRender()
|
void Text::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
UpdateLayout();
|
UpdateLayout();
|
||||||
|
|
||||||
if (text_layout_)
|
if (text_layout_ && renderer->CheckVisibility(layout_size_, transform_matrix_))
|
||||||
{
|
{
|
||||||
auto renderer = Renderer::GetInstance();
|
PrepareRender(renderer);
|
||||||
renderer->SetTextStyle(
|
renderer->SetTextStyle(
|
||||||
GetDisplayedOpacity(),
|
GetDisplayedOpacity(),
|
||||||
style_.color,
|
style_.color,
|
||||||
style_.outline,
|
style_.outline,
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ namespace kiwano
|
||||||
{
|
{
|
||||||
// Îı¾
|
// Îı¾
|
||||||
class KGE_API Text
|
class KGE_API Text
|
||||||
: public VisualActor
|
: public Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Text();
|
Text();
|
||||||
|
|
@ -203,7 +203,7 @@ namespace kiwano
|
||||||
TextStyle const& style
|
TextStyle const& style
|
||||||
);
|
);
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void UpdateLayout() const;
|
void UpdateLayout() const;
|
||||||
|
|
@ -218,4 +218,4 @@ namespace kiwano
|
||||||
mutable ComPtr<IDWriteTextFormat> text_format_;
|
mutable ComPtr<IDWriteTextFormat> text_format_;
|
||||||
mutable ComPtr<IDWriteTextLayout> text_layout_;
|
mutable ComPtr<IDWriteTextLayout> text_layout_;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -99,10 +99,8 @@ namespace kiwano
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Transition::Render()
|
void Transition::Render(Renderer* renderer)
|
||||||
{
|
{
|
||||||
auto renderer = Renderer::GetInstance();
|
|
||||||
|
|
||||||
if (out_scene_)
|
if (out_scene_)
|
||||||
{
|
{
|
||||||
renderer->PushClip(
|
renderer->PushClip(
|
||||||
|
|
@ -111,7 +109,7 @@ namespace kiwano
|
||||||
);
|
);
|
||||||
renderer->PushLayer(out_layer_, out_layer_prop_);
|
renderer->PushLayer(out_layer_, out_layer_prop_);
|
||||||
|
|
||||||
out_scene_->Render();
|
out_scene_->Render(renderer);
|
||||||
|
|
||||||
renderer->PopLayer();
|
renderer->PopLayer();
|
||||||
renderer->PopClip();
|
renderer->PopClip();
|
||||||
|
|
@ -125,7 +123,7 @@ namespace kiwano
|
||||||
);
|
);
|
||||||
renderer->PushLayer(in_layer_, in_layer_prop_);
|
renderer->PushLayer(in_layer_, in_layer_prop_);
|
||||||
|
|
||||||
in_scene_->Render();
|
in_scene_->Render(renderer);
|
||||||
|
|
||||||
renderer->PopLayer();
|
renderer->PopLayer();
|
||||||
renderer->PopClip();
|
renderer->PopClip();
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
class Director;
|
class Director;
|
||||||
|
class Renderer;
|
||||||
|
|
||||||
// 舞台过渡
|
// 舞台过渡
|
||||||
class KGE_API Transition
|
class KGE_API Transition
|
||||||
|
|
@ -49,7 +50,7 @@ namespace kiwano
|
||||||
|
|
||||||
virtual void Update(Duration dt);
|
virtual void Update(Duration dt);
|
||||||
|
|
||||||
virtual void Render();
|
virtual void Render(Renderer* renderer);
|
||||||
|
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
|
class Renderer;
|
||||||
|
|
||||||
class KGE_API Component
|
class KGE_API Component
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -36,7 +38,7 @@ namespace kiwano
|
||||||
virtual void AfterUpdate() {}
|
virtual void AfterUpdate() {}
|
||||||
|
|
||||||
virtual void BeforeRender() {}
|
virtual void BeforeRender() {}
|
||||||
virtual void OnRender() {}
|
virtual void OnRender(Renderer*) {}
|
||||||
virtual void AfterRender() {}
|
virtual void AfterRender() {}
|
||||||
|
|
||||||
virtual void HandleEvent(Event&) {}
|
virtual void HandleEvent(Event&) {}
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ namespace kiwano
|
||||||
if (show)
|
if (show)
|
||||||
{
|
{
|
||||||
if (!debug_actor_)
|
if (!debug_actor_)
|
||||||
debug_actor_ = new DebugNode;
|
debug_actor_ = new DebugActor;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -124,19 +124,21 @@ namespace kiwano
|
||||||
debug_actor_->Update(dt);
|
debug_actor_->Update(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Director::OnRender()
|
void Director::OnRender(Renderer* renderer)
|
||||||
{
|
{
|
||||||
if (transition_)
|
if (transition_)
|
||||||
{
|
{
|
||||||
transition_->Render();
|
transition_->Render(renderer);
|
||||||
}
|
}
|
||||||
else if (curr_scene_)
|
else if (curr_scene_)
|
||||||
{
|
{
|
||||||
curr_scene_->Render();
|
curr_scene_->Render(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug_actor_)
|
if (debug_actor_)
|
||||||
debug_actor_->Render();
|
{
|
||||||
|
debug_actor_->Render(renderer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Director::AfterRender()
|
void Director::AfterRender()
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ namespace kiwano
|
||||||
|
|
||||||
void OnUpdate(Duration dt) override;
|
void OnUpdate(Duration dt) override;
|
||||||
|
|
||||||
void OnRender() override;
|
void OnRender(Renderer* renderer) override;
|
||||||
|
|
||||||
void AfterRender() override;
|
void AfterRender() override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,9 +267,10 @@ namespace kiwano
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rendering
|
// Rendering
|
||||||
|
Renderer* renderer = Renderer::GetInstance();
|
||||||
for (Component* c : components_)
|
for (Component* c : components_)
|
||||||
{
|
{
|
||||||
c->OnRender();
|
c->OnRender(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// After render
|
// After render
|
||||||
|
|
|
||||||
|
|
@ -484,4 +484,11 @@ namespace kiwano
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Renderer::CheckVisibility(Size const& content_size, Matrix const& transform)
|
||||||
|
{
|
||||||
|
return Rect{ Point{}, output_size_ }.Intersects(
|
||||||
|
transform.Transform(Rect{ Point{}, content_size })
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,11 @@ namespace kiwano
|
||||||
UINT height
|
UINT height
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bool CheckVisibility(
|
||||||
|
Size const& content_size,
|
||||||
|
Matrix const& transform
|
||||||
|
);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SetupComponent() override;
|
void SetupComponent() override;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue