Вверх ↑
Этот топик читают: Гость
Ответов: 2200
Рейтинг: 673
#76: 2020-02-05 23:18:25 ЛС | профиль | цитата
UtoECat писал(а):
Как и способа поправить...
Способ очень простой: навести порядок в схеме.
карма: 11

0
Ответов: 167
Рейтинг: 7
#77: 2020-02-06 09:38:27 ЛС | профиль | цитата
sla8a писал(а):
навести порядок в схеме.

я не думаю, что непорядок в одном контейнере это критично, тем более - это пока что "черновая версия" и схему я в первый пост эту не добавил. Так что порядком заняться надо уже после того, как разберёмся с проблемой.

--- Добавлено в 2020-02-06 10:17:01

Я НАШЕЛ ПРИЧИНУ! УРА! [flood]и она была не в беспорядке [/flood]
Я точно не знаю как это работает, но всё же я усвоил, что регионы хранить в MT не следует. Можно было попробовать хранить их, конвертировав в поток, но я решил уже упростить всё до минимума, и :
allworking.jpg
Всё получилось . Осталось ещё много работы, но основы основ уже сделаны!

--- Добавлено в 2020-02-06 10:32:32

https://drive.google.com/file/d/1hSZ2NHk_rwfIMFWsENc440WUloV5iYaz/view?usp=sharingEXE&SHA INDEV 0.4
https://drive.google.com/file/d/1OU3zcyUC36MEqas5n4o5VivrqQq7fLSY/view?usp=sharing 0.4.1
Добавил возможность ставить разноцветные блоки (И чутку убрался в схеме).
Оптимизация установки блоков добавлена в следующей INDEV (0.4.1) [flood](Там ещё пиксельартик есть )[/flood]

--- Добавлено в 2020-02-06 10:34:00

sla8a писал(а):
а с позицией x и y будет меньше проблем

Всё-таки сжатые координаты удобнее хранить и использовать .

Редактировалось 5 раз(а), последний 2020-02-06 10:51:15
карма: 0
c, c++, lua
0
Ответов: 167
Рейтинг: 7
#78: 2020-02-07 14:27:10 ЛС | профиль | цитата
INDEV 0.5 :
https://drive.google.com/file/d/1bhSld9HehS51o_ujKD00G01lkx96qSMQ/view?usp=sharing
Нововведения

-Исправление мелких ошибок
-Добавление возможности поворота блоков, а так-же отключение выравнивания по сетке с помощью checkboxов
-В меню внесены незначительные изменения
-Добавлена возможность удаления мира, а так-же создания миров.(Изменение миров реализую позже)
И вроде всё . О чем-то мог и забыть.
Скриншоты

screenindev1.jpg
screenindev2.jpg
screenindev3.jpg

Редактировалось 1 раз(а), последний 2020-02-07 14:32:44
карма: 0
c, c++, lua
0
Ответов: 167
Рейтинг: 7
#79: 2020-02-19 08:39:16 ЛС | профиль | цитата
Новая Indev Версия!
Нововведения

    Добавлена возможность изменения размера блоков
    Добавлена возможность отключения коллизии при установке блоков (блок на блок) (только при выключенном удерживании)
    Ускорена отрисовка
    Блоки устанавливаются через отдельный поток
    ИЗМЕНЕНА СТРУКТУРА МИРА (Это значит, что миры старых версий не будут работать корректно!)
https://drive.google.com/file/d/1TGqaH35EHKYHBTjXZuNxzEhsuA7LCH2p/view?usp=sharing SHA&EXE
Screenshots

0.6.1.jpg
Пример отключения коллизии
Пример изменения размера блоков

--- Добавлено в 2020-02-19 08:57:30

Ещё один FAQ
Forum Ask and Questions

Q:Что делать, если блоки ставятся с большой задержкой и при этом игра виснет?
A:Попытайтесь уменьшить количество блоков в вашем мире. На данный момент игра плохо оптимизирована. Так же причиной может быть повреждённый мир...

Q:Что это за дичь?
A:Лицензионное соглашение

Q: Почему именно регионы? Чем GameEngine не по нраву ?
A: Смотрите выше...
UtoECat писал(а):
мир будет реализован на массиве регионов, которые можно будет поворачивать, перемещать и п.р (до трансформации дело тоже может дойти ) .У регионов куча плюсов ! И я очень надеюсь, что хоть это обновление я сделаю нормально...


Q: А где слаймик ?
A: \-("-")-/

Q:При создании мира есть возможность выбрать его тип. Но это ничего не даёт!
A: Это реализация на будущее

Q: большинство кнопок ведут тебя не в магазин, а в чёрный экран с надписью магазин! Сохранение аккаунта не работает! Что это вообще за [flood](тип цензура )[/flood]
A: Ира находится в стадии INDEV (In development - в разработке). Версии сырые, и в них мало-что реализовано! Но я могу с уверенностью сказать, что всё это будет реализовано в полной мере, или наполовину...

Редактировалось 7 раз(а), последний 2020-02-20 02:07:27
карма: 0
c, c++, lua
0
Ответов: 2200
Рейтинг: 673
#80: 2020-02-20 00:48:23 ЛС | профиль | цитата
UtoECat, вы не правильно используете элементы Регионы. По тому как вы их используете можно сделать вывод что вы не понимаете что такое регион.
1. Вместо того чтобы сразу создать регион в нужной позиции (X,Y), вы его создаете в позиции по умолчанию, а потом переносите.
2. Вместо того чтобы хранить регионы в массиве регионов (RGN_Array) вы постоянно создаете каждый регион по новой (перед рисованием, коллизией и т.д.)
3. У элемента коллизия регионов (RGN_Collision) выгоднее подключить точку array к массиву регионов (см. пункт 2) и упростить схему и ускорить программу.
При таком подходе даже не надейтесь на быстродействие вашей программы.
UtoECat писал(а):
Всё-таки сжатые координаты удобнее хранить и использовать
Ну мое дело предостеречь что грабли лежат, а вы как пару раз наступите (один раз уже наступили) то может поменяете свое мнение.
Схема хоть на схему стала похожа, еще бы связи распутать.
карма: 11

0
Ответов: 167
Рейтинг: 7
#81: 2020-02-20 02:03:52 ЛС | профиль | цитата
sla8a писал(а):
1. Вместо того чтобы сразу создать регион в нужной позиции (X,Y), вы его создаете в позиции по умолчанию, а потом переносите.

Согласен, тут я немного затупил
sla8a писал(а):
Вместо того чтобы хранить регионы в массиве регионов (RGN_Array) вы постоянно создаете каждый регион по новой (перед рисованием, коллизией и т.д.)

Объясняю : я не смог придумать то, как я буду хранить id блоков и их информацию... MTMTArray - лучший на мой взгляд решение... Создаются новые регионы перед отрисовкой потому, что при попытке хранить их из точки Region в MTПоток и как следствие в MTMTМассив не вышло... Это я обязательно как-нибудь переделаю, но хранить регионы в массиве регионов не собираюсь, т.к опять же - не могу примерно даже предположить то, как мне тогда хранить данные о блоке...
sla8a писал(а):
3. У элемента коллизия регионов (RGN_Collision) выгоднее подключить точку array к массиву регионов (см. пункт 2) и упростить схему и ускорить программу.

Так всё и работало в начальных версиях... Сейчас всё на MTMTArray...
Согласен - с быстродействием проблемки... Это я не раз ощутил...
sla8a писал(а):
Ну мое дело предостеречь что грабли лежат, а вы как пару раз наступите (один раз уже наступили) то может поменяете свое мнение.

А что не так с этими сжатыми координатами :/ ...

--- Добавлено в 2020-02-20 02:12:28

P.S:
UtoECat писал(а):
я не смог придумать то, как я буду хранить id блоков и их информацию...

На самом деле у меня были идеи, но я не смог их реализовать...

Редактировалось 1 раз(а), последний 2020-02-20 02:12:28
карма: 0
c, c++, lua
0
Ответов: 2200
Рейтинг: 673
#82: 2020-02-20 15:11:21 ЛС | профиль | цитата
UtoECat писал(а):
я не смог придумать то, как я буду хранить id блоков и их информацию...

1. Загружаете список ваших данных (мира) из файла.
2. Создаете регион и заносите его в массив регионов (RGN_Array).
3. Получаете из массива регионов только что добавленный регион (именно так, а не тот что сделали перед добавлением в массив регионов) и вместе с нужными вами данными (насколько разобрался в вашей схеме достаточно индекс рисунка и угол поворота) заносите его в MTMTArray. [регион][индекс рисунка][угол поворота] Координаты хранить в MTMTArray нет смысла, они есть в самом регионе. Перед сохранением мира сможете получить их из RGN_GetData (Данные о регионе).
4. У вас должно получится два массива с одинаковым количеством.
5. Для рисования перебираете MTMTArray, тут вам и регион и его картинка. Экономите на создании регионов.
6. Для обработки коллизии используете RGN_Array. Экономите на создании регионов и на прямую подключаете массив регионов к RGN_Collision.
7. Если удаляете регион, то удаляете по индексу из обоих массивов MTMTArray и RGN_Array.
8. Если изменяете регион, то заменяете регион по индексу в RGN_Array, получаете регион из RGN_Array и вносите измененный регион в MTMTArray.
Если какой пункт не понятен спрашивайте.

Редактировалось 2 раз(а), последний 2020-02-20 18:04:08
карма: 11

0
Ответов: 167
Рейтинг: 7
#83: 2020-02-21 01:06:48 ЛС | профиль | цитата
sla8a писал(а):
Создаете регион и заносите его в массив регионов (RGN_Array).

sla8a писал(а):
Получаете из массива регионов только что добавленный регион

sla8a писал(а):
и вместе с нужными вами данными (насколько разобрался в вашей схеме достаточно индекс рисунка и угол поворота) заносите его в MTMTArray

Зачем его туда заносить, если в MTMTArray хранятся лишь данные о блоках? И, кстати, можно обойтись и без угла поворота :з. Он тоже по сути хранится в регионе... Но я не понимаю одного... Что это за мистика такая... Мол... В чём отличие перебора массива регионов и MTМассива? Там что есть какая-то оптимизация? Я думал, что от обычного перебора MTмассива для проверки столкновений и RGМассива разницы не будет :/ ...

--- Добавлено в 2020-02-21 01:12:12

UtoECat писал(а):

На самом деле у меня были идеи, но я не смог их реализовать...

sla8a писал(а):
всё твоё сообщение :з

По сути, у меня изначально была точно такая-же идея... Но я е правильно её реализовал... Да ещё и большое количество ошибок допустил, не связанных с регионами :/ . Я обязательно попробую как-нибудь это сделать... Но всё-же, пожалуйста разъясните мне, [flood]пещерному человеку[/flood], какова существенная разница между моей желаемой, и моей уже реализованной реализацией? Неужели создание региона это дейтвительно очень ресурсозатратная вешь? :/ .

--- Добавлено в 2020-02-21 01:22:46

