mirror of
https://github.com/ZuneDev/Xune.git
synced 2026-07-27 13:13:10 -07:00
143 lines
4.7 KiB
C#
143 lines
4.7 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Microsoft.Iris.Render.Graphics.EffectProperty
|
|
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
|
|
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
|
|
|
|
using Microsoft.Iris.Render.Common;
|
|
using Microsoft.Iris.Render.Internal;
|
|
|
|
namespace Microsoft.Iris.Render.Graphics
|
|
{
|
|
internal class EffectProperty : RenderObject
|
|
{
|
|
private const byte k_dynamicFlag = 128;
|
|
private byte m_nID;
|
|
private object m_oValue;
|
|
private byte m_propertyType;
|
|
|
|
internal EffectProperty(
|
|
string stName,
|
|
EffectPropertyType eptType,
|
|
bool fIsDynamic,
|
|
object oValue,
|
|
byte nID)
|
|
{
|
|
this.m_propertyType = (byte)eptType;
|
|
this.IsDynamic = fIsDynamic;
|
|
this.m_nID = nID;
|
|
this.Value = oValue;
|
|
}
|
|
|
|
private EffectProperty(EffectProperty copy)
|
|
{
|
|
this.m_propertyType = copy.m_propertyType;
|
|
this.IsDynamic = copy.IsDynamic;
|
|
this.m_nID = copy.m_nID;
|
|
this.Value = copy.Value;
|
|
}
|
|
|
|
protected override void Dispose(bool fInDispose)
|
|
{
|
|
try
|
|
{
|
|
if (!fInDispose || this.m_oValue == null)
|
|
return;
|
|
this.ModifyUsage(false);
|
|
this.m_oValue = (object)null;
|
|
}
|
|
finally
|
|
{
|
|
base.Dispose(fInDispose);
|
|
}
|
|
}
|
|
|
|
internal object Value
|
|
{
|
|
get => this.m_oValue;
|
|
set
|
|
{
|
|
this.ModifyUsage(false);
|
|
this.m_oValue = value;
|
|
this.ModifyUsage(true);
|
|
}
|
|
}
|
|
|
|
internal bool IsDynamic
|
|
{
|
|
get => ((int)this.m_propertyType & 128) == 128;
|
|
set
|
|
{
|
|
if (value)
|
|
this.m_propertyType |= (byte)128;
|
|
else
|
|
this.m_propertyType &= (byte)127;
|
|
}
|
|
}
|
|
|
|
internal bool IsSharedResource => this.Type == EffectPropertyType.Image || this.Type == EffectPropertyType.ImageArray || this.Type == EffectPropertyType.Video;
|
|
|
|
internal EffectPropertyType Type => (EffectPropertyType)((uint)this.m_propertyType & 4294967167U);
|
|
|
|
internal byte ID
|
|
{
|
|
get => this.m_nID;
|
|
set => this.m_nID = value;
|
|
}
|
|
|
|
internal bool HasIdenticalValue(object oValue)
|
|
{
|
|
switch (this.Type)
|
|
{
|
|
case EffectPropertyType.Integer:
|
|
return (int)this.Value == (int)oValue;
|
|
case EffectPropertyType.Float:
|
|
return !Math2.WithinEpsilon((float)this.Value, (float)oValue);
|
|
case EffectPropertyType.Vector2:
|
|
return (Vector2)this.Value == (Vector2)oValue;
|
|
case EffectPropertyType.Vector3:
|
|
return (Vector3)this.Value == (Vector3)oValue;
|
|
case EffectPropertyType.Vector4:
|
|
return (Vector4)this.Value == (Vector4)oValue;
|
|
case EffectPropertyType.Image:
|
|
return (Image)this.Value == (Image)oValue;
|
|
case EffectPropertyType.Color:
|
|
return (ColorF)this.Value == (ColorF)oValue;
|
|
case EffectPropertyType.ImageArray:
|
|
SharedResource[] resources1 = ((SharedResourceArray)oValue).Resources;
|
|
SharedResource[] resources2 = ((SharedResourceArray)this.Value).Resources;
|
|
if (resources1.Length != resources1.Length)
|
|
return false;
|
|
for (int index = 0; index < resources2.Length; ++index)
|
|
{
|
|
if (resources2[index] != resources1[index])
|
|
return false;
|
|
}
|
|
return true;
|
|
case EffectPropertyType.Video:
|
|
return (VideoStream)this.Value == (VideoStream)oValue;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
internal EffectProperty Clone() => new EffectProperty(this);
|
|
|
|
private void ModifyUsage(bool fLock)
|
|
{
|
|
if (this.m_oValue == null || !(this.m_oValue is SharedResource oValue))
|
|
return;
|
|
if (fLock)
|
|
{
|
|
oValue.RegisterUsage((object)this);
|
|
oValue.AddActiveUser((object)this);
|
|
}
|
|
else
|
|
{
|
|
oValue.RemoveActiveUser((object)this);
|
|
oValue.UnregisterUsage((object)this);
|
|
}
|
|
}
|
|
}
|
|
}
|