public T GetField <T>(string name) { name = name.ToLowerInvariant(); if (!_fieldNames.ContainsKey(name)) { return((T)_privateFields[name]); } object returnValue = null; int fieldID = _fieldNames[name]; GameInterface.Script_GetField(_entRef, fieldID); switch (GameInterface.Script_GetType(0)) { case VariableType.Integer: returnValue = GameInterface.Script_GetInt(0); break; case VariableType.Float: returnValue = GameInterface.Script_GetFloat(0); break; case VariableType.String: returnValue = GameInterface.Script_GetString(0); break; case VariableType.Vector: Vector3 outValue; GameInterface.Script_GetVector(0, out outValue); returnValue = outValue; break; } GameInterface.Script_CleanReturnStack(); return((T)Convert.ChangeType(returnValue, typeof(T))); }