Снегопат

Обсуждение Снегопата
Текущее время: 22 ноя 2024, 18:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 13 июл 2016, 16:55 
Не в сети

Зарегистрирован: 11 апр 2012, 19:19
Сообщения: 22
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"
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 15 июл 2016, 07:30 
Не в сети

Зарегистрирован: 06 сен 2013, 07:59
Сообщения: 204
Александр, если не сложно, небольшое видео или текстовое описание, как можно использовать свои angelscript. Как подключить, как вызывать из макросов и т.п. Понимаю, что времени не хватает, поэтому терпеливо жду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 15 июл 2016, 10:56 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
advali писал(а):
Александр, если не сложно, небольшое видео или текстовое описание, как можно использовать свои angelscript. Как подключить, как вызывать из макросов и т.п. Понимаю, что времени не хватает, поэтому терпеливо жду.


Расширить движок снегопата можно скриптом на AngelScript.
Все файлы с расширением *.as из папок 'core\engine' и 'mods' загружаются в единый модуль и компилируются в
движок снегопата в момент его старта.

Если вам не нужно глубоко менять поведение снегопата, а достаточно добавить функционал в виде аддина,
то в снегопате есть простая возможность сделать встроенный аддин на AngelScript.
Для этого вам нужно создать класс наследник от BuiltinAddin, создать глобальный объект
этого класса, и в конструкторе вызвать конструктор базового класса.
Аддин будет показан в ветке "Служебные аддины"

Законченный пример прилагается.


Вложения:
mods.zip [1.77 КБ]
Скачиваний: 576
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 19 июл 2016, 06:39 
Не в сети

Зарегистрирован: 28 окт 2015, 08:17
Сообщения: 36
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"
}


Да, так гораздо лучше. А то я ведь сварщик ненастоящий :)
Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 25 окт 2016, 20:29 
Не в сети

Зарегистрирован: 24 авг 2011, 15:26
Сообщения: 270
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)
так правильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 26 окт 2016, 21:47 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
orefkov, и у меня вопрос. Можно ли как-то передавать 1C-объекты в скрипт/dll, не делая обертки на AS вручную?

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 27 окт 2016, 00:35 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Если речь идёт об объектах 1С, которые можно создать в "Новый", то можно, 1С сама умеет такие объекты оборачивать в COM.
Для этого 1С сама предоставляет val2var.
Она много где используется в движке снегопата, смотрите.

Если речь о нативных интерфейсах 1С, то нет. Я не стал этого делать, так как в большей части случаев параметры не совместимы с COM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AngelScript: вопросы и пожелания
СообщениеДобавлено: 27 окт 2016, 10:00 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
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[адрес]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB