diff --git a/Source/Engine/Audio/AudioClip.cpp b/Source/Engine/Audio/AudioClip.cpp
index 4005e46b9..29dd2a153 100644
--- a/Source/Engine/Audio/AudioClip.cpp
+++ b/Source/Engine/Audio/AudioClip.cpp
@@ -125,7 +125,7 @@ void AudioClip::StreamingTask::OnEnd()
{
ASSERT(_asset->_streamingTask == this);
_asset->_streamingTask = nullptr;
- _asset.Unlink();
+ _asset = nullptr;
}
_dataLock.Release();
diff --git a/Source/Engine/Content/Assets/Model.cpp b/Source/Engine/Content/Assets/Model.cpp
index 897e589a8..8cdd0601e 100644
--- a/Source/Engine/Content/Assets/Model.cpp
+++ b/Source/Engine/Content/Assets/Model.cpp
@@ -104,7 +104,7 @@ protected:
{
ASSERT(_asset->_streamingTask == this);
_asset->_streamingTask = nullptr;
- _asset.Unlink();
+ _asset = nullptr;
}
_dataLock.Release();
diff --git a/Source/Engine/Content/Assets/SkinnedModel.cpp b/Source/Engine/Content/Assets/SkinnedModel.cpp
index 5309cf6b9..dfccfec19 100644
--- a/Source/Engine/Content/Assets/SkinnedModel.cpp
+++ b/Source/Engine/Content/Assets/SkinnedModel.cpp
@@ -97,7 +97,7 @@ protected:
{
ASSERT(_asset->_streamingTask == this);
_asset->_streamingTask = nullptr;
- _asset.Unlink();
+ _asset = nullptr;
}
_dataLock.Release();
diff --git a/Source/Engine/Content/BinaryAsset.cpp b/Source/Engine/Content/BinaryAsset.cpp
index 7160cb287..1dbc672f2 100644
--- a/Source/Engine/Content/BinaryAsset.cpp
+++ b/Source/Engine/Content/BinaryAsset.cpp
@@ -491,7 +491,7 @@ protected:
void OnEnd() override
{
_dataLock.Release();
- _asset.Unlink();
+ _asset = nullptr;
// Base
ContentLoadTask::OnEnd();
diff --git a/Source/Engine/Content/Loading/Tasks/LoadAssetDataTask.h b/Source/Engine/Content/Loading/Tasks/LoadAssetDataTask.h
index 9d97a439f..5d552b996 100644
--- a/Source/Engine/Content/Loading/Tasks/LoadAssetDataTask.h
+++ b/Source/Engine/Content/Loading/Tasks/LoadAssetDataTask.h
@@ -82,7 +82,7 @@ protected:
void OnEnd() override
{
_dataLock.Release();
- _asset.Unlink();
+ _asset = nullptr;
// Base
ContentLoadTask::OnEnd();
diff --git a/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h b/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h
index 7eed30399..7a7ea285f 100644
--- a/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h
+++ b/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h
@@ -68,7 +68,7 @@ protected:
void OnEnd() override
{
- _asset.Unlink();
+ _asset = nullptr;
// Base
ContentLoadTask::OnEnd();
diff --git a/Source/Engine/Content/WeakAssetReference.h b/Source/Engine/Content/WeakAssetReference.h
index 9ed81b521..76f6b1fff 100644
--- a/Source/Engine/Content/WeakAssetReference.h
+++ b/Source/Engine/Content/WeakAssetReference.h
@@ -66,14 +66,6 @@ public:
return _asset ? _asset->GetOrCreateManagedInstance() : nullptr;
}
- ///
- /// Clears the asset reference.
- ///
- FORCE_INLINE void Unlink()
- {
- OnSet(nullptr);
- }
-
///
/// Gets the asset property value as string.
///
@@ -103,7 +95,8 @@ protected:
{
ASSERT(_asset == asset);
Unload();
- Unlink();
+ asset->OnUnloaded.Unbind(this);
+ asset = nullptr;
}
};
diff --git a/Source/Engine/Engine/Base/GameBase.cpp b/Source/Engine/Engine/Base/GameBase.cpp
index c313b0737..62e187e7d 100644
--- a/Source/Engine/Engine/Base/GameBase.cpp
+++ b/Source/Engine/Engine/Base/GameBase.cpp
@@ -259,13 +259,13 @@ void GameBaseImpl::OnSplashScreenEnd()
{
// Hide splash screen
SplashScreenTime = 0;
- SplashScreen.Unlink();
+ SplashScreen = nullptr;
MainRenderTask::Instance->PostRender.Unbind(&OnPostRender);
// Load the first scene
LOG(Info, "Loading the first scene");
const auto sceneId = FirstScene ? FirstScene.GetID() : Guid::Empty;
- FirstScene.Unlink();
+ FirstScene = nullptr;
if (Level::LoadSceneAsync(sceneId))
{
LOG(Fatal, "Cannot load the first scene.");
diff --git a/Source/Engine/Graphics/GPUResourceProperty.h b/Source/Engine/Graphics/GPUResourceProperty.h
index 5ad31439d..49e3c7b9b 100644
--- a/Source/Engine/Graphics/GPUResourceProperty.h
+++ b/Source/Engine/Graphics/GPUResourceProperty.h
@@ -75,12 +75,8 @@ public:
GPUResourceProperty& operator=(const GPUResourceProperty& other)
{
- // Protect against invalid self-assignment
if (this != &other)
- {
Set(other.Get());
- }
-
return *this;
}
@@ -158,7 +154,6 @@ public:
/// Value to assign
void Set(T* value)
{
- // Check if value will change
if (_resource != value)
{
// Remove reference from the old one
@@ -179,7 +174,6 @@ public:
///
void Unlink()
{
- // Check if value will change
if (_resource)
{
// Remove reference from the old one
@@ -194,10 +188,7 @@ private:
{
if (_resource)
{
- // Unlink
_resource = nullptr;
-
- // Fire event
OnUnload(this);
}
}
diff --git a/Source/Engine/Physics/CollisionCooking.cpp b/Source/Engine/Physics/CollisionCooking.cpp
index 6769e50fc..9076d979e 100644
--- a/Source/Engine/Physics/CollisionCooking.cpp
+++ b/Source/Engine/Physics/CollisionCooking.cpp
@@ -15,7 +15,7 @@
#define ENSURE_CAN_COOK \
if (Physics::GetCooking() == nullptr) \
{ \
- LOG(Warning, "Physics collisions cooking is disabled at runtime. Enable Physics Settings option SupportCookingAtRuntime to use terrain generation at runtime."); \
+ LOG(Warning, "Physics collisions cooking is disabled at runtime. Enable Physics Settings option SupportCookingAtRuntime to use collision generation at runtime."); \
return true; \
}