/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */ #include "stdafx.h" #include "V8DataModel/PluginManager.h" #include "Script/Script.h" #include "Script/ScriptContext.h" #include "Util/FileSystem.h" #include "Util/standardout.h" #include "V8DataModel/ContentProvider.h" #include "V8DataModel/DataModel.h" #include "V8Xml/SerializerV2.h" #include "V8Xml/Serializer.h" #include "Tool/ToolsArrow.h" #include #include "script/LuaInstanceBridge.h" const char* const RBX::sPluginManager = "PluginManager"; const char* const RBX::sPlugin = "Plugin"; const char *const RBX::sToolbar = "Toolbar"; const char *const RBX::sButton = "Button"; using namespace RBX; REFLECTION_BEGIN(); // Reflections static Reflection::CustomBoundFuncDesc()> func_createPlugin(&PluginManager::createPlugin, "CreatePlugin", Security::Plugin); static Reflection::BoundFuncDesc func_openWikiPage(&Plugin::openWikiPage, "OpenWikiPage", "url", Security::Plugin); static Reflection::BoundFuncDesc()> func_getMouseLua(&Plugin::getMouseLua, "GetMouse", Security::Plugin); static Reflection::BoundFuncDesc func_activate(&Plugin::activate, "Activate", "exclusiveMouse", Security::Plugin); static Reflection::BoundFuncDesc(std::string)> func_createToolbar(&Plugin::createToolbar, "CreateToolbar", "name", Security::Plugin); static Reflection::BoundFuncDesc func_setSetting(&Plugin::setSetting, "SetSetting", "key", "value", Security::Plugin); static Reflection::BoundFuncDesc func_getSetting(&Plugin::getSetting, "GetSetting", "key", Security::Plugin); static Reflection::BoundFuncDesc func_getStudioUserId(&Plugin::getStudioUserId, "GetStudioUserId", Security::Plugin); static Reflection::EventDesc desc_Plugin_Deactivation(&Plugin::deactivationSignal, "Deactivation", Security::Plugin); static Reflection::BoundFuncDesc func_saveSelectedToRoblox(&Plugin::saveSelectedToRoblox, "SaveSelectedToRoblox", Security::Plugin); //CSG static Reflection::BoundFuncDesc( shared_ptr )> plugin_Union( &Plugin::csgUnion, "Union", "objects", Security::Plugin ); static Reflection::BoundFuncDesc( shared_ptr )> plugin_Negate( &Plugin::csgNegate, "Negate", "objects", Security::Plugin ); static Reflection::BoundFuncDesc( shared_ptr )> plugin_Separate( &Plugin::csgSeparate, "Separate", "objects", Security::Plugin ); static Reflection::BoundYieldFuncDesc func_promptForExistingAssetId(&Plugin::promptForExistingAssetId, "PromptForExistingAssetId", "assetType", Security::Plugin); static Reflection::BoundFuncDesc(std::string, std::string, std::string)> func_createButton(&Toolbar::createButton, "CreateButton", "text", "tooltip", "iconname", Security::Plugin); static Reflection::BoundFuncDesc func_setButtonActive(&Button::setActive, "SetActive", "active", Security::Plugin); static Reflection::EventDesc desc_buttonClick(&Button::clickSignal, "Click", Security::Plugin); static Reflection::BoundFuncDesc, int)> func_openScript(&Plugin::openScriptDoc, "OpenScript", "script", "lineNumber", 0, Security::Plugin); static Reflection::BoundFuncDesc func_exportPlace(&PluginManager::exportPlace, "ExportPlace", "filePath", "", Security::Plugin); static Reflection::BoundFuncDesc func_exportSelection(&PluginManager::exportSelection, "ExportSelection", "filePath", "", Security::Plugin); static Reflection::PropDescriptor prop_CollisionActive("CollisionEnabled", category_Data, &Plugin::isCollisionOn, NULL, Reflection::PropertyDescriptor::UI); static Reflection::PropDescriptor prop_GridSize("GridSize", category_Data, &Plugin::getGridSize, NULL, Reflection::PropertyDescriptor::UI); static Reflection::BoundFuncDesc func_getJoinMode(&Plugin::getJoinMode, "GetJoinMode", Security::Plugin); REFLECTION_END(); namespace { void runAllPluginScriptsHelper(ScriptContext* scriptContext, shared_ptr plugin, shared_ptr descendant) { shared_ptr