Fix missing UICanvas linkage in prefab preview

#218
This commit is contained in:
Wojtek Figat
2021-03-17 11:12:08 +01:00
parent 4eeadf87fb
commit 8fb27e6f83
4 changed files with 35 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ MMethod* UICanvas_PostDeserialize = nullptr;
MMethod* UICanvas_OnEnable = nullptr;
MMethod* UICanvas_OnDisable = nullptr;
MMethod* UICanvas_EndPlay = nullptr;
MMethod* UICanvas_ParentChanged = nullptr;
#define UICANVAS_INVOKE(event) \
auto instance = GetManagedInstance(); \
@@ -43,6 +44,7 @@ UICanvas::UICanvas(const SpawnParams& params)
UICanvas_OnEnable = mclass->GetMethod("OnEnable");
UICanvas_OnDisable = mclass->GetMethod("OnDisable");
UICanvas_EndPlay = mclass->GetMethod("EndPlay");
UICanvas_ParentChanged = mclass->GetMethod("ParentChanged");
}
}
@@ -133,6 +135,14 @@ void UICanvas::EndPlay()
Actor::EndPlay();
}
void UICanvas::OnParentChanged()
{
// Base
Actor::OnParentChanged();
UICANVAS_INVOKE(ParentChanged);
}
void UICanvas::OnEnable()
{
UICANVAS_INVOKE(OnEnable);

View File

@@ -539,6 +539,16 @@ namespace FlaxEngine
Setup();
}
internal void ParentChanged()
{
#if FLAX_EDITOR
if (RenderMode == CanvasRenderMode.ScreenSpace && _editorRoot != null && _guiRoot != null)
{
_guiRoot.Parent = HasParent ? _editorRoot : null;
}
#endif
}
internal void OnEnable()
{
#if FLAX_EDITOR
@@ -587,6 +597,8 @@ namespace FlaxEngine
internal void EditorOverride(SceneRenderTask task, ContainerControl root)
{
if (_editorTask == task && _editorRoot == root)
return;
if (_editorTask != null && _renderer != null)
_editorTask.CustomPostFx.Remove(_renderer);
if (_editorRoot != null && _guiRoot != null)

View File

@@ -24,6 +24,7 @@ protected:
// [Actor]
void BeginPlay(SceneBeginData* data) final override;
void EndPlay() final override;
void OnParentChanged() override;
void OnEnable() override;
void OnDisable() override;
void OnTransformChanged() final override;