31 lines
872 B
C++
31 lines
872 B
C++
#pragma once
|
|
#include "ZLMath.h"
|
|
#include "Renderer.h"
|
|
#include "PlanetData.h"
|
|
|
|
namespace ZL {
|
|
|
|
struct StoneInstance {
|
|
uint64_t seed;
|
|
Vector3f position;
|
|
Vector3f scale;
|
|
Vector4f rotation;
|
|
};
|
|
|
|
struct StoneGroup {
|
|
// mesh.PositionData è ïðî÷èå áóäóò çàïîëíÿòüñÿ â inflate()
|
|
VertexDataStruct mesh;
|
|
|
|
// Âíåøíèé âåêòîð — èíäåêñ òðåóãîëüíèêà ïëàíåòû,
|
|
// âíóòðåííèé — ñïèñîê êàìíåé íà ýòîì òðåóãîëüíèêå
|
|
std::vector<std::vector<StoneInstance>> allInstances;
|
|
|
|
// Î÷èùàåò ñòàðóþ ãåîìåòðèþ è ãåíåðèðóåò íîâóþ äëÿ óêàçàííûõ èíäåêñîâ
|
|
void inflate(const std::vector<int>& triangleIndices);
|
|
};
|
|
|
|
// Òåïåðü âîçâðàùàåò çàãîòîâêó ñî âñåìè ïàðàìåòðàìè, íî áåç òÿæåëîãî ìåøà
|
|
StoneGroup CreateStoneGroupData(uint64_t globalSeed, const LodLevel& planetLodLevel);
|
|
|
|
} // namespace ZL
|