И, да, сразу спрошу на будущее... Я частенько подумывал над потимизацией... Вот у меня идея какая : что, если у меня будет не два массива (MTMTArray and RGArray), а четыре, но в поседних двух будут хранится данные и регионы только те, которые будут находится на экране (сталкиваться с регионом, соразмерным размеру DrawBoxa на котором это всё рисуется? Так как в планах у меня добавить возможность перемещения камеры... Насколько такая идея оптимальна? И хороша ли она? Или есть альтернатива, которая будет работать лучше?

Редактировалось 3 раз(а), последний 2020-02-21 01:22:46
карма: 0
c, c++, lua
0
Ответов: 2200
Рейтинг: 673
#84: 2020-02-22 13:36:01 ЛС | профиль | цитата
UtoECat писал(а):
без угла поворота :з. Он тоже по сути хранится в регионе
Не хранится в регионе угол поворота.
UtoECat писал(а):
Неужели создание региона это дейтвительно очень ресурсозатратная вешь?
Да дело не конкретно в регионе. Поймите на момент рисования, а это происходит несколько десятков раз в секунду, у вас уже должно быть все создано. И будь то регион, изменение размера картинки и прочее, нужно вынести из цикла рисования.
UtoECat писал(а):
не два массива (MTMTArray and RGArray), а четыре
Почему бы и нет. Вполне годная оптимизация. В играх обычно так и делают. Если игровой мир большой, то имеет смысл разбить его не части и подгружать данные по мере прохождения игрока.
Вот вам два наброска. В первом вариант с хранением данных в разных массивах. А во втором варианте весь мир один регион и рисуется не перебором, а сразу.
Схема 1

Add(MainForm,2953706,14,168)
{
Width=1200
Height=839
Position=1
Point(onClose)
link(onCreate,8694556:doEvent1,[])
link(onClose,7482565:doEnum,[(72,195)(72,286)])
}
Add(PaintBox,8412952,686,588)
{
Left=5
Top=5
Width=1000
Height=800
Color=15780518
Point(MouseX)
Point(MouseY)
Point(onMouseDown)
link(onMouseDown,6752386:doEvent,[])
}
Add(StrList,2670249,434,133)
{
Strings=#9:0.760.0.0|10:40.760.0.0|10:80.760.0.0|11:120.760.0.0|11:160.760.0.0|11:200.760.0.0|11:240.760.0.0|11:280.760.0.0|11:320.760.0.0|11:360.760.0.0|11:400.760.0.0|11:440.760.0.0|11:480.760.0.0|11:520.760.0.0|11:560.760.0.0|11:600.760.0.0|11:640.760.0.0|11:680.760.0.0|11:720.760.0.0|11:760.760.0.0|11:800.760.0.0|11:840.760.0.0|11:880.760.0.0|11:920.760.0.0|11:960.760.0.0|7:0.0.0.0|8:40.0.0.0|8:80.0.0.0|9:120.0.0.0|9:160.0.0.0|9:200.0.0.0|9:240.0.0.0|9:280.0.0.0|9:320.0.0.0|9:360.0.0.0|9:400.0.0.0|9:440.0.0.0|9:480.0.0.0|9:520.0.0.0|9:560.0.0.0|9:600.0.0.0|9:640.0.0.0|9:680.0.0.0|9:720.0.0.0|9:760.0.0.0|9:800.0.0.0|9:840.0.0.0|9:880.0.0.0|9:920.0.0.0|9:960.0.0.0|8:0.40.0.0|8:0.80.0.0|9:0.120.0.0|9:0.160.0.0|9:0.200.0.0|9:0.240.0.0|9:0.280.0.0|9:0.320.0.0|9:0.360.0.0|9:0.400.0.0|9:0.440.0.0|9:0.480.0.0|9:0.520.0.0|9:0.560.0.0|9:0.600.0.0|9:0.640.0.0|9:0.680.0.0|9:0.720.0.0|10:960.40.0.0|10:960.80.0.0|11:960.120.0.0|11:960.160.0.0|11:960.200.0.0|11:960.240.0.0|11:960.280.0.0|11:960.320.0.0|11:960.360.0.0|11:960.400.0.0|11:960.440.0.0|11:960.480.0.0|11:960.520.0.0|11:960.560.0.0|11:960.600.0.0|11:960.640.0.0|11:960.680.0.0|11:960.720.0.0|10:40.640.0.0|10:80.640.0.0|11:160.720.0.0|11:160.680.0.0|11:160.640.0.0|11:160.600.0.0|11:200.680.0.0|11:240.680.0.0|11:280.680.0.0|11:320.680.0.0|11:320.640.0.0|11:320.600.0.0|11:200.640.6.0|11:240.640.6.0|11:280.640.6.0|11:280.600.6.0|11:240.600.6.0|11:200.600.6.0|11:200.720.1.0|11:240.720.1.0|11:280.720.1.0|11:320.720.1.0|11:360.720.1.0|11:400.720.1.0|11:440.720.1.0|11:480.720.1.0|11:320.200.3.0|11:320.240.3.0|11:320.280.3.0|11:360.200.3.0|11:400.200.3.0|11:440.200.3.0|11:480.200.3.0|11:360.240.8.0|11:440.240.8.0|11:480.240.3.0|11:400.240.3.0|11:360.280.3.0|11:400.280.3.0|11:440.280.3.0|11:480.280.3.0|11:400.320.3.0|11:520.720.7.0|11:560.720.7.0|11:600.720.7.0|11:640.720.7.0|11:680.720.7.0|11:720.720.7.0|11:760.720.1.0|11:800.720.1.0|11:840.720.1.0|11:880.720.1.0|11:920.720.1.0|11:920.640.0.0|11:880.600.0.0|11:840.560.0.0|11:800.520.0.0|11:760.520.0.0|11:720.520.0.0|11:680.520.0.0|11:800.560.0.0|11:840.600.0.0|11:880.640.0.0|11:680.560.0.0|11:640.560.0.0|11:600.560.0.0|11:560.560.0.0|11:520.560.0.0|11:520.520.0.0|11:560.520.4.0|11:600.520.4.0|11:640.520.4.0|12:592.233.0.45|12:672.273.0.45|12:752.233.0.45|11:672.73.0.45|11:920.600.2.0|11:920.560.2.0|11:880.560.2.0|11:920.520.2.0|11:880.520.2.0|11:840.520.2.0|10:40.400.0.0|10:80.400.0.0|11:120.400.0.0|11:160.400.0.0|10:40.360.0.0|10:40.320.0.0|10:80.360.0.0|11:120.360.0.0|10:80.320.0.0|10:40.280.0.0|11:160.560.0.0|11:120.560.0.0|10:80.560.0.0|10:40.480.0.0|10:80.480.0.0|11:120.480.0.0|11:160.480.0.0|11:200.480.0.0|11:240.480.0.0|11:280.480.0.0|11:320.480.0.0|11:360.480.0.0|11:520.480.0.0|
}
Add(BitmapArray,4721941,637,665)
{
Bitmaps=['brick'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8C0A1E13F1908A80D8846F58EEA1DD53BB07A471A1A8DFD51BDA37A87AEDED1F26A34E58CEA1DD53BDABE1A6D5F8DEA1DD53BAA77B47D450902008CE22F38],'stone'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E030CDC06230A80783C37404A4DA4B2D77AE0603886983D95EE2D553370607CADEC1EF424AECA54F5861BA70A0EC2535B5532B1E07CA5EEA9A4F5D5FD0C75E62C28A16FE1A287B691D4783CDDEE1DDBA18C9A9821661458C9903652FFEB022AFEE2626FC07CADE81ADBB079BBDA360E802F24A0CFCBA685752516E2FAE1C815F2FFE7C444C1F61A0ECA54FAD4ABC690365EFF003007359C894],'planks'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F22860FEB91185F84EFE1F45A368140D51345A5E8DA251348A46CBAB415A5E9DF80F42D40D4662CC1C287B47D1281A2DAF46DB57A368148D22BA230056BFF9FF],'stones'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E03059A01E0C46F58EEA1DD53BB07A471A188DFD51BDA37A87AEDED1F26A34E58CEA1DD53BDABE1A6D5F8DEA1DD53BAA77B47D450900008B2CE725],'dirt'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C820BC6A27101D0603089B9E68A0EC1D45D48A17EAC620ADED1D4DE7A361323C426634D646D148AE5F685DFE53D75EFA8427FDDD3650F68EB6A0069BBDA368A4B5B8465B20433DDC4663903C17D2CEFD0365EFD045006E95DDE8],'color'=[ZIP760A000078DADDD4316ED5401006E0454208517006979C807A44CF1D7C0AEA398A8B88734C41C519287C84F4148F6FC70412F41E44281209F61B3DC7FFC4DE6F779377EF3FBC1A7DBC7D3EC69BF1B39E8D977D3F5E8CF1E9F5516EDE3AB23F23F3F89AA78BAA1AF5A5C6F5E78F632CA156255836556AF7D0F9E045B90879C8431EF290BB3556F92A5FFDB0CA57F92A5FF7EFEF95A73CD71EC34879CA53EE726CF24DBEC937F9E6E626DFE4BE46C94B5EF29A03DFE6E095DC67ECF25DBECB77F92EDFE5FB7E0C7F2C6A9EAB4AB5A952FB415BE4FCC11FFCC11FFCC1DF6C4DE122F8833FF8833FF87B4AF8833FF8833FF8833FF87BBAF8833FF8833FF8833FF87B2AF9833FF8833FF8833FF87B9AF9833FF8833FF8833FF8E712047FF0077FF0077FF007FFB1DE4BAB93BFD79E3FF993BF97863FF9933FF9933FF993BF978D3FF9133681D2A0D3C0D2CB7B49F9933FF9933FF9933FF97BB9BD243D2835E7DC83FCC99FFCBD15F8933FF9933FF9933FF97B9BF0277FF2277FF2277FF2CF2D94FCC99FFCC99FFCC99FFCBD7DF8AB577C6D75F1579FFBB1B5F88BBFF88BBFF88BBFF87BDBF1177FF1177FF1177FF1F796E42FFEE22FFEE22FFEE2EFEDCA5FFCC55FFC055D6065F0BD95F98BBFF88BBFF88BBFF87B9B1B64194879597960F9A5EBAFA77135E7694EF038F5679C4EC7D73CE7ADF9F3831F57F7389E52DFEF903F2EFF301DF7E8EB869BBEB37379ABF156FB59D1D9BE4BD0D3DDF75E9C91BB8E8B53F7D4D6F711F79DFDA33A5DDC07FFA4AFFF8DFCDA7773F32FFA1EB3F7BFD8570F7B7C0393F921C8],'water'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E08C873D85E840671610516ECE60B0F750430A10ED9B5480071D684D07A2E161EF7045D44D1BC8B1B3BF2F1788068FBD1035C4A40D8809C8290ABF5FA03E029B8C991A07CA5E62C20D623E8ADB3C4108220271392D521DEDECC55F3ED0AE6418287B71A1B36044FFF264A0EC1D396878C72CA46480E4A6D31EF6A7E9D59EA1BFBDC4D70BC8253CC49DA7423D806868D94B1E3AEDE30444B8EA3862D0D0B277B4241F45431D414A09CCD62CC92D5B12CB5BEADA8BD9A243D68B6C0BA494809418F8CB52FC2D5B6435F4B7177FF94FCF16EC40D93BBC11000B58B8B5],'grass'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C820BC6A27101D0603089B9E68A0EC1D45D48A17EAC620ADED1D4DE7A361323C426634D646D148AE5F685DFE53D75EFA8427FDDD3650F68EB6A0069BBDA368A4B5B8465B204331DC7C362A8DA2618CFC56990211FD6D1C287B012F1B7114],'killer'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C84045E6ED281A4514A037603472EC1D45C323D5BD03A3A162EF281A45A368148DA25134D4D140D580A335EF680F823EF6229B4C4FDF0D94BDA368140D0C02008DDA5CCE],'checkpoint'=[ZIP760A000078DAE5D4316ED44018C5F1414238A2E00C2E3901F5133D4DEA447203524A1AEA77141768CB9CE115549C21858F902A5B5098FF7C8EC44A2058C00512E3FDB28EDF177B7E9E81D76F3E3C6F355E3D6DED65FB564FDA455DD7B3D63EBDD88A8B27C3F569F6F6D50F4E92B4DCA5DD7F3EB4368A9A288271A6422DDCB4DF78A43811B9C8452E729173A94DE413F9C42F13F9443E914FCBE373C94DEEA9E6D04C6E729373DA66F2997C269FC9672ECEE433395F2DE4210F79FAC4E73E798A9C4F5BC817F2857C215FC817F265D9A6DF46AA1F13656AA6422D1B6D24C72FFCC22FFCC22FFCC5A6499C08BFF00BBFF00B7FBD12FCC22FFCC22FFCC22FFCF5BAF00BBFF00BBFF00BBFF0D7ABC42FFCC22FFCC22FFCC25FAF19BFF00BBFF00BBFF00B7F5F02E1177EE1177EE1177EE1DFD67B2CB5F1D7DAE3377EE3AFA5C16FFCC66FFCC66FFCC65FCB86DFF80DD680CCA4CDC4CCC36B49F11BBFF11BBFF11BBFF1D772F3107323D3ECBE07F11BBFF1D756C06FFCC66FFCC66FFCC65FDB04BFF11BBFF11BBFF11B7FDF42C66FFCC66FFCC66FFCC65FDB077F6AC5A752077FEA58B6AD853FF8833FF8833FF883BFB61DFEE00FFEE00FFEE00FFEDA92F8833FF8833FF8833FF86BBBE20FFEE00FFE800EB030F9DACAF8833FF8833FF8833FF86B9B33C93091F0B070C3F047F75FD6F6B1BFA7FE82DB5A9FB6AEDB573FFA257EDCDCBC3F6B9CDB77FABFCA5B463B639CDBF78EF13FF51D0EFBF6ED3DBFDBDB7DFBFA7387A1B55EFBF50DC3C3C3BA5E5EEED3B73E8EADFBC733F893BEDE733CF6DEBFEBBBB8584FC6F1380CDF9B7EA7AFCFBF3FADD7F6F4DEF9EFF4EDEDDD7B3DF6DE2F7BEEE7EBEBABABFE1E7EF5EFE8677D5F01FD2BB2B2],'slime'=[ZIP760A000078DADDD4316ED5401006E0454208517006979C807A44CF1D7C0AEA398A8B88734C41C519287C84F4148F6FC70412F41E44281209F61B3DC7FFC4DE6F779377EF3FBC1A7DBC7D3EC69BF1B39E8D977D3F5E8CF1E9F5516EDE3AB23F23F3F89AA78BAA1AF5A5C6F5E78F632CA156255836556AF7D0F9E045B90879C8431EF290BB3556F92A5FFDB0CA57F92A5FF7EFEF95A73CD71EC34879CA53EE726CF24DBEC937F9E6E626DFE4BE46C94B5EF29A03DFE6E095DC67ECF25DBECB77F92EDFE5FB7E0C7F2C6A9EAB4AB5A952FB415BE4FCC11FFCC11FFCC1DF6C4DE122F8833FF8833FF87B4AF8833FF8833FF8833FF87BBAF8833FF8833FF8833FF87B2AF9833FF8833FF8833FF87B9AF9833FF8833FF8833FF8E712047FF0077FF0077FF007FFB1DE4BAB93BFD79E3FF993BF97863FF9933FF9933FF993BF978D3FF9133681D2A0D3C0D2CB7B49F9933FF9933FF9933FF97BB9BD243D2835E7DC83FCC99FFCBD15F8933FF9933FF9933FF97B9BF0277FF2277FF2277FF2CF2D94FCC99FFCC99FFCC99FFCBD7DF8AB577C6D75F1579FFBB1B5F88BBFF88BBFF88BBFF87BDBF1177FF1177FF1177FF1F796E42FFEE22FFEE22FFEE2EFEDCA5FFCC55FFC055D6065F0BD95F98BBFF88BBFF88BBFF87B9B1B64194879597960F9A5EBAFA77135E7694EF038F5679C4EC7D73CE7ADF9F3831F57F7389E52DFEF903F2EFF301DF7E8EB869BBEB37379ABF156FB59D1D9BE4BD0D3DDF75E9C91BB8E8B53F7D4D6F711F79DFDA33A5DDC07FFA4AFFF8DFCDA7773F32FFA1EB3F7BFD8570F7B7C0393F921C8],'angryslime'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C86089E7E2513402D0223042885C5BB81F889EEF3F4121BABFE130100D3E7BD1D1832D478088727B216870DB0B0AF37393760111E53642E26B70DB0B422B029601D199FE9D4004491BA4A6A58BD37603D1EA90E54034D8EC5D0A46B42807F0A381B27770DB425D7BF1E9DD91B30E8890D3CCD1E6AD404489CA81B6171F82E825A6DC235EE560B6F740D5662022C634E2550EACBD131CFA800897ECDAC81540043113129290F44389CA81B55747440788E859DA74D97501D140D90BE935D459D40211AD6D6CB0AC0722296E49201A587BB958B980A8CCA41488A86B579B750B10A908A8001166EF6CA0EC4506F27CF24064276D0B44B5E6354044AA5D7DF63D4064226E0C440C448381B21713405202C425893A89405468540044D5E6D540046107AA040211C4CD0C54020365EF2818054305000005816F09]]
UseName=1
}
Add(RGN_Rect,8233066,539,168)
{
Point2=2621480
Point2AsOffset=0
Point(doClear)
link(onCreateRect,14755726:doRotate,[(579,174)(579,188)])
link(Point1,13052045:Point,[])
}
Add(RGN_Array,3676850,672,196)
{
}
Add(ArrayEnum,8636513,448,182)
{
link(onItem,1845762:doEvent1,[(492,188)(492,167)])
link(onEndEnum,3235548:doEvent1,[])
link(Array,2670249:Array,[])
}
Add(RGN_Rotate,14755726,588,182)
{
Point(doClear)
link(onRotate,12161989:doEvent1,[])
link(Angle,8961729:Var2,[])
}
Add(MultiStrPart,827761,574,49)
{
Char="."
Count=4
}
Add(Hub,1845762,497,161)
{
link(onEvent1,827761:doSplit,[(529,167)(529,55)])
link(onEvent2,8233066:doCreateRect,[])
}
Add(PointXY,13052045,539,126)
{
link(X,827761:Part1,[(545,104)(580,104)])
link(Y,827761:Part2,[(552,109)(587,109)])
}
Add(Hub,12161989,644,182)
{
OutCount=3
link(onEvent1,7157942:doAdd,[(665,188)(665,160)])
link(onEvent2,11204724:doAdd,[])
link(onEvent3,3676850:doAdd,[])
}
Add(ArrayRW,11204724,728,175)
{
link(Array,9871036:Var2,[])
link(Value,8961729:Var3,[(748,110)])
}
Add(GetDataEx,8961729,595,105)
{
link(Data,827761:Part4,[])
}
Add(ArrayRW,7157942,672,140)
{
link(Array,12677955:Var2,[])
link(Value,827761:Part3,[(692,128)(594,128)])
}
Add(Timer,16084674,336,588)
{
Interval=33
link(onTimer,9089622:doEvent1,[])
}
Add(Hub,9089622,378,588)
{
OutCount=3
link(onEvent1,11306518:doEvent1,[(414,594)(414,447)])
link(onEvent2,8412952:doClear,[])
link(onEvent3,5124160:doEnum,[(409,608)(409,720)])
}
Add(Hub,3235548,497,189)
{
link(onEvent1,8233066:doClear,[(525,195)(525,181)])
link(onEvent2,14755726:doClear,[(578,202)(578,195)])
}
Add(CableData,16585388,700,245)
{
Count=3
link(Wire1,3676850:Array,[(706,237)(678,237)])
link(Wire2,12677955:Var3,[(713,117)])
link(Wire3,9871036:Var3,[(720,145)])
}
Add(GetDataEx,12677955,672,112)
{
link(Data,8145499:Array,[])
}
Add(CableVar,8974127,539,665)
{
link(Cable,10086630:getVar,[])
}
Add(GetDataEx,9871036,728,140)
{
link(Data,4776907:Array,[])
}
Add(ArrayEnum,5124160,539,714)
{
link(onItem,14609622:doRead,[])
link(onEndEnum,4153564:doDraw,[(580,727)(580,594)])
link(Array,8974127:Wire1,[])
}
Add(ArrayRW,11848360,637,714)
{
link(onRead,428334:doDraw,[])
link(Array,4721941:Array,[])
}
Add(ArrayRW,14609622,588,714)
{
link(onRead,11848360:doRead,[])
link(Array,8974127:Wire2,[(594,700)(552,700)])
link(Index,5124160:Index,[(601,702)(625,702)(625,768)(552,768)])
}
Add(RGN_Draw,428334,686,714)
{
UseOffsetFill=1
PatternStyle=0
Outline=0
Color=0
BgColor=0
Point(Pattern)
link(Bitmap,1763732:Var2,[])
link(Region,5124160:Item,[(699,702)(677,702)(677,779)(545,779)])
}
Add(LineBreakEx,2742422,700,273)
{
Caption="arr"
Type=3
link(_Data,16585388:Cable,[])
}
Add(LineBreakEx,10086630,539,637)
{
Caption="arr"
Type=2
}
Add(InfoTip,5692103,420,14)
{
Info=#4:Load|
Width=379
Height=284
}
Add(Math,555846,1071,294)
{
OpType=7
Op2=40
link(onResult,9845158:doOperation,[])
link(Op1,3606291:Wire1,[])
}
Add(Math,8278174,1155,294)
{
OpType=7
Op2=40
link(onResult,178581:doOperation,[])
link(Op1,3606291:Wire2,[(1161,286)(1084,286)])
}
Add(Math,9845158,1113,294)
{
OpType=2
Op2=40
link(onResult,8278174:doOperation,[])
}
Add(Math,178581,1197,294)
{
OpType=2
Op2=40
link(onResult,12176735:doCreateRect,[(1238,300)(1238,379)(1178,379)(1178,391)])
}
Add(CableVar,3606291,1071,266)
{
link(Cable,1805454:getVar,[])
}
Add(CableData,7004078,693,630)
{
link(Wire1,8412952:MouseX,[])
link(Wire2,8412952:MouseY,[])
}
Add(LineBreakEx,6050920,693,658)
{
Caption="ms"
Type=3
link(_Data,7004078:Cable,[])
}
Add(LineBreakEx,1805454,1071,238)
{
Caption="ms"
Type=2
}
Add(RGN_Rect,12176735,1190,385)
{
Point2=2621480
Point2AsOffset=0
Point(doClear)
link(onCreateRect,15779881:doRotate,[])
link(Point1,14346571:Point,[])
}
Add(PointXY,14346571,1190,343)
{
link(X,9845158:Result,[(1196,335)(1119,335)])
link(Y,178581:Result,[])
}
Add(CableVar,13756205,1309,336)
{
Count=3
link(Cable,4663276:getVar,[])
}
Add(LineBreakEx,4663276,1309,308)
{
Caption="arr"
Type=2
}
Add(ArrayRW,3421259,1309,371)
{
link(Array,13756205:Wire1,[])
}
Add(ArrayRW,9956699,1344,399)
{
link(Array,13756205:Wire2,[(1350,363)(1322,363)])
link(Value,15046020:Index,[])
}
Add(Hub,8241839,1274,385)
{
OutCount=3
link(onEvent1,3421259:doAdd,[])
link(onEvent2,9956699:doAdd,[(1307,398)(1307,419)])
link(onEvent3,12391780:doAdd,[(1300,405)(1300,454)])
}
Add(ArrayRW,12391780,1379,434)
{
link(Array,13756205:Wire3,[(1385,358)(1329,358)])
link(Value,14498789:Var2,[(1399,358)(1413,358)])
}
Add(ListBox,15046020,1337,252)
{
Left=1020
Top=5
Width=135
Height=170
Strings=#5:brick|5:stone|6:planks|6:stones|4:dirt|5:color|5:water|5:grass|6:killer|10:checkpoint|5:slime|10:angryslime|0:|
Point(Index)
}
Add(CableVar,11459156,98,231)
{
Count=3
link(Cable,7992788:getVar,[])
}
Add(LineBreakEx,7992788,98,203)
{
Caption="arr"
Type=2
}
Add(RGN_GetData,2695321,168,280)
{
link(onGetData,13945161:doRead,[])
}
Add(ArrayEnum,7482565,98,280)
{
link(onItem,2695321:doGetData,[])
link(onEndEnum,8317484:doSetText,[(142,293)(142,419)])
link(Array,11459156:Wire1,[])
}
Add(ArrayRW,13945161,210,280)
{
link(onRead,16598545:doRead,[])
link(Array,11459156:Wire2,[(216,262)(111,262)])
link(Index,15569570:Var2,[])
}
Add(ArrayRW,16598545,252,280)
{
link(onRead,6532347:doString,[(300,286)(300,392)(156,392)(156,356)])
link(Array,11459156:Wire3,[(258,254)(118,254)])
link(Index,15569570:Var3,[(265,268)])
}
Add(FormatStr,6532347,168,350)
{
DataCount=4
Mask="%1.%2.%3.%4"
link(onFString,2073319:doAdd,[])
link(Str1,2695321:Left,[])
link(Str2,2695321:Top,[])
link(Str3,13945161:Item,[(188,331)(216,331)])
link(Str4,16598545:Item,[(195,339)(258,339)])
}
Add(GetDataEx,15569570,217,263)
{
Angle=3
link(Data,7482565:Index,[(157,268)(157,324)(111,324)])
}
Add(InfoTip,5981560,84,196)
{
Info=#4:Save|
Width=274
Height=249
}
Add(ClipboardHook,8317484,308,413)
{
link(Text,2073319:Text,[])
}
Add(RGN_Elliptic,10071187,574,315)
{
Point1=47185960
Point2=2621480
Point2AsOffset=0
Point(doClear)
link(onCreateElliptic,8464650:doWork2,[])
}
Add(StrList,2073319,308,350)
{
}
Add(Hub,8694556,378,182)
{
OutCount=3
link(onEvent1,8636513:doEnum,[])
link(onEvent2,10071187:doCreateElliptic,[(414,195)(414,321)])
link(onEvent3,10071187:doClear,[(407,202)(407,328)])
}
Add(InfoTip,3030796,1043,231)
{
Info=#9:Add block|
Width=400
Height=263
}
Add(CableVar,3000624,1085,574)
{
Count=1
link(Cable,887848:getVar,[])
}
Add(LineBreakEx,887848,1085,546)
{
Caption="arr"
Type=2
}
Add(ArrayEnum,5880915,1085,602)
{
Type=1
link(onItem,14827820:doCheck,[])
link(Array,3000624:Wire1,[])
}
Add(StrList,4776907,714,42)
{
}
Add(StrList,8145499,658,70)
{
}
Add(RGN_PointXY,14827820,1127,602)
{
link(onTrue,107177:doData,[])
link(X,6811021:Wire1,[])
link(Y,6811021:Wire2,[])
}
Add(IndexToChanel,6752386,1008,595)
{
link(onEvent1,555846:doOperation,[(1053,601)(1053,300)])
link(onEvent2,5880915:doEnum,[])
}
Add(CableVar,6811021,1134,574)
{
link(Cable,8556110:getVar,[])
}
Add(LineBreakEx,8556110,1134,546)
{
Caption="ms"
Type=2
}
Add(InfoTip,6005959,1064,504)
{
Info=#12:Delete block|
Width=260
Height=193
}
Add(DoData,107177,1176,602)
{
link(onEventData,11324041:In,[])
link(Data,5880915:Index,[(1182,590)(1167,590)(1167,645)(1098,645)])
}
Add(Hub,6450089,574,238)
{
OutCount=3
link(onEvent1,4776907:doDelete,[(628,244)(628,62)])
link(onEvent2,8145499:doDelete,[(635,251)(635,90)])
link(onEvent3,3676850:doDelete,[(643,258)(643,216)])
}
Add(LineBreak,11048781,497,238)
{
Caption="delBlocck"
link(Out,6450089:doEvent1,[])
Primary=[11324041,721,364]
}
Add(RGN_Draw,4153564,616,588)
{
Outline=0
Color=16776960
Point(Pattern)
link(onDraw,8412952:doRefresh,[])
link(Bitmap,1763732:Var1,[(622,575)(682,575)(682,635)])
link(Region,1327578:Var2,[])
}
Add(GetDataEx,1763732,686,630)
{
link(Data,8412952:Bitmap,[])
}
Add(RGN_Offset,15590097,854,476)
{
X=5
link(onOffset,2702286:doWork2,[])
link(Region,12193029:Var2,[])
}
Add(RGN_Combine,608873,623,315)
{
Mode=4
}
Add(RGN_Collision,3669781,924,469)
{
link(onFalse,8464650:doWork1,[(1020,482)(1020,303)(613,303)])
link(Array,3568675:Wire1,[])
}
Add(CableVar,3568675,938,441)
{
Count=1
link(Cable,12556491:getVar,[])
}
Add(LineBreakEx,12556491,938,413)
{
Caption="arr"
Type=2
}
Add(HubEx,8464650,609,315)
{
link(onEvent,608873:doCombine,[])
}
Add(RGN_Offset,2754314,861,434)
{
Y=5
link(onOffset,2702286:doWork1,[(900,440)])
link(Region,11733065:Var2,[])
}
Add(RGN_Offset,9481434,868,392)
{
Y=-5
link(onOffset,8681195:doWork1,[(914,398)])
link(Region,11733065:Var3,[(874,362)])
}
Add(RGN_Offset,14600466,847,518)
{
X=-5
link(onOffset,2702286:doWork3,[(900,524)])
link(Region,16460696:Var2,[])
}
Add(GetDataEx,1327578,623,357)
{
link(Data,608873:Result,[])
}
Add(GetDataEx,11733065,861,357)
{
Angle=3
link(Data,12193029:Var3,[])
}
Add(GetDataEx,12193029,854,357)
{
Angle=3
link(Data,16460696:Var3,[])
}
Add(GetDataEx,16460696,847,357)
{
Angle=3
link(Data,1327578:Var3,[])
}
Add(HubEx,8681195,910,476)
{
link(onEvent,3669781:doEnum,[])
}
Add(HubEx,2702286,896,476)
{
link(onEvent,8681195:doWork2,[])
}
Add(Keyboard,13873403,763,511)
{
Key=65
link(onReadKey,4583430:doEvent,[])
}
Add(Keyboard,8186697,763,469)
{
Key=68
link(onReadKey,7472050:doEvent,[])
}
Add(Keyboard,5669077,763,427)
{
Key=83
link(onReadKey,11639003:doEvent,[])
}
Add(Keyboard,3782309,763,385)
{
Key=87
link(onReadKey,5500737:doEvent,[])
}
Add(Hub,11306518,721,441)
{
OutCount=4
link(onEvent1,3782309:doReadKey,[(745,447)(745,391)])
link(onEvent2,5669077:doReadKey,[(755,454)(755,433)])
link(onEvent3,8186697:doReadKey,[(754,461)(754,475)])
link(onEvent4,13873403:doReadKey,[(748,468)(748,517)])
}
Add(IndexToChanel,5500737,805,385)
{
link(onEvent2,9481434:doOffset,[])
}
Add(IndexToChanel,11639003,805,427)
{
link(onEvent2,2754314:doOffset,[])
}
Add(IndexToChanel,7472050,805,469)
{
link(onEvent2,15590097:doOffset,[])
}
Add(IndexToChanel,4583430,805,511)
{
link(onEvent2,14600466:doOffset,[])
}
Add(InfoTip,5065822,707,315)
{
Info=#9:Collision|
Width=267
Height=242
}
Add(InfoTip,14263195,490,567)
{
Info=#4:Draw|
VAlign=2
Width=281
Height=242
}
Add(ListBox,12306016,1386,252)
{
Left=1020
Top=180
Width=135
Height=110
Strings=#1:0|2:45|2:90|3:135|3:180|3:225|3:270|3:315|0:|
DataType=1
Point(String)
}
Add(RGN_Rotate,15779881,1232,385)
{
Point(doClear)
link(onRotate,8241839:doEvent1,[])
link(Angle,14498789:Var1,[(1245,299)])
}
Add(GetDataEx,14498789,1407,294)
{
link(Data,12306016:String,[])
}

