⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oasislua_export_wrap_luabind.cpp

📁 使用stl技术,(还没看,是听说的)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
** Lua binding:
**   disentangled from the main distribution for ease
**   adding different languages. Exportation only.
*/ 
#ifdef HAS_LUA

#include "oasisCommon.h"
#include "oasisVector3.h"
#include "oasisQuaternion.h"
#include "oasisColour.h"
#include "oasisFrameListener.h"
#include "oasisResource.h"
#include "oasisResourceManager.h"
#include "oasisSystem.h"
#include "oasisMovable.h"
#include "oasisSingleton.h"
#include "oasisPool.h"
#include "oasisPoolable.h"
#include "oasisAudible.h"
#include "oasisPhysical.h"
#include "oasisVisible.h"
#include "oasisCameraSystem.h"
#include "oasisFrameListenerSystem.h"
#include "oasisGraphicsSystem.h"
#include "oasisObjectResource.h"
#include "oasisObjectSystem.h"
#include "oasisPhysics.h"
#include "oasisJoint.h"
#include "oasisJoints.h"
#include "oasisProxy.h"
#include "oasisProxies.h"
#include "oasisPhysicsResource.h"
#include "oasisMass.h"
#include "oasisPhysicsSystem.h"
#include "oasisSound.h"
#include "oasisSoundResource.h"
#include "oasisSoundSystem.h"
#include "oasisScriptSystem.h"
#include "oasisObject.h"
#include "oasisEntity.h"

#include "lua.h"
#include "luabind.hpp"
#include "oasisLua_export_wrap.h"
using namespace Oasis;

int errorHandler( lua_State *L ) {
  string error = lua_tostring( L, 1 );
  scriptSystem::get( ).scriptLog( error );
  return 1;
}

/* Exported function */
int lua_engine_open( lua_State* L ) {
  lua_State *engine = L;
  luabind::open( L );
  
 // Redirect errors
 lua_register( engine, 
   "_ALERT",
 ( lua_CFunction )&errorHandler );
    scriptSystem::get( ).scriptLog( 
            "Registering custom types..." );

  luabind::module( engine ) [
    luabind::class_< vector3 >( "vector3" )
    .def( luabind::constructor< >( ) )
    .def( luabind::constructor< real, real, real >( ) )
    .def( luabind::self * int( ) )
    .def_readwrite( "x", &vector3::x )
    .def_readwrite( "y", &vector3::y )
    .def_readwrite( "z", &vector3::z )
  ];
   scriptSystem::get( ).scriptLog( "Vector3 registered" );
   
   
   luabind::module( engine ) [
    luabind::class_< quaternion >( "quaternion" )
    .def( luabind::constructor< >( ) )
    .def( luabind::constructor< real, real, real, real >( ) )
    .def( "fromAxisAndAngle", &quaternion::fromAxisAndAngle )
    .def_readwrite( "w", &quaternion::w )
    .def_readwrite( "x", &quaternion::x )
    .def_readwrite( "y", &quaternion::y )
    .def_readwrite( "z", &quaternion::z )
  ];
   scriptSystem::get( ).scriptLog( "Quaternion registered" );
   
   luabind::module( engine ) [
    luabind::class_< colour >( "colour" )
    .def( luabind::constructor< >( ) )
    .def( luabind::constructor< real, real, real, real >( ) )
    .def_readwrite( "red", &colour::red )
    .def_readwrite( "green", &colour::green )
    .def_readwrite( "blue", &colour::blue )
    .def_readwrite( "alpha", &colour::alpha )
  ];
   scriptSystem::get( ).scriptLog( "Colour registered" );
   
   luabind::module( engine ) [
    luabind::class_< audible >( "audible" )
   .def( "addSound", ( sound*( audible::* )( const string&, const string& ) )
    &audible::addSound )
    .def( "addSound", ( void( audible::* )( const string&, sound* ) )
    &audible::addSound )
    .def( "getSound", &audible::getSound )
    .def( "playSound", &audible::playSound )
    .def( "stopSound", &audible::stopSound )
    .def( "stopAllSounds", &audible::stopAllSounds )
    .def( "removeAllSounds", &audible::removeAllSounds )
    .def( "removeAndDestroyAllSounds", &audible::removeAndDestroyAllSounds )
    .def( "removeSound", &audible::removeSound )
    .def( "removeAndDestroySound", &audible::removeAndDestroySound )
  ];
  scriptSystem::get( ).scriptLog( "Audible registered" );
  /* 
   luabind::module( engine ) [
    luabind::class_< movable >( "movable" )
    .def( "setPosition", ( void( movable::* )( real, real, real ) )
   &movable::setPosition )
    .def( "setPosition", ( void( movable::* )( const vector3& ) )
   &movable::setPosition )
    .def( "getPosition", &movable::getPosition )
    .def( "move", ( void( movable::* )( real, real, real ) )
   &movable::move )
    .def( "move", ( void( movable::* )( const vector3& ) )
   &movable::move )
    .def( "moveRelative", ( void( movable::* )( real, real, real ) )
   &movable::moveRelative )
    .def( "moveRelative", ( void( movable::* )( const vector3& ) )
   &movable::moveRelative )
    .def( "rotate", ( void( movable::* )( real, real, real, real ) )
   &movable::rotate )
    .def( "rotate", ( void( movable::* )( const vector3&, real ) )
   &movable::rotate )
    .def( "rotate", ( void( movable::* )( const quaternion& ) )
   &movable::rotate )
    .def( "setOrientation", &movable::setOrientation )
    .def( "getOrientation", &movable::getOrientation )
    .def( "getDirection", &movable::getDirection )
  ];
   scriptSystem::get( ).scriptLog( "Movable registered" );
   
   luabind::module( engine ) [
    luabind::class_< physical, movable >( "physical" )
    .def( "enablePhysics", &physical::enablePhysics )
    .def( "setPhysics", ( void( physical::* )( physics* ) )
   &physical::setPhysics )
    .def( "setPhysics", ( physics*( physical::* )( const string& ) )
   &physical::setPhysics )
    .def( "getPhysics", &physical::getPhysics )
    .def( "removePhysics", &physical::removePhysics )
    .def( "removeAndDestroyPhysics", &physical::removeAndDestroyPhysics )
  ];
   scriptSystem::get( ).scriptLog( "Physical registered" );
   
   luabind::module( engine ) [
    luabind::class_< visible >( "visible" )
    .def( "scale", ( void( visible::* )( real, real, real ) )
   &visible::scale )
    .def( "scale", ( void( visible::* )( const vector3& ) )
   &visible::scale )      
    .def( "setScale", ( void( visible::* )( real, real, real ) )
   &visible::setScale )
    .def( "setScale", ( void( visible::* )( const vector3& ) )
   &visible::setScale )
    .def( "getScale", &visible::getScale )
    .def( "setEntity", ( entity*( visible::* )( const string& ) )
          &visible::setEntity )
    .def( "setEntity", ( void( visible::* )( entity* ) )
          &visible::setEntity )
    .def( "getEntity", &visible::getEntity )
    .def( "removeEntity", &visible::removeEntity )
    .def( "removeAndDestroyEntity", &visible::removeAndDestroyEntity )
  ];
   scriptSystem::get( ).scriptLog( "Visible registered" );
   
   luabind::module( engine ) [
    luabind::class_< pool >( "pool" )
    .def( "clearPool", &pool::clearPool )
    .def( "getPoolName", &pool::getPoolName )
    .def( "setPoolSize", &pool::setPoolSize )
    .def( "getPoolSize", &pool::getPoolSize )
    .def( "getNextUniqueName", &pool::getNextUniqueName )
  ];
   scriptSystem::get( ).scriptLog( "Pool registered" );

   /// More
  luabind::module( engine ) [
    luabind::class_< cameraSystem, movable >( "cameraSystem" )
    .def( "reset", &cameraSystem::reset )
    .def( "setSoundListener", &cameraSystem::setSoundListener )     
    .def( "setDirection", ( void( cameraSystem::* )( real, real, real ) )
    &cameraSystem::setDirection )
    .def( "setDirection", ( void( cameraSystem::* )( const vector3& ) )
    &cameraSystem::setDirection )    
    .def( "lookAt", ( void( cameraSystem::* )( const object* ) )
    &cameraSystem::lookAt )
    .def( "lookAt", ( void( cameraSystem::* )( real, real, real ) )
    &cameraSystem::lookAt )
    .def( "lookAt", ( void( cameraSystem::* )( const vector3& ) )
    &cameraSystem::lookAt )
  ];
   luabind::module( engine ) [
    luabind::def( "getCameraSystem", &cameraSystem::get )
  ];

  luabind::module( engine ) [
    luabind::class_< frameListenerSystem >( "frameListenerSystem" )
    .def( "reset", &frameListenerSystem::reset )
    .def( "setTimeScale", &frameListenerSystem::setTimeScale )
    .def( "getTimeScale", &frameListenerSystem::getTimeScale )
  ];
   luabind::module( engine ) [
    luabind::def( "getFrameListenerSystem", &frameListenerSystem::get )
  ];

  luabind::module( engine ) [
    luabind::class_< graphicsSystem >( "graphicsSystem" )
    .enum_( "DetailLevel" ) [
      luabind::value( "DL_POINTS", 0 ),
  luabind::value( "DL_WIREFRAME", 1 ),
  luabind::value( "DL_SOLID", 2 )
    ]
    .enum_( "FogMode" ) [
      luabind::value( "FM_NONE", 0 ),
  luabind::value( "FM_EXP", 1 ),
  luabind::value( "FM_EXP2", 2 ),
  luabind::value( "FM_LINEAR", 3 )
    ]
    .def( "reset", &graphicsSystem::reset )
    .def( "setSkyBox", &graphicsSystem::setSkyBox )
    .def( "setFog", &graphicsSystem::setFog )
    .def( "setBackgroundColour", ( void( graphicsSystem::* )( real, real, real ) )
    &graphicsSystem::setBackgroundColour )
    .def( "setBackgroundColour", ( void( graphicsSystem::* )( const colour& ) )
    &graphicsSystem::setBackgroundColour )
    .def( "setAmbientLight", ( void( graphicsSystem::* )( real, real, real ) )
    &graphicsSystem::setAmbientLight )
    .def( "setAmbientLight", ( void( graphicsSystem::* )( const colour& ) )
    &graphicsSystem::setAmbientLight )
    .def( "takeShot", ( void( graphicsSystem::* )( const string& ) )
    &graphicsSystem::takeShot )
    .def( "takeShot", ( void( graphicsSystem::* )( void ) )
    &graphicsSystem::takeShot )
    .def( "setDetailLevel", &graphicsSystem::setDetailLevel )
    .def( "createEntity", &graphicsSystem::createEntity )
    .def( "removeEntity", ( void( graphicsSystem::* )( entity* ) )
    &graphicsSystem::removeEntity )
    .def( "removeEntity", ( void( graphicsSystem::* )( const string& ) )
    &graphicsSystem::removeEntity )
    .def( "getEntity", &graphicsSystem::getEntity )
  ];
  luabind::module( engine ) [
   luabind::class_< entity >( "entity" )     
   .def( "setAllMaterials", &entity::setAllMaterials )
  ];
  luabind::module( engine ) [
    luabind::def( "getGraphicSystem", &graphicsSystem::get )
  ];

  luabind::module( engine ) [
    luabind::class_< objectSystem, pool >( "objectSystem" )
    .def( "reset", &objectSystem::reset )
    .def( "getObjectTemplate", &objectSystem::getObjectTemplate )
    .def( "createObjectTemplate", &objectSystem::createObjectTemplate )
    .def( "createObject", &objectSystem::createObject )
    .def( "removeObject", ( void( objectSystem::* )( object* ) )
    &objectSystem::removeObject )      
    .def( "removeObject", ( void( objectSystem::* )( const string& ) )
    &objectSystem::removeObject )
    .def( "getObject", &objectSystem::getObject )
  ];

  luabind::module( engine ) [
    luabind::class_< objectResource >( "objectResource" )
    .def( "setScale", ( void( objectResource::* )( real, real, real ) )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -