Revert some changes from #3389 that are not relevant for world units

This commit is contained in:
Wojtek Figat
2025-06-03 17:43:01 +02:00
parent fa97229830
commit 8b88def9d0
33 changed files with 84 additions and 83 deletions

View File

@@ -38,7 +38,7 @@ namespace FlaxEditor.CustomEditors.GUI
set
{
value = Mathf.Clamp(value, 0.05f, 0.95f);
if (_splitterValue != value)
if (!Mathf.NearEqual(_splitterValue, value))
{
_splitterValue = value;
UpdateSplitRect();

View File

@@ -385,7 +385,7 @@ namespace FlaxEditor.GUI
get => _fps;
set
{
if (_fps.HasValue == value.HasValue && (!value.HasValue || _fps.Value == value.Value))
if (_fps.HasValue == value.HasValue && (!value.HasValue || Mathf.NearEqual(_fps.Value, value.Value)))
return;
_fps = value;

View File

@@ -28,7 +28,7 @@ namespace FlaxEditor.GUI
set
{
value = Mathf.Max(value, 1);
if (value != _headerHeight)
if (!Mathf.NearEqual(value, _headerHeight))
{
_headerHeight = value;
PerformLayout();

View File

@@ -692,7 +692,7 @@ namespace FlaxEditor.GUI
get => _fps;
set
{
if (_fps.HasValue == value.HasValue && (!value.HasValue || _fps.Value == value.Value))
if (_fps.HasValue == value.HasValue && (!value.HasValue || Mathf.NearEqual(_fps.Value, value.Value)))
return;
_fps = value;

View File

@@ -319,7 +319,7 @@ namespace FlaxEditor.GUI.Timeline
set
{
value = Mathf.Clamp(value, 0.1f, 1000.0f);
if (_framesPerSecond == value)
if (Mathf.NearEqual(_framesPerSecond, value))
return;
Undo?.AddAction(new EditFpsAction(this, _framesPerSecond, value));
@@ -508,7 +508,7 @@ namespace FlaxEditor.GUI.Timeline
set
{
value = Mathf.Clamp(value, 0.00001f, 1000.0f);
if (_zoom == value)
if (Mathf.NearEqual(_zoom, value))
return;
_zoom = value;

View File

@@ -41,7 +41,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
get => Preview.ViewOffset;
set
{
if (Preview.ViewOffset == value)
if (Mathf.NearEqual(Preview.ViewOffset, value))
return;
Preview.ViewOffset = value;
Timeline?.MarkAsEdited();

View File

@@ -214,7 +214,7 @@ namespace FlaxEditor.GUI.Tree
get => _headerHeight;
set
{
if (_headerHeight != value)
if (!Mathf.NearEqual(_headerHeight, value))
{
_headerHeight = value;
PerformLayout();

View File

@@ -107,7 +107,7 @@ namespace FlaxEditor.Tools.Foliage
get => _type.CullDistance;
set
{
if (_type.CullDistance == value)
if (Mathf.NearEqual(_type.CullDistance, value))
return;
_type.CullDistance = value;
Foliage.UpdateCullDistance();
@@ -120,7 +120,7 @@ namespace FlaxEditor.Tools.Foliage
get => _type.CullDistanceRandomRange;
set
{
if (_type.CullDistanceRandomRange == value)
if (Mathf.NearEqual(_type.CullDistanceRandomRange, value))
return;
_type.CullDistanceRandomRange = value;
Foliage.UpdateCullDistance();
@@ -174,7 +174,7 @@ namespace FlaxEditor.Tools.Foliage
get => _type.DensityScalingScale;
set
{
if (_type.DensityScalingScale == value)
if (Mathf.NearEqual(_type.DensityScalingScale, value))
return;
_type.DensityScalingScale = value;
Foliage.RebuildClusters();

View File

@@ -95,7 +95,7 @@ namespace FlaxEditor.Viewport.Previews
get => _mipLevel;
set
{
if (_mipLevel == value)
if (!Mathf.NearEqual(_mipLevel, value))
{
_mipLevel = value;
_previewMaterial.SetParameterValue("Mip", value);

View File

@@ -42,7 +42,7 @@ namespace FlaxEditor.Viewport.Previews
set
{
value = Mathf.Clamp(value, 0.1f, 100000000000.0f);
if (_playbackDuration == value)
if (Mathf.NearEqual(_playbackDuration, value))
return;
_playbackDuration = value;

View File

@@ -303,7 +303,7 @@ namespace FlaxEditor.Viewport.Previews
get => _mipLevel;
set
{
if (_mipLevel != value)
if (!Mathf.NearEqual(_mipLevel, value))
{
_mipLevel = value;
_previewMaterial.SetParameterValue("Mip", value);

View File

@@ -58,7 +58,7 @@ public:
bool operator==(const StepCurveKeyframe& other) const
{
return Time == other.Time && Value == other.Value;
return Math::NearEqual(Time, other.Time) && Math::NearEqual(Value, other.Value);
}
} PACK_END();
@@ -113,7 +113,7 @@ public:
bool operator==(const LinearCurveKeyframe& other) const
{
return Time == other.Time && Value == other.Value;
return Math::NearEqual(Time, other.Time) && Math::NearEqual(Value, other.Value);
}
} PACK_END();
@@ -188,7 +188,7 @@ public:
bool operator==(const HermiteCurveKeyframe& other) const
{
return Time == other.Time && Value == other.Value && TangentIn == other.TangentIn && TangentOut == other.TangentOut;
return Math::NearEqual(Time, other.Time) && Math::NearEqual(Value, other.Value) && Math::NearEqual(TangentIn, other.TangentIn) && Math::NearEqual(TangentOut, other.TangentOut);
}
} PACK_END();
@@ -276,7 +276,7 @@ public:
bool operator==(const BezierCurveKeyframe& other) const
{
return Time == other.Time && Value == other.Value && TangentIn == other.TangentIn && TangentOut == other.TangentOut;
return Math::NearEqual(Time, other.Time) && Math::NearEqual(Value, other.Value) && Math::NearEqual(TangentIn, other.TangentIn) && Math::NearEqual(TangentOut, other.TangentOut);
}
} PACK_END();

View File

@@ -219,7 +219,7 @@ void AudioService::Update()
// Mute audio if app has no user focus
masterVolume = 0.0f;
}
if (Volume != masterVolume)
if (Math::NotNearEqual(Volume, masterVolume))
{
Volume = masterVolume;
AudioBackend::SetVolume(masterVolume);

View File

@@ -29,7 +29,7 @@ AudioSource::AudioSource(const SpawnParams& params)
void AudioSource::SetVolume(float value)
{
value = Math::Saturate(value);
if (_volume == value)
if (Math::NearEqual(_volume, value))
return;
_volume = value;
if (SourceID)
@@ -39,7 +39,7 @@ void AudioSource::SetVolume(float value)
void AudioSource::SetPitch(float value)
{
value = Math::Clamp(value, 0.5f, 2.0f);
if (_pitch == value)
if (Math::NearEqual(_pitch, value))
return;
_pitch = value;
if (SourceID)
@@ -49,7 +49,7 @@ void AudioSource::SetPitch(float value)
void AudioSource::SetPan(float value)
{
value = Math::Clamp(value, -1.0f, 1.0f);
if (_pan == value)
if (Math::NearEqual(_pan, value))
return;
_pan = value;
if (SourceID)
@@ -80,7 +80,7 @@ void AudioSource::SetStartTime(float value)
void AudioSource::SetMinDistance(float value)
{
value = Math::Max(0.0f, value);
if (_minDistance == value)
if (Math::NearEqual(_minDistance, value))
return;
_minDistance = value;
if (SourceID)
@@ -90,7 +90,7 @@ void AudioSource::SetMinDistance(float value)
void AudioSource::SetAttenuation(float value)
{
value = Math::Max(0.0f, value);
if (_attenuation == value)
if (Math::NearEqual(_attenuation, value))
return;
_attenuation = value;
if (SourceID)
@@ -100,7 +100,7 @@ void AudioSource::SetAttenuation(float value)
void AudioSource::SetDopplerFactor(float value)
{
value = Math::Max(0.0f, value);
if (_dopplerFactor == value)
if (Math::NearEqual(_dopplerFactor, value))
return;
_dopplerFactor = value;
if (SourceID)
@@ -401,7 +401,7 @@ void AudioSource::Update()
_startingToPlay = false;
}
if (!UseStreaming() && GetTime() == 0.0f && _isActuallyPlayingSth && !_startingToPlay)
if (!UseStreaming() && Math::NearEqual(GetTime(), 0.0f) && _isActuallyPlayingSth && !_startingToPlay)
{
int32 queuedBuffers;
AudioBackend::Source::GetQueuedBuffersCount(SourceID, queuedBuffers);

View File

@@ -20,7 +20,7 @@ namespace
template<typename T>
ShaderGraphNode<>* AddValueNode(MaterialLayer* layer, const float& value, const float& defaultValue)
{
if (value == defaultValue)
if (Math::NearEqual(value, defaultValue))
return nullptr;
auto& node = layer->Graph.Nodes.AddOne();
node.ID = layer->Graph.Nodes.Count();

View File

@@ -173,12 +173,12 @@ namespace FlaxEngine
/// <returns><c>true</c> if the specified <see cref="Viewport"/> is equal to this instance; otherwise, <c>false</c>.</returns>
public bool Equals(ref Viewport other)
{
return X == other.X &&
Y == other.Y &&
Width == other.Width &&
Height == other.Height &&
MinDepth == other.MinDepth &&
MaxDepth == other.MaxDepth;
return Mathf.NearEqual(X, other.X) &&
Mathf.NearEqual(Y, other.Y) &&
Mathf.NearEqual(Width, other.Width) &&
Mathf.NearEqual(Height, other.Height) &&
Mathf.NearEqual(MinDepth, other.MinDepth) &&
Mathf.NearEqual(MaxDepth, other.MaxDepth);
}
/// <summary>

View File

@@ -1013,7 +1013,7 @@ bool UpdateFoliageDensityScaling(Actor* actor)
void Foliage::SetGlobalDensityScale(float value)
{
value = Math::Saturate(value);
if (value == GlobalDensityScale)
if (Math::NearEqual(value, GlobalDensityScale))
return;
PROFILE_CPU();

View File

@@ -64,8 +64,8 @@ namespace FlaxEngine
&& DecalBlendingMode == other.DecalBlendingMode
&& TransparentLightingMode == other.TransparentLightingMode
&& PostFxLocation == other.PostFxLocation
&& MaskThreshold == other.MaskThreshold
&& OpacityThreshold == other.OpacityThreshold
&& Mathf.NearEqual(MaskThreshold, other.MaskThreshold)
&& Mathf.NearEqual(OpacityThreshold, other.OpacityThreshold)
&& TessellationMode == other.TessellationMode
&& MaxTessellationFactor == other.MaxTessellationFactor;
}

View File

@@ -24,8 +24,8 @@ bool MaterialInfo8::operator==(const MaterialInfo8& other) const
&& TransparentLighting == other.TransparentLighting
&& DecalBlendingMode == other.DecalBlendingMode
&& PostFxLocation == other.PostFxLocation
&& MaskThreshold == other.MaskThreshold
&& OpacityThreshold == other.OpacityThreshold
&& Math::NearEqual(MaskThreshold, other.MaskThreshold)
&& Math::NearEqual(OpacityThreshold, other.OpacityThreshold)
&& Flags == other.Flags
&& TessellationMode == other.TessellationMode
&& MaxTessellationFactor == other.MaxTessellationFactor;
@@ -89,8 +89,8 @@ bool MaterialInfo9::operator==(const MaterialInfo9& other) const
&& DecalBlendingMode == other.DecalBlendingMode
&& PostFxLocation == other.PostFxLocation
&& CullMode == other.CullMode
&& MaskThreshold == other.MaskThreshold
&& OpacityThreshold == other.OpacityThreshold
&& Math::NearEqual(MaskThreshold, other.MaskThreshold)
&& Math::NearEqual(OpacityThreshold, other.OpacityThreshold)
&& TessellationMode == other.TessellationMode
&& MaxTessellationFactor == other.MaxTessellationFactor;
}
@@ -123,8 +123,8 @@ bool MaterialInfo::operator==(const MaterialInfo& other) const
&& TransparentLightingMode == other.TransparentLightingMode
&& PostFxLocation == other.PostFxLocation
&& CullMode == other.CullMode
&& MaskThreshold == other.MaskThreshold
&& OpacityThreshold == other.OpacityThreshold
&& Math::NearEqual(MaskThreshold, other.MaskThreshold)
&& Math::NearEqual(OpacityThreshold, other.OpacityThreshold)
&& TessellationMode == other.TessellationMode
&& MaxTessellationFactor == other.MaxTessellationFactor;
}

View File

@@ -40,9 +40,9 @@ namespace FlaxEngine
AddressU == other.AddressU &&
AddressV == other.AddressV &&
AddressW == other.AddressW &&
MipBias == other.MipBias &&
MinMipLevel == other.MinMipLevel &&
MaxMipLevel == other.MaxMipLevel &&
Mathf.NearEqual(MipBias, other.MipBias) &&
Mathf.NearEqual(MinMipLevel, other.MinMipLevel) &&
Mathf.NearEqual(MaxMipLevel, other.MaxMipLevel) &&
MaxAnisotropy == other.MaxAnisotropy &&
BorderColor == other.BorderColor &&
ComparisonFunction == other.ComparisonFunction;

View File

@@ -108,8 +108,8 @@ DECLARE_SCRIPTING_TYPE_MINIMAL(TextLayoutOptions);
&& HorizontalAlignment == other.HorizontalAlignment
&& VerticalAlignment == other.VerticalAlignment
&& TextWrapping == other.TextWrapping
&& Scale == other.Scale
&& BaseLinesGapScale == other.BaseLinesGapScale;
&& Math::NearEqual(Scale, other.Scale)
&& Math::NearEqual(BaseLinesGapScale, other.BaseLinesGapScale);
}
FORCE_INLINE bool operator!=(const TextLayoutOptions& other) const

View File

@@ -236,9 +236,9 @@ struct ShadowAtlasLight
{
if (!Cache.StaticValid || !Cache.DynamicValid)
return;
if (Cache.Distance != light.ShadowsDistance ||
Cache.ShadowsUpdateRate != light.ShadowsUpdateRate ||
Cache.ShadowsUpdateRateAtDistance != light.ShadowsUpdateRateAtDistance ||
if (!Math::NearEqual(Cache.Distance, light.ShadowsDistance) ||
!Math::NearEqual(Cache.ShadowsUpdateRate, light.ShadowsUpdateRate) ||
!Math::NearEqual(Cache.ShadowsUpdateRateAtDistance, light.ShadowsUpdateRateAtDistance) ||
Cache.ShadowFrame != light.ShadowFrame ||
Cache.ShadowsResolution != light.ShadowsResolution ||
Float3::Dot(Cache.Direction, light.Direction) < SHADOWS_ROTATION_ERROR)
@@ -250,7 +250,7 @@ struct ShadowAtlasLight
{
// Sun
if (!Float3::NearEqual(Cache.Position, view.Position, SHADOWS_POSITION_ERROR) ||
Cache.CascadeSplits != CascadeSplits ||
!Float4::NearEqual(Cache.CascadeSplits, CascadeSplits) ||
Float3::Dot(Cache.ViewDirection, view.Direction) < SHADOWS_ROTATION_ERROR)
{
// Invalidate
@@ -262,12 +262,12 @@ struct ShadowAtlasLight
// Local light
const auto& localLight = (const RenderLocalLightData&)light;
if (!Float3::NearEqual(Cache.Position, light.Position, SHADOWS_POSITION_ERROR) ||
Cache.Radius != localLight.Radius)
!Math::NearEqual(Cache.Radius, localLight.Radius))
{
// Invalidate
Cache.StaticValid = false;
}
if (light.IsSpotLight && Cache.OuterConeAngle != ((const RenderSpotLightData&)light).OuterConeAngle)
if (light.IsSpotLight && !Math::NearEqual(Cache.OuterConeAngle, ((const RenderSpotLightData&)light).OuterConeAngle))
{
// Invalidate
Cache.StaticValid = false;

View File

@@ -132,7 +132,7 @@ namespace FlaxEngine.GUI
get => _scaleFactor;
set
{
if (_scaleFactor == value)
if (Mathf.NearEqual(_scaleFactor, value))
return;
_scaleFactor = value;
PerformLayout();
@@ -175,7 +175,7 @@ namespace FlaxEngine.GUI
get => _physicalUnitSize;
set
{
if (_physicalUnitSize == value)
if (Mathf.NearEqual(_physicalUnitSize, value))
return;
_physicalUnitSize = value;
PerformLayout();
@@ -212,7 +212,7 @@ namespace FlaxEngine.GUI
set
{
value = Float2.Max(value, Float2.One);
if (_resolutionMin == value)
if (Float2.NearEqual(ref _resolutionMin, ref value))
return;
_resolutionMin = value;
PerformLayout();
@@ -231,7 +231,7 @@ namespace FlaxEngine.GUI
set
{
value = Float2.Max(value, Float2.One);
if (_resolutionMax == value)
if (Float2.NearEqual(ref _resolutionMax, ref value))
return;
_resolutionMax = value;
PerformLayout();

View File

@@ -140,7 +140,7 @@ namespace FlaxEngine.GUI
set
{
value = Mathf.Clamp(value, _minimum, _maximum);
if (value != _value)
if (!Mathf.NearEqual(value, _value))
{
_value = value;
if (!UseSmoothing || _firstUpdate)

View File

@@ -114,7 +114,7 @@ public class Slider : ContainerControl
value = Mathf.Clamp(value, Minimum, Maximum);
if (WholeNumbers)
value = Mathf.RoundToInt(value);
if (value != _value)
if (!Mathf.NearEqual(value, _value))
{
_value = value;

View File

@@ -189,7 +189,7 @@ namespace FlaxEngine.GUI
get => _bounds.Size.X;
set
{
if (_bounds.Size.X == value)
if (Mathf.NearEqual(_bounds.Size.X, value))
return;
var bounds = new Rectangle(_bounds.Location, value, _bounds.Size.Y);
if (_pivotRelativeSizing)
@@ -210,7 +210,7 @@ namespace FlaxEngine.GUI
get => _bounds.Size.Y;
set
{
if (_bounds.Size.Y == value)
if (Mathf.NearEqual(_bounds.Size.Y, value))
return;
var bounds = new Rectangle(_bounds.Location, _bounds.Size.X, value);
if (_pivotRelativeSizing)
@@ -412,7 +412,7 @@ namespace FlaxEngine.GUI
get => _rotation;
set
{
if (_rotation != value)
if (!Mathf.NearEqual(_rotation, value))
{
SetRotationInternal(value);
}
@@ -598,7 +598,8 @@ namespace FlaxEngine.GUI
var anchorMin = AnchorPresetsData[i].Min;
var anchorMax = AnchorPresetsData[i].Max;
var bounds = _bounds;
if (_anchorMin != anchorMin || _anchorMax != anchorMax)
if (!Float2.NearEqual(ref _anchorMin, ref anchorMin) ||
!Float2.NearEqual(ref _anchorMax, ref anchorMax))
{
// Disable scrolling for anchored controls (by default but can be manually restored)
if (!anchorMin.IsZero || !anchorMax.IsZero)

View File

@@ -251,10 +251,10 @@ namespace FlaxEngine.GUI
/// <returns><c>true</c> if the specified <see cref="Margin" /> is equal to this instance; otherwise, <c>false</c>.</returns>
public bool Equals(ref Margin other)
{
return other.Left == Left &&
other.Right == Right &&
other.Top == Top &&
other.Bottom == Bottom;
return Mathf.NearEqual(other.Left, Left) &&
Mathf.NearEqual(other.Right, Right) &&
Mathf.NearEqual(other.Top, Top) &&
Mathf.NearEqual(other.Bottom, Bottom);
}
/// <summary>

View File

@@ -76,7 +76,7 @@ namespace FlaxEngine.GUI
get => _headerHeight;
set
{
if (_headerHeight != value)
if (!Mathf.NearEqual(_headerHeight, value))
{
_headerHeight = value;
PerformLayout();

View File

@@ -130,7 +130,7 @@ namespace FlaxEngine.GUI
get => _scrollBarsSize;
set
{
if (_scrollBarsSize == value)
if (Mathf.NearEqual(_scrollBarsSize, value))
return;
_scrollBarsSize = value;
PerformLayout();

View File

@@ -44,7 +44,7 @@ namespace FlaxEngine.GUI
get => _margin.Left;
set
{
if (_margin.Left != value)
if (!Mathf.NearEqual(_margin.Left, value))
{
_margin.Left = value;
PerformLayout();
@@ -61,7 +61,7 @@ namespace FlaxEngine.GUI
get => _margin.Right;
set
{
if (_margin.Right != value)
if (!Mathf.NearEqual(_margin.Right, value))
{
_margin.Right = value;
PerformLayout();
@@ -78,7 +78,7 @@ namespace FlaxEngine.GUI
get => _margin.Top;
set
{
if (_margin.Top != value)
if (!Mathf.NearEqual(_margin.Top, value))
{
_margin.Top = value;
PerformLayout();
@@ -95,7 +95,7 @@ namespace FlaxEngine.GUI
get => _margin.Bottom;
set
{
if (_margin.Bottom != value)
if (!Mathf.NearEqual(_margin.Bottom, value))
{
_margin.Bottom = value;
PerformLayout();
@@ -112,7 +112,7 @@ namespace FlaxEngine.GUI
get => _spacing;
set
{
if (_spacing != value)
if (!Mathf.NearEqual(_spacing, value))
{
_spacing = value;
PerformLayout();
@@ -129,7 +129,7 @@ namespace FlaxEngine.GUI
get => _offset;
set
{
if (_offset != value)
if (!Float2.NearEqual(ref _offset, ref value))
{
_offset = value;
PerformLayout();

View File

@@ -132,7 +132,7 @@ namespace FlaxEngine.GUI
set
{
value = Mathf.Clamp(value, _minimum, _maximum);
if (value != _targetValue)
if (!Mathf.NearEqual(value, _targetValue))
{
_targetValue = value;
_startValue = _value;
@@ -163,7 +163,7 @@ namespace FlaxEngine.GUI
set
{
value = Mathf.Clamp(value, _minimum, _maximum);
if (value != _targetValue)
if (!Mathf.NearEqual(value, _targetValue))
{
_targetValue = value;
_value = value;
@@ -237,7 +237,7 @@ namespace FlaxEngine.GUI
/// </summary>
public void FastScroll()
{
if (_value != _targetValue)
if (!Mathf.NearEqual(_value, _targetValue))
{
_value = _targetValue = _startValue;
_scrollAnimationProgress = 0f;

View File

@@ -67,7 +67,7 @@ namespace FlaxEngine.GUI
set
{
value = Mathf.Saturate(value);
if (_splitterValue != value)
if (!Mathf.NearEqual(_splitterValue, value))
{
// Set new value
_splitterValue = value;

View File

@@ -42,7 +42,7 @@ void VideoPlayer::SetIsAudioSpatial(bool value)
void VideoPlayer::SetAudioVolume(float value)
{
value = Math::Saturate(value);
if (_volume == value)
if (Math::NearEqual(_volume, value))
return;
_volume = value;
UpdateInfo();
@@ -51,7 +51,7 @@ void VideoPlayer::SetAudioVolume(float value)
void VideoPlayer::SetAudioPan(float value)
{
value = Math::Clamp(value, -1.0f, 1.0f);
if (_pan == value)
if (Math::NearEqual(_pan, value))
return;
_pan = value;
UpdateInfo();
@@ -60,7 +60,7 @@ void VideoPlayer::SetAudioPan(float value)
void VideoPlayer::SetAudioMinDistance(float value)
{
value = Math::Max(0.0f, value);
if (_minDistance == value)
if (Math::NearEqual(_minDistance, value))
return;
_minDistance = value;
UpdateInfo();
@@ -69,7 +69,7 @@ void VideoPlayer::SetAudioMinDistance(float value)
void VideoPlayer::SetAudioAttenuation(float value)
{
value = Math::Max(0.0f, value);
if (_attenuation == value)
if (Math::NearEqual(_attenuation, value))
return;
_attenuation = value;
UpdateInfo();