Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 47
Здравствуйте. Пытаюсь сделать грамотную генерацию мира, в котором будут рендериться и выгружаться чанки.
Вопрос в том как использовать FRunnable и компоненты папки RenderCore, такие как IndexBuffer, FVertexBuffer и т.п.
Вопрос: Лендскейп строится с помощью компонента ProceduralMesh, высоты высчитываются PerlinNoise. Если я буду генерировать его по чанкам, к примеру 16 на 16 и буду разбивать это на RunnableThread? Это вообще реально и стоит ли того? Как это сделать примерно? Я понимаю, что я должен создать класс, который будет наследоваться от FRunnable. И буду использовать я все функции оттуда. Это все ясно, ладно. Но как это сделать? Мне ведь нужно иметь доступ к proceduralMesh в этом классе с FRunnable... Вся основная нагрузка ведь идет, когда непосредственно идет CreateSection, создается лендскейп, а не просто высчитываются координаты. В общем, как использовать в таком случае FRunnable?
Такой же вопрос и с RenderCore. Понимаю, что создаю классы, которые наследуют FIndexBuffer и т.п. Но как это все будет использоваться? Как это работает?
И еще, если возможно, подскажите через что лучше реализовать свою систему созранений в анриале? Понимаю, что вся информация о уровне должна записываться в какой-нибудь бинарник, считываться оттуда, но как это все реализовать? Так, чтобы именно, допустим, все изменения в опенворлде сохранялись, а потом загружались в игре?
Большое спасибо.
Аватара пользователя
Пользователь
Сообщения: 47
Создаете класс
Код:
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());


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница