Read this article in english
Si te gusta usar .net, puedes hacer que haga algunas tareas en Torque.
Esto es sólo un ejemplo de como usar .net en Torque.
Todo el código fuente es gratis y lo puedes usar bajo tu responsabilidad.
Si necesitas más referencias ve a la página web de MSDN o GarageGames. Alguna información ha sido extraída de esas páginas.
Para este ejemplo se ha usado Visual C# 2005, Visual C++ 2008 y las librerías de Mono (ms 2.0) para la conexión a PostgreSQL
Vamos a obtener la versión de la base de datos que es muy similar a hacer un “select” o un “insert”.
Como primer paso creamos una DLL (ClassLibrary) en C#.
Editamos el código fuente, añadimos el interface público y cambiamos su nombre. Este interface lo usaremos para exponer su métodos a través de COM.
Añadimos también la funcionalidad Postgres, en este caso, sólo un “select version()”.
namespace Database
{
public interface IPGDatabase
{
String pgVersion();
}
public class PGDatabase : IPGDatabase
{
conn = new NpgsqlConnection(“Server=192.168.11.150;Port=5432;User Id=user;Password=secret;Database=DBl;”);
conn.Open();
NpgsqlCommand command = new NpgsqlCommand(“select version()”, conn);
String serverversion;
Para exponer el interface com debemos editar el fichero AssemblyInfo.cs y cambiar la línea”[assembly: ComVisible(false)]” por “[assembly: ComVisible(true)]“.
Creamos ahora un nombre fuerte a nuestra DLL. Desde el prompt de Visual Studio teclea “snk.exe -k database.snk”. Copia este fichero al proyecto, edita las propiedades del proyecto y ve a la pestaña de firmar. Pincha sobre “Firmar el ensamblado” y elige el fichero recien creado.
Compila el proyecto para crear la DLL Managed
Vamos a registrar la información de ensamblado de la DLL.
Desde un prompt de Visual Studio, ve al directorio donde esté la DLL y teclea
regasm database.dll /tlb:database.tlb /codebase
Copia este fichero al proyecto Torque
Crea una clase en Torque y prepárala para usarla en la consola como el ejemplo de abajo (si tienes dudas ve a la página web de GarageGames)
{
…
public:
DECLARE_CONOBJECT( DBVersion );
…
IMPLEMENT_CONOBJECT( DBVersion );
…
ConsoleMethod(DBVersion,getVersion, const char*, 2, 2,“()Returns the postgresql.”)
Importa el fichero .tlb añadiendo la línea “#import “..\game\database.tlb” raw_interfaces_only”, y usa el nuevo espacio de nombres recien creado “using namespace database”
Si todo ha ido bien, tendremos acceso a nuestra dll managed
Creamos el puntero al interface y llamamos a nuestra función
IPGDatabasePtr pIDatabase(__uuidof(PGDatabase));
long lResult=0;
pIDatabase->pgVersion(&bstrstring);
CoUninitialize();
Como la DLL está devolviendo una cadena BSTR, necesitaremos hacer una pequeña conversion:
strcpy_s(version, (char *)_bstrstring);
return (StringTableEntry) &version[0];
Tiempo de probarlo. Compila el proyecto, ejecuta el motor de juegos torque, abre la consola y teclea:
$a=new DBVersion();
echo($a.getVersion());
¡Disfrútalo!
Notar que esto es sólo un ejemplo. No hay control de errores, el código se puede mejorar,…


0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment