载入中...
搜索中...
未找到
ShapeGrammarScript.cpp
浏览该文件的文档.
2
4
5#include <simplesquirrel/simplesquirrel.hpp>
6
7#include <functional>
8
9namespace eve::procgen {
10
11void exposeShapeGrammar(ssq::Table& table) {
12 auto grammar = table.addClass<ShapeGrammar>(
13 "ProcgenShapeGrammar",
14 std::function<ShapeGrammar*()>([]() -> ShapeGrammar* { return nullptr; }), true);
15 grammar.addFunc("clear", &ShapeGrammar::clear);
16 grammar.addFunc("addModule", &ShapeGrammar::addModule);
17 grammar.addFunc("removeModule", &ShapeGrammar::removeModule);
18 grammar.addFunc("hasModule", &ShapeGrammar::hasModule);
19 grammar.addFunc("getModuleCount", &ShapeGrammar::getModuleCount);
20 grammar.addFunc("getModuleSymbol", &ShapeGrammar::getModuleSymbol);
21 grammar.addFunc("getVariantCount", &ShapeGrammar::getVariantCount);
22 grammar.addFunc("getVariantAsset", &ShapeGrammar::getVariantAsset);
23 grammar.addFunc("getVariantLength", &ShapeGrammar::getVariantLength);
24 grammar.addFunc("validate", &ShapeGrammar::validate);
25 grammar.addFunc("generate", &ShapeGrammar::generate);
26 grammar.addFunc("getError", &ShapeGrammar::getError);
27 grammar.addFunc("debugReport", &ShapeGrammar::debugReport);
28}
29
30} // namespace eve::procgen
Module-based shape grammar expanded continuously along a 3D polyline.
std::string getModuleSymbol(int index) const
Returns the module symbol.
bool removeModule(const std::string &symbol)
Removes module.
void clear()
Remove every registered symbol and diagnostic.
int getModuleCount() const
Returns the module count.
float getVariantLength(const std::string &symbol, int index) const
Returns the variant length.
std::string getError() const
Returns the error.
bool validate(const std::string &grammar)
Parse and validate grammar without generating output.
bool hasModule(const std::string &symbol) const
True when module.
int getVariantCount(const std::string &symbol) const
Returns the variant count.
bool addModule(const std::string &symbol, const std::string &asset, float length, float weight=1.f)
Register a weighted asset variant for a symbol.
std::string getVariantAsset(const std::string &symbol, int index) const
Returns the variant asset.
PointSet * generate(const std::string &grammar, PointSet *controlPoints, uint32_t seed, bool acceptIncomplete)
Expand grammar along control points.
std::string debugReport() const
Debug report.
void exposeShapeGrammar(ssq::Table &table)
Register shape-grammar script types on the Procgen module table.