Add some improvements to particles editing

#1395
This commit is contained in:
Wojtek Figat
2023-09-27 13:04:44 +02:00
parent 523a14af56
commit b00156f519
3 changed files with 16 additions and 6 deletions

View File

@@ -25,9 +25,20 @@ namespace FlaxEditor.CustomEditors.Dedicated
get get
{ {
// All selected particle effects use the same system // All selected particle effects use the same system
var effect = (ParticleEffect)Values[0]; var effect = Values[0] as ParticleEffect;
var system = effect.ParticleSystem; var system = effect ? effect.ParticleSystem : null;
return system != null && Values.TrueForAll(x => (x as ParticleEffect)?.ParticleSystem == system); if (system && Values.TrueForAll(x => x is ParticleEffect fx && fx && fx.ParticleSystem == system))
{
// All parameters can be accessed
var parameters = effect.Parameters;
foreach (var parameter in parameters)
{
if (!parameter)
return false;
}
return true;
}
return false;
} }
} }

View File

@@ -402,7 +402,7 @@ SceneRenderTask* ParticleEffect::GetRenderTask() const
#if USE_EDITOR #if USE_EDITOR
Array<ParticleEffect::ParameterOverride> ParticleEffect::GetParametersOverrides() Array<ParticleEffect::ParameterOverride>& ParticleEffect::GetParametersOverrides()
{ {
CacheModifiedParameters(); CacheModifiedParameters();
return _parametersOverrides; return _parametersOverrides;
@@ -461,7 +461,6 @@ void ParticleEffect::CacheModifiedParameters()
{ {
if (_parameters.IsEmpty()) if (_parameters.IsEmpty())
return; return;
_parametersOverrides.Clear(); _parametersOverrides.Clear();
auto& parameters = GetParameters(); auto& parameters = GetParameters();
for (auto& param : parameters) for (auto& param : parameters)

View File

@@ -382,7 +382,7 @@ public:
#if USE_EDITOR #if USE_EDITOR
protected: protected:
// Exposed parameters overrides for Editor Undo. // Exposed parameters overrides for Editor Undo.
API_PROPERTY(Attributes="HideInEditor, Serialize") Array<ParticleEffect::ParameterOverride> GetParametersOverrides(); API_PROPERTY(Attributes="HideInEditor, Serialize") Array<ParticleEffect::ParameterOverride>& GetParametersOverrides();
API_PROPERTY() void SetParametersOverrides(const Array<ParticleEffect::ParameterOverride>& value); API_PROPERTY() void SetParametersOverrides(const Array<ParticleEffect::ParameterOverride>& value);
#endif #endif