IUseableItem provides an interface for an Item that can be used. Examples of being used include being fired, swung, or thrown. The Weapon and ThrowableItem components implement this interface. This interface provides the methods which allow the handler to try to use the Item, determine if the Item is in use, and try to stop the in-use Item.
The implementer can register to receive a callback to know when to actually be used. An example of use for this is when the Grenade is being thrown. The Grenade shouldn’t be thrown immediately because it should wait for the hand’s animations to get to an appropriate release point. When the hands reach this release point an animation event will be triggered which will then callback to the IUseableItem.