//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// using System; using System.Runtime.CompilerServices; namespace BansheeEngine { /** @addtogroup Resources * @{ */ /// /// Allows you to store a reference to a resource without needing to have that resource loaded. /// public class ResourceRef : ScriptObject { /// /// Constructor for internal use only. /// protected ResourceRef() { } /// /// Checks is the referenced resource loaded. /// public bool IsLoaded { get { return Internal_IsLoaded(mCachedPtr); } } /// public override bool Equals(object other) { if (!(other is ResourceRef)) return false; ResourceRef otherRef = (ResourceRef)other; UUID lhs, rhs; Internal_GetUUID(mCachedPtr, out lhs); Internal_GetUUID(otherRef.mCachedPtr, out rhs); return lhs.Equals(rhs); } /// public override int GetHashCode() { UUID uuid; Internal_GetUUID(mCachedPtr, out uuid); return uuid.GetHashCode(); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_IsLoaded(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] protected static extern Resource Internal_GetResource(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_GetUUID(IntPtr thisPtr, out UUID uuid); } /** @} */ }