/************************************************************************************//*! \file AnimationControllerAsset.hxx \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Mar 8, 2023 \brief Contains the definition of the managed AnimationController class. Note: This file is written in C++17/CLI. Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once // External Dependencies #include "Resource/SHHandle.h" #include "Animation/SHAnimationController.h" // Project Includes #include "NativeAsset.hxx" #include "Engine/GenericHandle.hxx" namespace SHADE { /// /// Managed counterpart of the native AnimationController object containing the /// state machine for controlling what AnimationClips that an Animator should play. /// public value struct AnimationControllerAsset { public: /*-----------------------------------------------------------------------------*/ /* Operator Overloads */ /*-----------------------------------------------------------------------------*/ /// /// Implicit conversion operator to enable checking if a AnimationController is valid. /// /// Asset to check. /// True if the Asset is valid. static operator bool(AnimationControllerAsset asset); internal: /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ /// /// Copy of the Handle to the native object. /// property Handle NativeObject { Handle get(); } /// /// The raw asset ID of the asset. /// property AssetID NativeAssetID { AssetID get(); } /*-----------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*-----------------------------------------------------------------------------*/ /// /// Constructor for the AnimationController. /// /// AssetID to the AnimationController asset. AnimationControllerAsset(AssetID AnimationControllerId); /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ /// /// Conversion operator to enable casting from a AnimationController to an Asset. /// /// Vector3 to convert from. static explicit operator Asset(AnimationControllerAsset nativeAsset); /// /// Conversion operator to enable casting from a Asset to a AnimationController. /// /// static explicit operator AnimationControllerAsset(Asset asset); protected: /*-----------------------------------------------------------------------------*/ /* Data Members */ /*-----------------------------------------------------------------------------*/ Asset asset; }; }