Редактировалось 1 раз(а), последний 2020-02-23 12:45:44
карма: 11

0
Ответов: 167
Рейтинг: 7
#85: 2020-02-22 21:54:57 ЛС | профиль | цитата
sla8a писал(а):
ваша вторая схема

|Она не до конца сохранилась
sla8a писал(а):
Не хранится в регионе угол поворота.

Да, я уже давно закончил делать этот кошмар, и понял это Извините
И, как я понял, на первой схеме что-то должно двигаться, но что, я не понял
Кстати, в первом массиве всё равно придётся хранить координаты и размер региона... У меня по какой-то причине при повёрнутом регионе его координаты получаются некорректно... Поэтому пусть будет так . Что сказать... Рисоваться стало всё гораздо быстрее /
sla8a писал(а):
Вполне годная оптимизация

Что-же... Раз так, то буду думать как это реализовать чуть позже, так как сейчас ещё мыслю на счёт оптимизации прочей части схемы...

--- Добавлено в 2020-02-22 22:01:45


Уже понял . Случайно не заметил этот кружок

--- Добавлено в 2020-02-22 22:16:06

Вот набросал схемку . Пока без оптимизации, но коллизия и рисование идёт через массив регионов
https://drive.google.com/file/d/1izGDal-KSzzRz5LiMVptymP8eLJk2-5s/view?usp=sharing EXE&SHA

--- Добавлено в 2020-02-22 22:20:17

sla8a писал(а):
В первом вариант с хранением данных в разных массивах

Вы просто храните угол в одном, а идентификатор в другом массиве? :/
Мне тоже надо так сделать...
--- Добавлено в 2020-02-22 22:21:52
[flood]Не спрашивайте про блок иконки HiASM . Просто было нечего делать
lol.jpg
[/flood]
Редактировалось 12 раз(а), последний 2020-02-22 22:30:59
карма: 0
c, c++, lua
0
Ответов: 167
Рейтинг: 7
#86: 2020-02-22 23:03:14 ЛС | профиль | цитата
Новая indev. исправлен баг с цветами. Добавлены новые блоки. Добавлены наименования блоков в списке блоков.
https://drive.google.com/file/d/1NgYxJWsd53c7vMEOtbLtB0d2u-EHuvBQ/view?usp=sharing
bankkiller.jpg (новая карта с демонстрацией новых блоков)
P.S: над оптимизацией ещё думаю... И вот что придумал :
MTMTМассив будет один, и массив регионов тоже . Но в массив регионов будут добавляться только регионы, которые будут сталкиваться с регионом, равному размеру окна. А как тогда я буду получать информацию о нём? Очень просто : идентификатор элемента мтмассива, соответствующий этому блоку будет храниться в массиве чисел, и элементы этого массива будут соответствовать каждому региону в массиве регионов... Что-же... Идею придумал... А реализую её завтра . Sla8a, спасибо тебе за помощь

Редактировалось 2 раз(а), последний 2020-02-23 00:26:49
карма: 0
c, c++, lua
0
Ответов: 2200
Рейтинг: 673
#87: 2020-02-23 13:01:26 ЛС | профиль | цитата
Вторую схему форум обрезал, получилось длинное сообщение.
Схема 2

Add(MainForm,14216276,49,161)
{
Width=1200
Height=839
Position=1
Point(onClose)
link(onCreate,8694556:doEvent1,[])
link(onClose,7482565:doEnum,[(107,188)(107,279)])
}
Add(PaintBox,8412952,721,588)
{
Left=5
Top=5
Width=1000
Height=800
Color=15780518
Point(MouseX)
Point(MouseY)
}
Add(StrList,2670249,469,133)
{
Strings=#9:0.760.0.0|10:40.760.0.0|10:80.760.0.0|11:120.760.0.0|11:160.760.0.0|11:200.760.0.0|11:240.760.0.0|11:280.760.0.0|11:320.760.0.0|11:360.760.0.0|11:400.760.0.0|11:440.760.0.0|11:480.760.0.0|11:520.760.0.0|11:560.760.0.0|11:600.760.0.0|11:640.760.0.0|11:680.760.0.0|11:720.760.0.0|11:760.760.0.0|11:800.760.0.0|11:840.760.0.0|11:880.760.0.0|11:920.760.0.0|11:960.760.0.0|7:0.0.0.0|8:40.0.0.0|8:80.0.0.0|9:120.0.0.0|9:160.0.0.0|9:200.0.0.0|9:240.0.0.0|9:280.0.0.0|9:320.0.0.0|9:360.0.0.0|9:400.0.0.0|9:440.0.0.0|9:480.0.0.0|9:520.0.0.0|9:560.0.0.0|9:600.0.0.0|9:640.0.0.0|9:680.0.0.0|9:720.0.0.0|9:760.0.0.0|9:800.0.0.0|9:840.0.0.0|9:880.0.0.0|9:920.0.0.0|9:960.0.0.0|8:0.40.0.0|8:0.80.0.0|9:0.120.0.0|9:0.160.0.0|9:0.200.0.0|9:0.240.0.0|9:0.280.0.0|9:0.320.0.0|9:0.360.0.0|9:0.400.0.0|9:0.440.0.0|9:0.480.0.0|9:0.520.0.0|9:0.560.0.0|9:0.600.0.0|9:0.640.0.0|9:0.680.0.0|9:0.720.0.0|10:960.40.0.0|10:960.80.0.0|11:960.120.0.0|11:960.160.0.0|11:960.200.0.0|11:960.240.0.0|11:960.280.0.0|11:960.320.0.0|11:960.360.0.0|11:960.400.0.0|11:960.440.0.0|11:960.480.0.0|11:960.520.0.0|11:960.560.0.0|11:960.600.0.0|11:960.640.0.0|11:960.680.0.0|11:960.720.0.0|10:40.640.0.0|10:80.640.0.0|11:160.720.0.0|11:160.680.0.0|11:160.640.0.0|11:160.600.0.0|11:200.680.0.0|11:240.680.0.0|11:280.680.0.0|11:320.680.0.0|11:320.640.0.0|11:320.600.0.0|11:200.640.6.0|11:240.640.6.0|11:280.640.6.0|11:280.600.6.0|11:240.600.6.0|11:200.600.6.0|11:200.720.1.0|11:240.720.1.0|11:280.720.1.0|11:320.720.1.0|11:360.720.1.0|11:400.720.1.0|11:440.720.1.0|11:480.720.1.0|11:320.200.3.0|11:320.240.3.0|11:320.280.3.0|11:360.200.3.0|11:400.200.3.0|11:440.200.3.0|11:480.200.3.0|11:360.240.8.0|11:440.240.8.0|11:480.240.3.0|11:400.240.3.0|11:360.280.3.0|11:400.280.3.0|11:440.280.3.0|11:480.280.3.0|11:400.320.3.0|11:520.720.7.0|11:560.720.7.0|11:600.720.7.0|11:640.720.7.0|11:680.720.7.0|11:720.720.7.0|11:760.720.1.0|11:800.720.1.0|11:840.720.1.0|11:880.720.1.0|11:920.720.1.0|11:920.640.0.0|11:880.600.0.0|11:840.560.0.0|11:800.520.0.0|11:760.520.0.0|11:720.520.0.0|11:680.520.0.0|11:800.560.0.0|11:840.600.0.0|11:880.640.0.0|11:680.560.0.0|11:640.560.0.0|11:600.560.0.0|11:560.560.0.0|11:520.560.0.0|11:520.520.0.0|11:560.520.4.0|11:600.520.4.0|11:640.520.4.0|12:592.233.0.45|12:672.273.0.45|12:752.233.0.45|11:672.73.0.45|11:920.600.2.0|11:920.560.2.0|11:880.560.2.0|11:920.520.2.0|11:880.520.2.0|11:840.520.2.0|10:40.400.0.0|10:80.400.0.0|11:120.400.0.0|11:160.400.0.0|10:40.360.0.0|10:40.320.0.0|10:80.360.0.0|11:120.360.0.0|10:80.320.0.0|10:40.280.0.0|11:160.560.0.0|11:120.560.0.0|10:80.560.0.0|10:40.480.0.0|10:80.480.0.0|11:120.480.0.0|11:160.480.0.0|11:200.480.0.0|11:240.480.0.0|11:280.480.0.0|11:320.480.0.0|11:360.480.0.0|11:520.480.0.0|
}
Add(RGN_Rect,8233066,574,168)
{
Point2=2621480
Point2AsOffset=0
Point(doClear)
link(onCreateRect,14755726:doRotate,[(614,174)(614,188)])
link(Point1,13052045:Point,[])
}
Add(ArrayEnum,8636513,483,182)
{
link(onItem,1845762:doEvent1,[(527,188)(527,167)])
link(onEndEnum,3235548:doEvent1,[])
link(Array,2670249:Array,[])
}
Add(RGN_Rotate,14755726,623,182)
{
Point(doClear)
link(onRotate,15724864:doCombine,[])
link(Angle,827761:Part4,[])
}
Add(MultiStrPart,827761,609,49)
{
Char="."
Count=4
}
Add(Hub,1845762,532,161)
{
link(onEvent1,827761:doSplit,[(564,167)(564,55)])
link(onEvent2,8233066:doCreateRect,[])
}
Add(PointXY,13052045,574,126)
{
link(X,827761:Part1,[(580,104)(615,104)])
link(Y,827761:Part2,[(587,109)(622,109)])
}
Add(Timer,16084674,371,574)
{
Interval=33
link(onTimer,9089622:doEvent1,[])
}
Add(Hub,9089622,413,574)
{
OutCount=3
link(onEvent1,11306518:doEvent1,[(449,580)(449,447)])
link(onEvent2,8412952:doClear,[(574,587)(574,601)])
link(onEvent3,7541712:doDraw,[])
}
Add(Hub,3235548,532,189)
{
link(onEvent1,8233066:doClear,[(560,195)(560,181)])
link(onEvent2,14755726:doClear,[(613,202)(613,195)])
}
Add(InfoTip,5692103,455,14)
{
Info=#4:Load|
Width=477
Height=242
}
Add(CableData,7004078,728,630)
{
link(Wire1,8412952:MouseX,[])
link(Wire2,8412952:MouseY,[])
}
Add(LineBreakEx,6050920,728,658)
{
Caption="ms"
Type=3
link(_Data,7004078:Cable,[])
}
Add(CableVar,11459156,133,224)
{
Count=3
link(Cable,7992788:getVar,[])
}
Add(LineBreakEx,7992788,133,196)
{
Caption="arr"
Type=2
}
Add(RGN_GetData,2695321,203,273)
{
link(onGetData,13945161:doRead,[])
}
Add(ArrayEnum,7482565,133,273)
{
link(onItem,2695321:doGetData,[])
link(onEndEnum,8317484:doSetText,[(177,286)(177,412)])
link(Array,11459156:Wire1,[])
}
Add(ArrayRW,13945161,245,273)
{
link(onRead,16598545:doRead,[])
link(Array,11459156:Wire2,[(251,255)(146,255)])
link(Index,15569570:Var2,[])
}
Add(ArrayRW,16598545,287,273)
{
link(onRead,6532347:doString,[(335,279)(335,385)(191,385)(191,349)])
link(Array,11459156:Wire3,[(293,247)(153,247)])
link(Index,15569570:Var3,[(300,261)])
}
Add(FormatStr,6532347,203,343)
{
DataCount=4
Mask="%1.%2.%3.%4"
link(onFString,2073319:doAdd,[])
link(Str1,2695321:Left,[])
link(Str2,2695321:Top,[])
link(Str3,13945161:Item,[(223,324)(251,324)])
link(Str4,16598545:Item,[(230,332)(293,332)])
}
Add(GetDataEx,15569570,252,256)
{
Angle=3
link(Data,7482565:Index,[(192,261)(192,317)(146,317)])
}
Add(InfoTip,5981560,119,189)
{
Info=#4:Save|
Width=274
Height=249
}
Add(ClipboardHook,8317484,343,406)
{
link(Text,2073319:Text,[])
}
Add(RGN_Elliptic,10071187,609,315)
{
Point1=47185960
Point2=2621480
Point2AsOffset=0
Point(doClear)
link(onCreateElliptic,8464650:doWork2,[])
}
Add(StrList,2073319,343,343)
{
}
Add(Hub,8694556,413,175)
{
OutCount=4
link(onEvent1,2381860:doCreate,[(461,181)(461,41)])
link(onEvent2,8636513:doEnum,[])
link(onEvent3,10071187:doCreateElliptic,[(449,195)(449,321)])
link(onEvent4,10071187:doClear,[(443,202)(443,328)])
}
Add(RGN_Draw,4153564,651,588)
{
Outline=0
Color=16776960
Point(Pattern)
link(onDraw,8412952:doRefresh,[])
link(Bitmap,10949674:Var2,[])
link(Region,1327578:Var2,[])
}
Add(RGN_Offset,15590097,889,476)
{
X=5
link(onOffset,2702286:doWork2,[])
link(Region,12193029:Var2,[])
}
Add(RGN_Combine,608873,658,315)
{
Mode=4
}
Add(RGN_Collision,3669781,959,476)
{
link(onFalse,8464650:doWork1,[(1016,489)(1016,288)(648,288)])
link(Region2,9761858:Var3,[(972,226)])
}
Add(HubEx,8464650,644,315)
{
link(onEvent,608873:doCombine,[])
}
Add(RGN_Offset,2754314,896,434)
{
Y=5
link(onOffset,2702286:doWork1,[(935,440)])
link(Region,11733065:Var2,[])
}
Add(RGN_Offset,9481434,903,392)
{
Y=-5
link(onOffset,8681195:doWork1,[(949,398)])
link(Region,11733065:Var3,[(909,362)])
}
Add(RGN_Offset,14600466,882,518)
{
X=-5
link(onOffset,2702286:doWork3,[(935,524)])
link(Region,16460696:Var2,[])
}
Add(GetDataEx,1327578,658,357)
{
link(Data,608873:Result,[])
}
Add(GetDataEx,11733065,896,357)
{
Angle=3
link(Data,12193029:Var3,[])
}
Add(GetDataEx,12193029,889,357)
{
Angle=3
link(Data,16460696:Var3,[])
}
Add(GetDataEx,16460696,882,357)
{
Angle=3
link(Data,1327578:Var3,[])
}
Add(HubEx,8681195,945,476)
{
link(onEvent,3669781:doCollision,[])
}
Add(HubEx,2702286,931,476)
{
link(onEvent,8681195:doWork2,[])
}
Add(Keyboard,13873403,798,511)
{
Key=65
link(onReadKey,4583430:doEvent,[])
}
Add(Keyboard,8186697,798,469)
{
Key=68
link(onReadKey,7472050:doEvent,[])
}
Add(Keyboard,5669077,798,427)
{
Key=83
link(onReadKey,11639003:doEvent,[])
}
Add(Keyboard,3782309,798,385)
{
Key=87
link(onReadKey,5500737:doEvent,[])
}
Add(Hub,11306518,756,441)
{
OutCount=4
link(onEvent1,3782309:doReadKey,[(780,447)(780,391)])
link(onEvent2,5669077:doReadKey,[(790,454)(790,433)])
link(onEvent3,8186697:doReadKey,[(789,461)(789,475)])
link(onEvent4,13873403:doReadKey,[(783,468)(783,517)])
}
Add(IndexToChanel,5500737,840,385)
{
link(onEvent2,9481434:doOffset,[])
}
Add(IndexToChanel,11639003,840,427)
{
link(onEvent2,2754314:doOffset,[])
}
Add(IndexToChanel,7472050,840,469)
{
link(onEvent2,15590097:doOffset,[])
}
Add(IndexToChanel,4583430,840,511)
{
link(onEvent2,14600466:doOffset,[])
}
Add(InfoTip,5065822,735,315)
{
Info=#9:Collision|
Width=267
Height=242
}
Add(InfoTip,14263195,525,567)
{
Info=#4:Draw|
VAlign=2
Width=281
Height=116
}
Add(Bitmap,2381860,756,21)
{
HWidth=1000
HHeight=800
FillColor=15780518
Point(doCreate)
}
Add(RGN_Draw,16547920,756,182)
{
UseOffsetFill=1
PatternStyle=0
Outline=0
Color=0
BgColor=0
Point(Pattern)
link(Bitmap,7492305:Var2,[])
link(Region,14755726:Result,[(769,170)(792,170)(792,235)(629,235)])
}
Add(BitmapArray,209399,714,119)
{
Bitmaps=['brick'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8C0A1E13F1908A80D8846F58EEA1DD53BB07A471A1A8DFD51BDA37A87AEDED1F26A34E58CEA1DD53BDABE1A6D5F8DEA1DD53BAA77B47D450902008CE22F38],'stone'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E030CDC06230A80783C37404A4DA4B2D77AE0603886983D95EE2D553370607CADEC1EF424AECA54F5861BA70A0EC2535B5532B1E07CA5EEA9A4F5D5FD0C75E62C28A16FE1A287B691D4783CDDEE1DDBA18C9A9821661458C9903652FFEB022AFEE2626FC07CADE81ADBB079BBDA360E802F24A0CFCBA685752516E2FAE1C815F2FFE7C444C1F61A0ECA54FAD4ABC690365EFF003007359C894],'planks'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F22860FEB91185F84EFE1F45A368140D51345A5E8DA251348A46CBAB415A5E9DF80F42D40D4662CC1C287B47D1281A2DAF46DB57A368148D22BA230056BFF9FF],'stones'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E03059A01E0C46F58EEA1DD53BB07A471A188DFD51BDA37A87AEDED1F26A34E58CEA1DD53BDABE1A6D5F8DEA1DD53BAA77B47D450900008B2CE725],'dirt'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C820BC6A27101D0603089B9E68A0EC1D45D48A17EAC620ADED1D4DE7A361323C426634D646D148AE5F685DFE53D75EFA8427FDDD3650F68EB6A0069BBDA368A4B5B8465B20433DDC4663903C17D2CEFD0365EFD045006E95DDE8],'color'=[ZIP760A000078DADDD4316ED5401006E0454208517006979C807A44CF1D7C0AEA398A8B88734C41C519287C84F4148F6FC70412F41E44281209F61B3DC7FFC4DE6F779377EF3FBC1A7DBC7D3EC69BF1B39E8D977D3F5E8CF1E9F5516EDE3AB23F23F3F89AA78BAA1AF5A5C6F5E78F632CA156255836556AF7D0F9E045B90879C8431EF290BB3556F92A5FFDB0CA57F92A5FF7EFEF95A73CD71EC34879CA53EE726CF24DBEC937F9E6E626DFE4BE46C94B5EF29A03DFE6E095DC67ECF25DBECB77F92EDFE5FB7E0C7F2C6A9EAB4AB5A952FB415BE4FCC11FFCC11FFCC1DF6C4DE122F8833FF8833FF87B4AF8833FF8833FF8833FF87BBAF8833FF8833FF8833FF87B2AF9833FF8833FF8833FF87B9AF9833FF8833FF8833FF8E712047FF0077FF0077FF007FFB1DE4BAB93BFD79E3FF993BF97863FF9933FF9933FF993BF978D3FF9133681D2A0D3C0D2CB7B49F9933FF9933FF9933FF97BB9BD243D2835E7DC83FCC99FFCBD15F8933FF9933FF9933FF97B9BF0277FF2277FF2277FF2CF2D94FCC99FFCC99FFCC99FFCBD7DF8AB577C6D75F1579FFBB1B5F88BBFF88BBFF88BBFF87BDBF1177FF1177FF1177FF1F796E42FFEE22FFEE22FFEE2EFEDCA5FFCC55FFC055D6065F0BD95F98BBFF88BBFF88BBFF87B9B1B64194879597960F9A5EBAFA77135E7694EF038F5679C4EC7D73CE7ADF9F3831F57F7389E52DFEF903F2EFF301DF7E8EB869BBEB37379ABF156FB59D1D9BE4BD0D3DDF75E9C91BB8E8B53F7D4D6F711F79DFDA33A5DDC07FFA4AFFF8DFCDA7773F32FFA1EB3F7BFD8570F7B7C0393F921C8],'water'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C8E08C873D85E840671610516ECE60B0F750430A10ED9B5480071D684D07A2E161EF7045D44D1BC8B1B3BF2F1788068FBD1035C4A40D8809C8290ABF5FA03E029B8C991A07CA5E62C20D623E8ADB3C4108220271392D521DEDECC55F3ED0AE6418287B71A1B36044FFF264A0EC1D396878C72CA46480E4A6D31EF6A7E9D59EA1BFBDC4D70BC8253CC49DA7423D806868D94B1E3AEDE30444B8EA3862D0D0B277B4241F45431D414A09CCD62CC92D5B12CB5BEADA8BD9A243D68B6C0BA494809418F8CB52FC2D5B6435F4B7177FF94FCF16EC40D93BBC11000B58B8B5],'grass'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C820BC6A27101D0603089B9E68A0EC1D45D48A17EAC620ADED1D4DE7A361323C426634D646D148AE5F685DFE53D75EFA8427FDDD3650F68EB6A0069BBDA368A4B5B8465B204331DC7C362A8DA2618CFC56990211FD6D1C287B012F1B7114],'killer'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C84045E6ED281A4514A037603472EC1D45C323D5BD03A3A162EF281A45A368148DA25134D4D140D580A335EF680F823EF6229B4C4FDF0D94BDA368140D0C02008DDA5CCE],'checkpoint'=[ZIP760A000078DAE5D4316ED44018C5F1414238A2E00C2E3901F5133D4DEA447203524A1AEA77141768CB9CE115549C21858F902A5B5098FF7C8EC44A2058C00512E3FDB28EDF177B7E9E81D76F3E3C6F355E3D6DED65FB564FDA455DD7B3D63EBDD88A8B27C3F569F6F6D50F4E92B4DCA5DD7F3EB4368A9A288271A6422DDCB4DF78A43811B9C8452E729173A94DE413F9C42F13F9443E914FCBE373C94DEEA9E6D04C6E729373DA66F2997C269FC9672ECEE433395F2DE4210F79FAC4E73E798A9C4F5BC817F2857C215FC817F265D9A6DF46AA1F13656AA6422D1B6D24C72FFCC22FFCC22FFCC5A6499C08BFF00BBFF00B7FBD12FCC22FFCC22FFCC22FFCF5BAF00BBFF00BBFF00BBFF0D7ABC42FFCC22FFCC22FFCC25FAF19BFF00BBFF00BBFF00B7F5F02E1177EE1177EE1177EE1DFD67B2CB5F1D7DAE3377EE3AFA5C16FFCC66FFCC66FFCC65FCB86DFF80DD680CCA4CDC4CCC36B49F11BBFF11BBFF11BBFF1D772F3107323D3ECBE07F11BBFF1D756C06FFCC66FFCC66FFCC65FDB04BFF11BBFF11BBFF11B7FDF42C66FFCC66FFCC66FFCC65FDB077F6AC5A752077FEA58B6AD853FF8833FF8833FF883BFB61DFEE00FFEE00FFEE00FFEDA92F8833FF8833FF8833FF86BBBE20FFEE00FFE800EB030F9DACAF8833FF8833FF8833FF86B9B33C93091F0B070C3F047F75FD6F6B1BFA7FE82DB5A9FB6AEDB573FFA257EDCDCBC3F6B9CDB77FABFCA5B463B639CDBF78EF13FF51D0EFBF6ED3DBFDBDB7DFBFA7387A1B55EFBF50DC3C3C3BA5E5EEED3B73E8EADFBC733F893BEDE733CF6DEBFEBBBB8584FC6F1380CDF9B7EA7AFCFBF3FADD7F6F4DEF9EFF4EDEDDD7B3DF6DE2F7BEEE7EBEBABABFE1E7EF5EFE8677D5F01FD2BB2B2],'slime'=[ZIP760A000078DADDD4316ED5401006E0454208517006979C807A44CF1D7C0AEA398A8B88734C41C519287C84F4148F6FC70412F41E44281209F61B3DC7FFC4DE6F779377EF3FBC1A7DBC7D3EC69BF1B39E8D977D3F5E8CF1E9F5516EDE3AB23F23F3F89AA78BAA1AF5A5C6F5E78F632CA156255836556AF7D0F9E045B90879C8431EF290BB3556F92A5FFDB0CA57F92A5FF7EFEF95A73CD71EC34879CA53EE726CF24DBEC937F9E6E626DFE4BE46C94B5EF29A03DFE6E095DC67ECF25DBECB77F92EDFE5FB7E0C7F2C6A9EAB4AB5A952FB415BE4FCC11FFCC11FFCC1DF6C4DE122F8833FF8833FF87B4AF8833FF8833FF8833FF87BBAF8833FF8833FF8833FF87B2AF9833FF8833FF8833FF87B9AF9833FF8833FF8833FF8E712047FF0077FF0077FF007FFB1DE4BAB93BFD79E3FF993BF97863FF9933FF9933FF993BF978D3FF9133681D2A0D3C0D2CB7B49F9933FF9933FF9933FF97BB9BD243D2835E7DC83FCC99FFCBD15F8933FF9933FF9933FF97B9BF0277FF2277FF2277FF2CF2D94FCC99FFCC99FFCC99FFCBD7DF8AB577C6D75F1579FFBB1B5F88BBFF88BBFF88BBFF87BDBF1177FF1177FF1177FF1F796E42FFEE22FFEE22FFEE2EFEDCA5FFCC55FFC055D6065F0BD95F98BBFF88BBFF88BBFF87B9B1B64194879597960F9A5EBAFA77135E7694EF038F5679C4EC7D73CE7ADF9F3831F57F7389E52DFEF903F2EFF301DF7E8EB869BBEB37379ABF156FB59D1D9BE4BD0D3DDF75E9C91BB8E8B53F7D4D6F711F79DFDA33A5DDC07FFA4AFFF8DFCDA7773F32FFA1EB3F7BFD8570F7B7C0393F921C8],'angryslime'=[ZIPF612000078DA73F2FD26C400066640AC8184191924C0E207A0F2C86089E7E2513402D0223042885C5BB81F889EEF3F4121BABFE130100D3E7BD1D1832D478088727B216870DB0B0AF37393760111E53642E26B70DB0B422B029601D199FE9D4004491BA4A6A58BD37603D1EA90E54034D8EC5D0A46B42807F0A381B27770DB425D7BF1E9DD91B30E8890D3CCD1E6AD404489CA81B6171F82E825A6DC235EE560B6F740D5662022C634E2550EACBD131CFA800897ECDAC81540043113129290F44389CA81B55747440788E859DA74D97501D140D90BE935D459D40211AD6D6CB0AC0722296E49201A587BB958B980A8CCA41488A86B579B750B10A908A8001166EF6CA0EC4506F27CF24064276D0B44B5E6354044AA5D7DF63D4064226E0C440C448381B21713405202C425893A89405468540044D5E6D540046107AA040211C4CD0C54020365EF2818054305000005816F09]]
UseName=1
}
Add(ArrayRW,6023421,714,182)
{
link(onRead,16547920:doDraw,[])
link(Array,209399:Array,[])
link(Index,827761:Part3,[(727,164)(629,164)])
}
Add(RGN_Combine,15724864,672,182)
{
link(onCombine,6023421:doRead,[])
link(Region1,9761858:Var1,[(678,170)(666,170)(666,226)])
}
Add(GetDataEx,9761858,672,221)
{
link(Data,15724864:Result,[])
}
Add(Img_Bmp,7541712,595,588)
{
link(onDraw,4153564:doDraw,[])
link(Bitmap,10949674:Var1,[(601,575)])
link(SourceBitmap,13913221:Var,[])
}
Add(GetDataEx,10949674,651,570)
{
Angle=1
link(Data,8412952:Bitmap,[(717,575)(717,635)(727,635)])
}
Add(GetDataEx,7492305,756,56)
{
link(Data,2381860:Bitmap,[])
}
Add(LineBreak,9806582,770,70)
{
Caption="bmp"
Type=1
link(Data,7492305:Var3,[(776,61)])
Primary=[13913221,-168,469]
}
Обратите внимание что во второй схеме нет массива в цикле перерисовки. Один регион содержит все блоки и нет необходимости проверять коллизию с массивом, а достаточно проверить коллизию игрока с миром. Если нет движущихся блоков в мире, то такой способ даже оптимальней. Или если есть движущиеся, то статические блоки объединить в один регион, а движущие в массив регионов.
UtoECat писал(а):
Вы просто храните угол в одном, а идентификатор в другом массиве? :/ Мне тоже надо так сделать...
Эти схемы наброски, а не то как надо сделать вам. Посмотрите проанализируйте и сделайте как вам будет нужно. Я не знаю вашу задумку, а лишь увидел что в вашей схеме сильно теряется производительность из за того что вы создаете регионы в цикле прорисовки.
UtoECat писал(а):
У меня по какой-то причине при повёрнутом регионе его координаты получаются некорректно...

Причина в том что вы переворачиваете квадрат по центру (см. Свойство Mode элемента RGN_Rotate) и получаете ромб и смещение координат X и Y.

Редактировалось 1 раз(а), последний 2020-02-23 13:07:19
карма: 11

0
Ответов: 167
Рейтинг: 7
#88: 2020-02-23 16:55:16 ЛС | профиль | цитата
sla8a писал(а):
Эти схемы наброски, а не то как надо сделать вам. Посмотрите проанализируйте и сделайте как вам будет нужно. Я не знаю вашу задумку, а лишь увидел что в вашей схеме сильно теряется производительность из за того что вы создаете регионы в цикле прорисовки.

Ну я это уже понял . И у меня появилась туча идей оптимизации... Но их я буду применять как с основной оптимизацией закончу

--- Добавлено в 2020-02-23 17:06:14

sla8a писал(а):
Вы просто храните угол в одном, а идентификатор в другом массиве? :/ Мне тоже надо так сделать...

Не... Я говорю о том, что это тоже хорошая идея оптимизации! Зачем нам при рисовании получать данные и о позиции и об угле поворота, если нам нужен лишь ID!

Редактировалось 1 раз(а), последний 2020-02-23 17:06:14
карма: 0
c, c++, lua
0
Ответов: 167
Рейтинг: 7
#89: 2020-02-24 09:24:08 ЛС | профиль | цитата
Вот намутил что-то
1.jpg
2.jpg
3.jpg
Все блоки, что сталкиваются с "зоной камеры" будут рисоваться, и лишь с ними будет проверяться коллизия. На счёт блоков, которые всё равно выпирают - это один увеличенный блок .
Вот теперь, когда я всё это доделаю мне придётся переводить рисование на OpenGL. И я хочу задать вопрос : есть-ли элемент, который поможет рисовать ИМЕННО РЕГИОНЫ. Т.е я хочу помимо всех обычных регионов добавить окружность... И это конечно можно реализовать через defaultные элементы, но мало-ли... Вероятно так это работать будет лучше...

Редактировалось 1 раз(а), последний 2020-02-24 09:24:39
карма: 0
c, c++, lua
0
Ответов: 2200
Рейтинг: 673
#90: 2020-02-24 14:57:15 ЛС | профиль | цитата
UtoECat писал(а):
переводить рисование на OpenGL. И я хочу задать вопрос : есть-ли элемент, который поможет рисовать ИМЕННО РЕГИОНЫ
Вопрос о рисовании регионов в OpenGL?
Вот вам старая поделка, может пригодится: 3D map

Редактировалось 1 раз(а), последний 2020-02-24 15:03:59
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)