Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
lm3:ce:t_mentor [2020/12/08 18:35] admin старая версия восстановлена (2020/12/08 18:33) |
lm3:ce:t_mentor [2020/12/08 18:49] (текущий) ruben |
||
|---|---|---|---|
| Строка 5: | Строка 5: | ||
| ==== Пример реализации ==== | ==== Пример реализации ==== | ||
| - | Рассмотрим проект обучения обслуживания серверов: | + | Рассмотрим проект обучения обслуживания серверов: |
| Дополнительно в проекте реализована доставка текстового контента на VR шлем (текстовый чат). | Дополнительно в проекте реализована доставка текстового контента на VR шлем (текстовый чат). | ||
| Строка 33: | Строка 33: | ||
| ==== Файловая структура проекта ==== | ==== Файловая структура проекта ==== | ||
| - | ==== ==== | + | {{ : |
| + | |||
| + | ==== Скрипты | ||
| + | |||
| + | ** main / start.lua ** | ||
| + | |||
| + | <code lua> | ||
| + | lm3: | ||
| + | lm3: | ||
| + | |||
| + | lm3: | ||
| + | server: | ||
| + | server: | ||
| + | |||
| + | lm3: | ||
| + | packer: | ||
| + | |||
| + | init_Clients(" | ||
| + | |||
| + | init_Telemetry(" | ||
| + | |||
| + | init_MsgSender(" | ||
| + | |||
| + | server: | ||
| + | server: | ||
| + | server: | ||
| + | packer: | ||
| + | |||
| + | clients: | ||
| + | msgSender: | ||
| + | |||
| + | packer: | ||
| + | -- lm3: | ||
| + | |||
| + | for obj_name, obj_data in pairs(ev.Data) do | ||
| + | if obj_name == " | ||
| + | for attr_name, attr_value in pairs(obj_data) do | ||
| + | if attr_name == " | ||
| + | clients: | ||
| + | elseif attr_name == " | ||
| + | clients: | ||
| + | end | ||
| + | end | ||
| + | elseif obj_name == " | ||
| + | clients: | ||
| + | elseif obj_name == " | ||
| + | for attr_name, attr_value in pairs(obj_data) do | ||
| + | if attr_name == " | ||
| + | msgSender: | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | </ | ||
| + | |||
| + | ** main / mp_lib.lua ** | ||
| + | |||
| + | <code lua> | ||
| + | function init_Clients(_name) | ||
| + | local obj = lm3: | ||
| + | |||
| + | obj.ClientList = {} | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | obj.ClientList[i] = { | ||
| + | isConnected = false, | ||
| + | Type = "" | ||
| + | } | ||
| + | end | ||
| + | |||
| + | obj: | ||
| + | lm3: | ||
| + | |||
| + | obj.ClientList[ev].isConnected = true | ||
| + | obj.ClientList[ev].Type = " | ||
| + | obj.ClientList[ev].Visability = true | ||
| + | |||
| + | local sendData = { } | ||
| + | local needSend = false | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | if i ~= ev and obj.ClientList[i].isConnected == true then | ||
| + | sendData[" | ||
| + | needSend = true | ||
| + | end | ||
| + | end | ||
| + | |||
| + | if needSend == true then | ||
| + | obj:OnSend( { Tag = ev, Data = sendData } ) | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | lm3: | ||
| + | obj.ClientList[ev].isConnected = false | ||
| + | local sendData = { } | ||
| + | sendData[" | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | if obj.ClientList[i].isConnected == true then | ||
| + | obj:OnSend( { Tag = i, Data = sendData } ) | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | if obj.ClientList[ev.Tag].isConnected == true then | ||
| + | obj.ClientList[ev.Tag].Type = ev.Type | ||
| + | local sendData = { } | ||
| + | sendData[" | ||
| + | -- lm3: | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | if i ~= ev.Tag and obj.ClientList[i].isConnected == true then | ||
| + | obj:OnSend( { Tag = i, Data = sendData } ) | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | if obj.ClientList[ev.Tag].isConnected == true then | ||
| + | obj.ClientList[ev.Tag].Visability = ev.Visability | ||
| + | local sendData = { } | ||
| + | sendData[" | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | if i ~= ev.Tag and obj.ClientList[i].isConnected == true then | ||
| + | obj:OnSend( { Tag = i, Data = sendData } ) | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | local sendData = {} | ||
| + | sendData[" | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | if i ~= ev.Tag and obj.ClientList[i].isConnected == true then | ||
| + | obj:OnSend( { Tag = i, Data = sendData } ) | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | |||
| + | return obj | ||
| + | end | ||
| + | |||
| + | function init_Telemetry(_name) | ||
| + | local obj = lm3: | ||
| + | |||
| + | |||
| + | return obj | ||
| + | end | ||
| + | |||
| + | function init_MsgSender(_name) | ||
| + | local obj = lm3: | ||
| + | |||
| + | |||
| + | obj: | ||
| + | lm3: | ||
| + | -- todo | ||
| + | if clients.ClientList[ev.Tag].isConnected == true then | ||
| + | local sendData = { } | ||
| + | sendData[" | ||
| + | for i = 1, lmconf.MaxClientCount do | ||
| + | -- todo | ||
| + | if clients.ClientList[i].isConnected == true then | ||
| + | --if i ~= ev.Tag and obj.ClientList[i].isConnected == true then | ||
| + | obj:OnSend( { Tag = i, Data = sendData } ) | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | obj: | ||
| + | |||
| + | return obj | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Скриншоты | ||
| + | |||
| + | Ментор, | ||
| + | {{ : | ||
| + | |||
| + | Ментор, | ||
| + | {{ : | ||
| + | |||
| + | Ментор, | ||
| + | {{ : | ||
| + | |||
| + | VR учащийся | ||
| + | {{ : | ||
| - | ==== ==== | ||