// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
namespace FlaxEngine
{
///
/// Represents the reference to the scene asset. Stores the unique ID of the scene to reference. Can be used to load the selected scene.
///
public struct SceneReference : IComparable, IComparable, IComparable
{
///
/// The identifier of the scene asset (and the scene object).
///
public Guid ID;
///
/// Initializes a new instance of the class.
///
/// The identifier of the scene asset.
public SceneReference(Guid id)
{
ID = id;
}
///
/// Compares two values and returns true if are equal or false if unequal.
///
/// The left value.
/// The right value.
/// True if values are equal, otherwise false.
public static bool operator ==(SceneReference left, SceneReference right)
{
return left.ID == right.ID;
}
///
/// Compares two values and returns false if are equal or true if unequal.
///
/// The left value.
/// The right value.
/// True if values are not equal, otherwise false.
public static bool operator !=(SceneReference left, SceneReference right)
{
return left.ID != right.ID;
}
///
/// Compares two values and returns true if are equal or false if unequal.
///
/// The left value.
/// The right value.
/// True if values are equal, otherwise false.
public static bool operator ==(SceneReference left, Guid right)
{
return left.ID == right;
}
///
/// Compares two values and returns false if are equal or true if unequal.
///
/// The left value.
/// The right value.
/// True if values are not equal, otherwise false.
public static bool operator !=(SceneReference left, Guid right)
{
return left.ID != right;
}
///
public int CompareTo(object obj)
{
if (obj is Guid id)
return CompareTo(id);
if (obj is SceneReference other)
return CompareTo(other);
return 0;
}
///
public int CompareTo(Guid other)
{
return ID.CompareTo(other);
}
///
public int CompareTo(SceneReference other)
{
return ID.CompareTo(other.ID);
}
///
public override bool Equals(object obj)
{
if (obj is Guid id)
return ID == id;
if (obj is SceneReference other)
return ID == other.ID;
return false;
}
///
public override int GetHashCode()
{
return ID.GetHashCode();
}
///
public override string ToString()
{
return ID.ToString();
}
}
}