AngelScript
|
Path: /sdk/add_on/scripthandle/
The ref
type is a generic container that can hold any handle. It is a value type, but behaves very much like an object handle.
The type is registered with RegisterScriptHandle(asIScriptEngine*)
.
class CScriptHandle { public: // Constructors CScriptHandle(); CScriptHandle(const CScriptHandle &other); CScriptHandle(void *ref, int typeId); ~CScriptHandle(); // Copy the stored reference from another handle object CScriptHandle &operator=(const CScriptHandle &other); // Set the reference void Set(void *ref, int typeId); // Compare equalness bool operator==(const CScriptHandle &o) const; bool operator!=(const CScriptHandle &o) const; bool opEquals(void *ref, int typeId) const; // Dynamic cast to desired handle type void Cast(void **outRef, int typeId); };
In the scripts it can be used as follows:
ref@ unknown;
// Store a handle in the ref variable object obj; @unknown = @obj;
// Compare equalness if( unknown != null ) { // Dynamically cast the handle to wanted type object @obj2 = cast<object>(unknown); if( obj2 != null ) { ... } }