Fixes
This commit is contained in:
@@ -20,7 +20,6 @@ AssetReferenceBase::~AssetReferenceBase()
|
||||
_asset->OnLoaded.Unbind<AssetReferenceBase, &AssetReferenceBase::OnLoaded>(this);
|
||||
_asset->OnUnloaded.Unbind<AssetReferenceBase, &AssetReferenceBase::OnUnloaded>(this);
|
||||
_asset->RemoveReference();
|
||||
_asset = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,13 +54,15 @@ void AssetReferenceBase::OnSet(Asset* asset)
|
||||
|
||||
void AssetReferenceBase::OnLoaded(Asset* asset)
|
||||
{
|
||||
ASSERT(_asset == asset);
|
||||
if (_asset != asset)
|
||||
return;
|
||||
Loaded();
|
||||
}
|
||||
|
||||
void AssetReferenceBase::OnUnloaded(Asset* asset)
|
||||
{
|
||||
ASSERT(_asset == asset);
|
||||
if (_asset != asset)
|
||||
return;
|
||||
Unload();
|
||||
OnSet(nullptr);
|
||||
}
|
||||
@@ -92,7 +93,8 @@ void WeakAssetReferenceBase::OnSet(Asset* asset)
|
||||
|
||||
void WeakAssetReferenceBase::OnUnloaded(Asset* asset)
|
||||
{
|
||||
ASSERT(_asset == asset);
|
||||
if (_asset != asset)
|
||||
return;
|
||||
Unload();
|
||||
asset->OnUnloaded.Unbind<WeakAssetReferenceBase, &WeakAssetReferenceBase::OnUnloaded>(this);
|
||||
_asset = nullptr;
|
||||
|
||||
@@ -35,6 +35,7 @@ public:
|
||||
EventType Changed;
|
||||
|
||||
public:
|
||||
NON_COPYABLE(AssetReferenceBase);
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="AssetReferenceBase"/> class.
|
||||
@@ -114,6 +115,22 @@ public:
|
||||
OnSet(other.Get());
|
||||
}
|
||||
|
||||
AssetReference(AssetReference&& other)
|
||||
{
|
||||
OnSet(other.Get());
|
||||
other.OnSet(nullptr);
|
||||
}
|
||||
|
||||
AssetReference& operator=(AssetReference&& other)
|
||||
{
|
||||
if (&other != this)
|
||||
{
|
||||
OnSet(other.Get());
|
||||
other.OnSet(nullptr);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Finalizes an instance of the <see cref="AssetReference"/> class.
|
||||
/// </summary>
|
||||
|
||||
@@ -25,6 +25,7 @@ public:
|
||||
EventType Unload;
|
||||
|
||||
public:
|
||||
NON_COPYABLE(WeakAssetReferenceBase);
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="WeakAssetReferenceBase"/> class.
|
||||
@@ -100,6 +101,22 @@ public:
|
||||
OnSet(other.Get());
|
||||
}
|
||||
|
||||
WeakAssetReference(WeakAssetReference&& other)
|
||||
{
|
||||
OnSet(other.Get());
|
||||
other.OnSet(nullptr);
|
||||
}
|
||||
|
||||
WeakAssetReference& operator=(WeakAssetReference&& other)
|
||||
{
|
||||
if (&other != this)
|
||||
{
|
||||
OnSet(other.Get());
|
||||
other.OnSet(nullptr);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Finalizes an instance of the <see cref="WeakAssetReference"/> class.
|
||||
/// </summary>
|
||||
|
||||
@@ -109,7 +109,7 @@ void FontManagerService::Dispose()
|
||||
|
||||
FontTextureAtlas* FontManager::GetAtlas(int32 index)
|
||||
{
|
||||
return index >= 0 && index < Atlases.Count() ? Atlases.Get()[index] : nullptr;
|
||||
return index >= 0 && index < Atlases.Count() ? Atlases.Get()[index].Get() : nullptr;
|
||||
}
|
||||
|
||||
bool FontManager::AddNewEntry(Font* font, Char c, FontCharacterEntry& entry)
|
||||
|
||||
@@ -95,6 +95,8 @@ namespace FlaxEngine.GUI
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!_texture || !_texture.IsAllocated)
|
||||
return;
|
||||
|
||||
Profiler.BeginEventGPU("RenderToTextureControl");
|
||||
var context = GPUDevice.Instance.MainContext;
|
||||
|
||||
@@ -241,11 +241,12 @@ namespace FlaxEngine.GUI
|
||||
|
||||
// Calculate text blocks for drawing
|
||||
var textBlocks = Utils.ExtractArrayFromList(_textBlocks);
|
||||
var textBlocksCount = _textBlocks?.Count ?? 0;
|
||||
var hasSelection = HasSelection;
|
||||
var selection = new TextRange(SelectionLeft, SelectionRight);
|
||||
var viewRect = new Rectangle(_viewOffset, Size).MakeExpanded(10.0f);
|
||||
var firstTextBlock = _textBlocks.Count;
|
||||
for (int i = 0; i < _textBlocks.Count; i++)
|
||||
var firstTextBlock = textBlocksCount;
|
||||
for (int i = 0; i < textBlocksCount; i++)
|
||||
{
|
||||
ref TextBlock textBlock = ref textBlocks[i];
|
||||
if (textBlock.Bounds.Intersects(ref viewRect))
|
||||
@@ -254,8 +255,8 @@ namespace FlaxEngine.GUI
|
||||
break;
|
||||
}
|
||||
}
|
||||
var endTextBlock = Mathf.Min(firstTextBlock + 1, _textBlocks.Count);
|
||||
for (int i = _textBlocks.Count - 1; i > firstTextBlock; i--)
|
||||
var endTextBlock = Mathf.Min(firstTextBlock + 1, textBlocksCount);
|
||||
for (int i = textBlocksCount - 1; i > firstTextBlock; i--)
|
||||
{
|
||||
ref TextBlock textBlock = ref textBlocks[i];
|
||||
if (textBlock.Bounds.Intersects(ref viewRect))
|
||||
|
||||
Reference in New Issue
Block a user