Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||||
|
|
||||||
#include "AnimationManager.h"
|
#include "Animations.h"
|
||||||
#include "Engine/Profiler/ProfilerCPU.h"
|
#include "Engine/Profiler/ProfilerCPU.h"
|
||||||
#include "Engine/Level/Actors/AnimatedModel.h"
|
#include "Engine/Level/Actors/AnimatedModel.h"
|
||||||
#include "Engine/Engine/Time.h"
|
#include "Engine/Engine/Time.h"
|
||||||
@@ -9,12 +9,12 @@
|
|||||||
Array<AnimatedModel*> UpdateList;
|
Array<AnimatedModel*> UpdateList;
|
||||||
Array<Matrix> UpdateBones;
|
Array<Matrix> UpdateBones;
|
||||||
|
|
||||||
class AnimationManagerService : public EngineService
|
class AnimationsService : public EngineService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
AnimationManagerService()
|
AnimationsService()
|
||||||
: EngineService(TEXT("Animation Manager"), -10)
|
: EngineService(TEXT("Animations"), -10)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ public:
|
|||||||
void Dispose() override;
|
void Dispose() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
AnimationManagerService AnimationManagerInstance;
|
AnimationsService AnimationManagerInstance;
|
||||||
|
|
||||||
void AnimationManagerService::Update()
|
void AnimationsService::Update()
|
||||||
{
|
{
|
||||||
PROFILE_CPU_NAMED("Animations");
|
PROFILE_CPU_NAMED("Animations");
|
||||||
|
|
||||||
@@ -78,18 +78,18 @@ void AnimationManagerService::Update()
|
|||||||
UpdateList.Clear();
|
UpdateList.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationManagerService::Dispose()
|
void AnimationsService::Dispose()
|
||||||
{
|
{
|
||||||
UpdateList.Resize(0);
|
UpdateList.Resize(0);
|
||||||
UpdateBones.Resize(0);
|
UpdateBones.Resize(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationManager::AddToUpdate(AnimatedModel* obj)
|
void Animations::AddToUpdate(AnimatedModel* obj)
|
||||||
{
|
{
|
||||||
UpdateList.Add(obj);
|
UpdateList.Add(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationManager::RemoveFromUpdate(AnimatedModel* obj)
|
void Animations::RemoveFromUpdate(AnimatedModel* obj)
|
||||||
{
|
{
|
||||||
UpdateList.Remove(obj);
|
UpdateList.Remove(obj);
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ class AnimatedModel;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The animations service.
|
/// The animations service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class AnimationManager
|
class FLAXENGINE_API Animations
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "AnimatedModel.h"
|
#include "AnimatedModel.h"
|
||||||
#include "BoneSocket.h"
|
#include "BoneSocket.h"
|
||||||
#include "Engine/Animations/AnimationManager.h"
|
#include "Engine/Animations/Animations.h"
|
||||||
#include "Engine/Engine/Engine.h"
|
#include "Engine/Engine/Engine.h"
|
||||||
#if USE_EDITOR
|
#if USE_EDITOR
|
||||||
#include "Editor/Editor.h"
|
#include "Editor/Editor.h"
|
||||||
@@ -52,7 +52,7 @@ void AnimatedModel::UpdateAnimation()
|
|||||||
if (AnimationGraph && AnimationGraph->IsLoaded() && AnimationGraph->Graph.IsReady())
|
if (AnimationGraph && AnimationGraph->IsLoaded() && AnimationGraph->Graph.IsReady())
|
||||||
{
|
{
|
||||||
// Request an animation update
|
// Request an animation update
|
||||||
AnimationManager::AddToUpdate(this);
|
Animations::AddToUpdate(this);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -389,7 +389,7 @@ void AnimatedModel::BeginPlay(SceneBeginData* data)
|
|||||||
|
|
||||||
void AnimatedModel::EndPlay()
|
void AnimatedModel::EndPlay()
|
||||||
{
|
{
|
||||||
AnimationManager::RemoveFromUpdate(this);
|
Animations::RemoveFromUpdate(this);
|
||||||
SetMasterPoseModel(nullptr);
|
SetMasterPoseModel(nullptr);
|
||||||
|
|
||||||
// Base
|
// Base
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
API_CLASS() class FLAXENGINE_API AnimatedModel : public ModelInstanceActor
|
API_CLASS() class FLAXENGINE_API AnimatedModel : public ModelInstanceActor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(AnimatedModel);
|
DECLARE_SCENE_OBJECT(AnimatedModel);
|
||||||
friend class AnimationManagerService;
|
friend class AnimationsService;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||||
|
|
||||||
#include "ParticleEffect.h"
|
#include "ParticleEffect.h"
|
||||||
#include "ParticleManager.h"
|
#include "Particles.h"
|
||||||
#include "Engine/Serialization/JsonTools.h"
|
#include "Engine/Serialization/JsonTools.h"
|
||||||
#include "Engine/Serialization/Serialization.h"
|
#include "Engine/Serialization/Serialization.h"
|
||||||
#include "Engine/Level/Scene/SceneRendering.h"
|
#include "Engine/Level/Scene/SceneRendering.h"
|
||||||
@@ -270,7 +270,7 @@ void ParticleEffect::UpdateSimulation()
|
|||||||
// Request update
|
// Request update
|
||||||
_lastUpdateFrame = Engine::FrameCount;
|
_lastUpdateFrame = Engine::FrameCount;
|
||||||
_lastMinDstSqr = MAX_float;
|
_lastMinDstSqr = MAX_float;
|
||||||
ParticleManager::UpdateEffect(this);
|
Particles::UpdateEffect(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleEffect::UpdateBounds()
|
void ParticleEffect::UpdateBounds()
|
||||||
@@ -493,7 +493,7 @@ bool ParticleEffect::HasContentLoaded() const
|
|||||||
void ParticleEffect::Draw(RenderContext& renderContext)
|
void ParticleEffect::Draw(RenderContext& renderContext)
|
||||||
{
|
{
|
||||||
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(GetPosition(), renderContext.View.Position));
|
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(GetPosition(), renderContext.View.Position));
|
||||||
ParticleManager::DrawParticles(renderContext, this);
|
Particles::DrawParticles(renderContext, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleEffect::DrawGeneric(RenderContext& renderContext)
|
void ParticleEffect::DrawGeneric(RenderContext& renderContext)
|
||||||
@@ -679,7 +679,7 @@ void ParticleEffect::Deserialize(DeserializeStream& stream, ISerializeModifier*
|
|||||||
void ParticleEffect::EndPlay()
|
void ParticleEffect::EndPlay()
|
||||||
{
|
{
|
||||||
CacheModifiedParameters();
|
CacheModifiedParameters();
|
||||||
ParticleManager::OnEffectDestroy(this);
|
Particles::OnEffectDestroy(this);
|
||||||
Instance.ClearState();
|
Instance.ClearState();
|
||||||
_parameters.Clear();
|
_parameters.Clear();
|
||||||
_parametersVersion = 0;
|
_parametersVersion = 0;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||||
|
|
||||||
#include "ParticleEmitter.h"
|
#include "ParticleEmitter.h"
|
||||||
#include "ParticleManager.h"
|
|
||||||
#include "ParticleSystem.h"
|
#include "ParticleSystem.h"
|
||||||
#include "ParticleEffect.h"
|
#include "ParticleEffect.h"
|
||||||
|
#include "Particles.h"
|
||||||
#include "Engine/Content/Factories/BinaryAssetFactory.h"
|
#include "Engine/Content/Factories/BinaryAssetFactory.h"
|
||||||
#include "Engine/Content/Upgraders/ShaderAssetUpgrader.h"
|
#include "Engine/Content/Upgraders/ShaderAssetUpgrader.h"
|
||||||
#include "Engine/Core/Log.h"
|
#include "Engine/Core/Log.h"
|
||||||
@@ -287,7 +287,7 @@ void ParticleEmitter::unload(bool isReloading)
|
|||||||
UnregisterForShaderReloads(this);
|
UnregisterForShaderReloads(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ParticleManager::OnEmitterUnload(this);
|
Particles::OnEmitterUnload(this);
|
||||||
|
|
||||||
Graph.Clear();
|
Graph.Clear();
|
||||||
#if COMPILE_WITH_GPU_PARTICLES
|
#if COMPILE_WITH_GPU_PARTICLES
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||||
|
|
||||||
#include "ParticleManager.h"
|
#include "Particles.h"
|
||||||
#include "Engine/Content/Assets/Model.h"
|
#include "Engine/Content/Assets/Model.h"
|
||||||
#include "Engine/Core/Collections/Sorting.h"
|
#include "Engine/Core/Collections/Sorting.h"
|
||||||
#include "Engine/Core/Collections/HashSet.h"
|
#include "Engine/Core/Collections/HashSet.h"
|
||||||
@@ -112,8 +112,8 @@ namespace ParticleManagerImpl
|
|||||||
|
|
||||||
using namespace ParticleManagerImpl;
|
using namespace ParticleManagerImpl;
|
||||||
|
|
||||||
bool ParticleManager::EnableParticleBufferPooling = true;
|
bool Particles::EnableParticleBufferPooling = true;
|
||||||
float ParticleManager::ParticleBufferRecycleTimeout = 10.0f;
|
float Particles::ParticleBufferRecycleTimeout = 10.0f;
|
||||||
|
|
||||||
SpriteParticleRenderer SpriteRenderer;
|
SpriteParticleRenderer SpriteRenderer;
|
||||||
|
|
||||||
@@ -155,12 +155,12 @@ public:
|
|||||||
|
|
||||||
ParticleManagerService ParticleManagerServiceInstance;
|
ParticleManagerService ParticleManagerServiceInstance;
|
||||||
|
|
||||||
void ParticleManager::UpdateEffect(ParticleEffect* effect)
|
void Particles::UpdateEffect(ParticleEffect* effect)
|
||||||
{
|
{
|
||||||
UpdateList.Add(effect);
|
UpdateList.Add(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleManager::OnEffectDestroy(ParticleEffect* effect)
|
void Particles::OnEffectDestroy(ParticleEffect* effect)
|
||||||
{
|
{
|
||||||
UpdateList.Remove(effect);
|
UpdateList.Remove(effect);
|
||||||
#if COMPILE_WITH_GPU_PARTICLES
|
#if COMPILE_WITH_GPU_PARTICLES
|
||||||
@@ -895,7 +895,7 @@ void DrawEmitterGPU(RenderContext& renderContext, ParticleBuffer* buffer, DrawCa
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ParticleManager::DrawParticles(RenderContext& renderContext, ParticleEffect* effect)
|
void Particles::DrawParticles(RenderContext& renderContext, ParticleEffect* effect)
|
||||||
{
|
{
|
||||||
// Setup
|
// Setup
|
||||||
auto& view = renderContext.View;
|
auto& view = renderContext.View;
|
||||||
@@ -1066,7 +1066,7 @@ void UpdateGPU(RenderTask* task, GPUContext* context)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ParticleBuffer* ParticleManager::AcquireParticleBuffer(ParticleEmitter* emitter)
|
ParticleBuffer* Particles::AcquireParticleBuffer(ParticleEmitter* emitter)
|
||||||
{
|
{
|
||||||
ParticleBuffer* result = nullptr;
|
ParticleBuffer* result = nullptr;
|
||||||
ASSERT(emitter && emitter->IsLoaded());
|
ASSERT(emitter && emitter->IsLoaded());
|
||||||
@@ -1118,7 +1118,7 @@ ParticleBuffer* ParticleManager::AcquireParticleBuffer(ParticleEmitter* emitter)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleManager::RecycleParticleBuffer(ParticleBuffer* buffer)
|
void Particles::RecycleParticleBuffer(ParticleBuffer* buffer)
|
||||||
{
|
{
|
||||||
if (buffer->Emitter->EnablePooling && EnableParticleBufferPooling)
|
if (buffer->Emitter->EnablePooling && EnableParticleBufferPooling)
|
||||||
{
|
{
|
||||||
@@ -1138,7 +1138,7 @@ void ParticleManager::RecycleParticleBuffer(ParticleBuffer* buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleManager::OnEmitterUnload(ParticleEmitter* emitter)
|
void Particles::OnEmitterUnload(ParticleEmitter* emitter)
|
||||||
{
|
{
|
||||||
PoolLocker.Lock();
|
PoolLocker.Lock();
|
||||||
const auto entries = Pool.TryGet(emitter);
|
const auto entries = Pool.TryGet(emitter);
|
||||||
@@ -1262,7 +1262,7 @@ void ParticleManagerService::Update()
|
|||||||
{
|
{
|
||||||
if (emitterInstance.Buffer)
|
if (emitterInstance.Buffer)
|
||||||
{
|
{
|
||||||
ParticleManager::RecycleParticleBuffer(emitterInstance.Buffer);
|
Particles::RecycleParticleBuffer(emitterInstance.Buffer);
|
||||||
emitterInstance.Buffer = nullptr;
|
emitterInstance.Buffer = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1291,7 +1291,7 @@ void ParticleManagerService::Update()
|
|||||||
data.Sync(effect->Instance, particleSystem, track.AsEmitter.Index);
|
data.Sync(effect->Instance, particleSystem, track.AsEmitter.Index);
|
||||||
if (!data.Buffer)
|
if (!data.Buffer)
|
||||||
{
|
{
|
||||||
data.Buffer = ParticleManager::AcquireParticleBuffer(emitter);
|
data.Buffer = Particles::AcquireParticleBuffer(emitter);
|
||||||
}
|
}
|
||||||
data.Time += dt;
|
data.Time += dt;
|
||||||
|
|
||||||
@@ -1355,7 +1355,7 @@ void ParticleManagerService::Update()
|
|||||||
for (int32 j = 0; j < entries.Count(); j++)
|
for (int32 j = 0; j < entries.Count(); j++)
|
||||||
{
|
{
|
||||||
auto& e = entries[j];
|
auto& e = entries[j];
|
||||||
if (timeSeconds - e.LastTimeUsed >= ParticleManager::ParticleBufferRecycleTimeout)
|
if (timeSeconds - e.LastTimeUsed >= Particles::ParticleBufferRecycleTimeout)
|
||||||
{
|
{
|
||||||
Delete(e.Buffer);
|
Delete(e.Buffer);
|
||||||
entries.RemoveAt(j--);
|
entries.RemoveAt(j--);
|
||||||
@@ -15,7 +15,7 @@ class Actor;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The particles service used for simulation and emitters data pooling.
|
/// The particles service used for simulation and emitters data pooling.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class FLAXENGINE_API ParticleManager
|
class FLAXENGINE_API Particles
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
#define PARTICLE_EMITTER_MAX_RIBBONS 4
|
#define PARTICLE_EMITTER_MAX_RIBBONS 4
|
||||||
|
|
||||||
class ParticleEmitter;
|
class ParticleEmitter;
|
||||||
class ParticleManager;
|
class Particles;
|
||||||
class GPUBuffer;
|
class GPUBuffer;
|
||||||
class DynamicIndexBuffer;
|
class DynamicIndexBuffer;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||||
|
|
||||||
#include "ParticlesSimulation.h"
|
#include "ParticlesSimulation.h"
|
||||||
#include "ParticleManager.h"
|
|
||||||
#include "ParticleSystem.h"
|
#include "ParticleSystem.h"
|
||||||
#include "ParticleEmitter.h"
|
#include "ParticleEmitter.h"
|
||||||
|
#include "Particles.h"
|
||||||
#include "Engine/Graphics/GPUBuffer.h"
|
#include "Engine/Graphics/GPUBuffer.h"
|
||||||
#include "Engine/Graphics/GPUDevice.h"
|
#include "Engine/Graphics/GPUDevice.h"
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ ParticleEmitterInstance::~ParticleEmitterInstance()
|
|||||||
{
|
{
|
||||||
if (Buffer)
|
if (Buffer)
|
||||||
{
|
{
|
||||||
ParticleManager::RecycleParticleBuffer(Buffer);
|
Particles::RecycleParticleBuffer(Buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ void ParticleEmitterInstance::ClearState()
|
|||||||
#endif
|
#endif
|
||||||
if (Buffer)
|
if (Buffer)
|
||||||
{
|
{
|
||||||
ParticleManager::RecycleParticleBuffer(Buffer);
|
Particles::RecycleParticleBuffer(Buffer);
|
||||||
Buffer = nullptr;
|
Buffer = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ void ParticleEmitterInstance::Sync(ParticleSystemInstance& systemInstance, Parti
|
|||||||
// Sync buffer version
|
// Sync buffer version
|
||||||
if (Buffer && Buffer->Version != Version)
|
if (Buffer && Buffer->Version != Version)
|
||||||
{
|
{
|
||||||
ParticleManager::RecycleParticleBuffer(Buffer);
|
Particles::RecycleParticleBuffer(Buffer);
|
||||||
Buffer = nullptr;
|
Buffer = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user