Снегопат https://snegopat.ru/forum/ |
|
AngelScript: вопросы и пожелания https://snegopat.ru/forum/viewtopic.php?f=3&t=721 |
Страница 2 из 2 |
Автор: | vikad [ 13 июл 2016, 16:55 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
syuzyov писал(а): 3. Подменяем файл <VSC>\resources\app\extensions\cpp\package.json на приложенный (по умолчанию VSC = "C:\Program Files (x86)\Microsoft VS Code") Насколько я поняла, этот файл просто добавляет для расширения .as поддержку синтаксиса cpp (пожалуйста, поправьте меня, если я не права). К тому же, при обновлении самого vs code этот файл будет перезатираться, а значит, так лучше не делать. Для этого есть штатные средства - в файле пользовательских настроек (Файл - Параметры - Параметры пользователя) нужно просто добавить настройку: "files.associations": { "*.as": "cpp" } |
Автор: | advali [ 15 июл 2016, 07:30 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
Александр, если не сложно, небольшое видео или текстовое описание, как можно использовать свои angelscript. Как подключить, как вызывать из макросов и т.п. Понимаю, что времени не хватает, поэтому терпеливо жду. |
Автор: | orefkov [ 15 июл 2016, 10:56 ] | ||
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания | ||
advali писал(а): Александр, если не сложно, небольшое видео или текстовое описание, как можно использовать свои angelscript. Как подключить, как вызывать из макросов и т.п. Понимаю, что времени не хватает, поэтому терпеливо жду. Расширить движок снегопата можно скриптом на AngelScript. Все файлы с расширением *.as из папок 'core\engine' и 'mods' загружаются в единый модуль и компилируются в движок снегопата в момент его старта. Если вам не нужно глубоко менять поведение снегопата, а достаточно добавить функционал в виде аддина, то в снегопате есть простая возможность сделать встроенный аддин на AngelScript. Для этого вам нужно создать класс наследник от BuiltinAddin, создать глобальный объект этого класса, и в конструкторе вызвать конструктор базового класса. Аддин будет показан в ветке "Служебные аддины" Законченный пример прилагается.
|
Автор: | syuzyov [ 19 июл 2016, 06:39 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
vikad писал(а): syuzyov писал(а): 3. Подменяем файл <VSC>\resources\app\extensions\cpp\package.json на приложенный (по умолчанию VSC = "C:\Program Files (x86)\Microsoft VS Code") Насколько я поняла, этот файл просто добавляет для расширения .as поддержку синтаксиса cpp (пожалуйста, поправьте меня, если я не права). К тому же, при обновлении самого vs code этот файл будет перезатираться, а значит, так лучше не делать. Для этого есть штатные средства - в файле пользовательских настроек (Файл - Параметры - Параметры пользователя) нужно просто добавить настройку: "files.associations": { "*.as": "cpp" } Да, так гораздо лучше. А то я ведь сварщик ненастоящий Спасибо! |
Автор: | metaeditor [ 25 окт 2016, 20:29 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
to orefkov: расскажи пожалуйста как правильно подключать обработчики команд? создаю объект "получатель" команд и подключаю его Код: class ScintillaDesignerCommandsHandler { void OnToggleBookmark(CmdHandlerParam& cmd) { MsgBox("OnToggleBookmark"); } }; ScintillaDesignerCommandsHandler sciCommandsHandler; oneDesigner._events.addCommandHandler("{DE680E96-5826-4E22-834D-692E307A1D9C}", 11, createDispatchFromAS(&&sciCommandsHandler), "OnToggleBookmark"); но мой обработчик так и не вызывается и ещё вопрос, как в angelscript можно получить "указатель" на массив? есть некий массив array<int> вот его мне надо передать в процедуру в виде параметра у которого тип = LPARAM UPD: добавил в обработчик второй параметр и всё заработало void OnToggleBookmark(CmdHandlerParam& cmd, Variant& pVarResult) так правильно? |
Автор: | Magister [ 26 окт 2016, 21:47 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
orefkov, и у меня вопрос. Можно ли как-то передавать 1C-объекты в скрипт/dll, не делая обертки на AS вручную? |
Автор: | orefkov [ 27 окт 2016, 00:35 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
Если речь идёт об объектах 1С, которые можно создать в "Новый", то можно, 1С сама умеет такие объекты оборачивать в COM. Для этого 1С сама предоставляет val2var. Она много где используется в движке снегопата, смотрите. Если речь о нативных интерфейсах 1С, то нет. Я не стал этого делать, так как в большей части случаев параметры не совместимы с COM. |
Автор: | orefkov [ 27 окт 2016, 10:00 ] |
Заголовок сообщения: | Re: AngelScript: вопросы и пожелания |
metaeditor писал(а): to orefkov: расскажи пожалуйста как правильно подключать обработчики команд? создаю объект "получатель" команд и подключаю его Код: class ScintillaDesignerCommandsHandler { void OnToggleBookmark(CmdHandlerParam& cmd) { MsgBox("OnToggleBookmark"); } }; ScintillaDesignerCommandsHandler sciCommandsHandler; oneDesigner._events.addCommandHandler("{DE680E96-5826-4E22-834D-692E307A1D9C}", 11, createDispatchFromAS(&&sciCommandsHandler), "OnToggleBookmark"); но мой обработчик так и не вызывается и ещё вопрос, как в angelscript можно получить "указатель" на массив? есть некий массив array<int> вот его мне надо передать в процедуру в виде параметра у которого тип = LPARAM UPD: добавил в обработчик второй параметр и всё заработало void OnToggleBookmark(CmdHandlerParam& cmd, Variant& pVarResult) так правильно? По поводу командных обработчиков. Имхо лучше или вешать их в сопутствующем js-скрипте, и из скрипта вызывать метод аддина, либо доработать в движке снегопата процедуру transmitCommandTrap, добавив вызов нативных AngelScript подписчиков. Постараюсь реализовать второй способ. По массивам - array в AngelScript реализуется не самим AngelScript'ом, а подключаемым из хоста объектом с нужным интерфейсом. Поэтому никакой гарантии, что array<int> действительно внутри содержит массив интов - нет. Впрочем, снегопат подключает реализацию массивов именно массивами. И получить адрес самих данных можно попробовать через mem::addressOf(arr[0]) либо самому создать массив как MemoryBuffer. Для чтения и записи памяти используется Код: mem::byte[адрес]
mem::word[адрес] mem::dword[адрес] mem::qword[адрес] mem::real[адрес] mem::dreal[адрес] |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |