Unreal Engine 4 http://uengine.ru/forum/ |
|
Использование классов движка и генерация мира. http://uengine.ru/forum/viewtopic.php?f=19&t=14494 |
Страница 1 из 1 |
Автор: | Monolag [ 08 авг 2018, 21:10 ] |
Заголовок сообщения: | Использование классов движка и генерация мира. |
Здравствуйте. Пытаюсь сделать грамотную генерацию мира, в котором будут рендериться и выгружаться чанки. Вопрос в том как использовать FRunnable и компоненты папки RenderCore, такие как IndexBuffer, FVertexBuffer и т.п. Вопрос: Лендскейп строится с помощью компонента ProceduralMesh, высоты высчитываются PerlinNoise. Если я буду генерировать его по чанкам, к примеру 16 на 16 и буду разбивать это на RunnableThread? Это вообще реально и стоит ли того? Как это сделать примерно? Я понимаю, что я должен создать класс, который будет наследоваться от FRunnable. И буду использовать я все функции оттуда. Это все ясно, ладно. Но как это сделать? Мне ведь нужно иметь доступ к proceduralMesh в этом классе с FRunnable... Вся основная нагрузка ведь идет, когда непосредственно идет CreateSection, создается лендскейп, а не просто высчитываются координаты. В общем, как использовать в таком случае FRunnable? Такой же вопрос и с RenderCore. Понимаю, что создаю классы, которые наследуют FIndexBuffer и т.п. Но как это все будет использоваться? Как это работает? И еще, если возможно, подскажите через что лучше реализовать свою систему созранений в анриале? Понимаю, что вся информация о уровне должна записываться в какой-нибудь бинарник, считываться оттуда, но как это все реализовать? Так, чтобы именно, допустим, все изменения в опенворлде сохранялись, а потом загружались в игре? Большое спасибо. |
Автор: | Monolag [ 20 авг 2018, 17:28 ] |
Заголовок сообщения: | |
Создаете класс Код: class FTerrainGenerationWorker : public FRunnable { public: /*Default constructor*/ FTerrainGenerationWorker(); bool IsThreadFinished; virtual ~FCGWorldGeneratorWorker(); virtual bool Init(); virtual uint32 Run(); virtual void Stop(); virtual void Exit(); FORCEINLINE TStatId GetStatId() const { RETURN_QUICK_DECLARE_CYCLE_STAT(PrimeCalculationAsyncTask, STATGROUP_ThreadPoolAsyncTasks); } }; В cpp вашего эктора пишите Код: FRunnableThread::Create(new FTerrainGenerationWorker());
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |