PCG Lib
Library for procedural content generation
|
Generates a level consisting of rooms. More...
#include <FloorGenerator.h>
Public Member Functions | |
FloorGenerator () | |
default constrcutor usess default parameter, does not print seed and sets a random seed More... | |
FloorGenerator (FloorGeneratorParameter ¶m) | |
constructor using parameter struct uses the specified parameter struct More... | |
std::vector< Room > | GetAllGeometry () |
returns all room in a single list More... | |
Public Attributes | |
std::vector< Room > | _floor |
list of regular rooms More... | |
std::vector< Room > | _hallways |
list of hallways More... | |
Room | _startBox |
special room for start More... | |
Room | _finishBox |
special room for finish More... | |
Private Member Functions | |
void | StartGeneration () |
starts generation More... | |
Point3d | GenerateCenterRandomPlacement (float minCoord=0.0f, float maxCoord=100.0f) |
randomly places center for a room More... | |
void | GenerateRoomsRandomPlacement () |
place room randomly More... | |
bool | IsOverlapping (Room r, Room r2) |
checks if the two rooms are overlapping More... | |
bool | IsInside (Room r, Room r2) |
checks if center of second room is inside first room More... | |
bool | IsInside (Room r, Point3d p) |
checks if specified point is inside room More... | |
void | GenerateRoomsStacking () |
generate a room layout using the stacking-strategy More... | |
DoorDirection | GetRandomDirection () |
gets a random direction for a door More... | |
DoorDirection | GetRandomDirection (std::vector< DoorDirection > dirs) |
gets a random direction from a list of directions More... | |
Room | PlaceNewRoom (DoorDirection dir, Room prev, float offX=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offY=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offZ=PCG_DEFAULT_ROOM_STACKING_OFFSET) |
Room | PlaceHallwayBetweenTwoRooms (Room curr, Room prev, float offX=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offY=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offZ=PCG_DEFAULT_ROOM_STACKING_OFFSET) |
place hallway in the middle of two rooms only works with quadratic rooms More... | |
Room | PlaceHallwayBetweenTwoRooms (Room prev, DoorDirection dir, float offX=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offY=PCG_DEFAULT_ROOM_STACKING_OFFSET, float offZ=PCG_DEFAULT_ROOM_STACKING_OFFSET) |
place hallway between two rooms uses size and direction to place between rectangular rooms correctly More... | |
Room | PlaceSpecialRoom (Room &prev, RoomType rt, DoorDirection dir) |
place special room More... | |
Private Attributes | |
FloorGeneratorParameter | _param |
parameter struct used for generation More... | |
RNG | _rng |
random number generator used for generation More... | |
Generates a level consisting of rooms.
skr::pcg::FloorGenerator::FloorGenerator | ( | ) |
default constrcutor usess default parameter, does not print seed and sets a random seed
skr::pcg::FloorGenerator::FloorGenerator | ( | FloorGeneratorParameter & | param | ) |
constructor using parameter struct uses the specified parameter struct
param | reference to parameter struct |
|
private |
randomly places center for a room
minCoord | minimum coordinate, default 0.0f |
maxCoord | maximum coordinate, default 100.0f |
|
private |
place room randomly
|
private |
generate a room layout using the stacking-strategy
std::vector< skr::pcg::Room > skr::pcg::FloorGenerator::GetAllGeometry | ( | ) |
returns all room in a single list
|
private |
gets a random direction for a door
|
private |
gets a random direction from a list of directions
dirs | list of DoorDirections to choose from |
checks if specified point is inside room
r | room |
p | point |
checks if center of second room is inside first room
r | first room |
r2 | second room |
checks if the two rooms are overlapping
r | first room |
r2 | second room |
|
private |
place hallway in the middle of two rooms only works with quadratic rooms
curr | current room |
prev | previous room |
offX | offset in x-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offY | offset in y-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offZ | offset in z-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
|
private |
place hallway between two rooms uses size and direction to place between rectangular rooms correctly
prev | previous room |
dir | direction hallways is placed in relation to previous room |
offX | offset in x-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offY | offset in y-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offZ | offset in z-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
|
private |
\brief places a new room
dir | direction in which new room is placed |
prev | previous room to place new room off |
offX | offset in x-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offY | offset in y-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
offZ | offset in z-axis, default PCG_DEFAULT_ROOM_STACKING_OFFSET |
|
private |
place special room
prev | reference to previous room |
rt | type of new special room |
dir | direction special room is placed in relation to previous room |
|
private |
starts generation
Room skr::pcg::FloorGenerator::_finishBox |
special room for finish
std::vector<Room> skr::pcg::FloorGenerator::_floor |
list of regular rooms
std::vector<Room> skr::pcg::FloorGenerator::_hallways |
list of hallways
|
private |
parameter struct used for generation
|
private |
random number generator used for generation
Room skr::pcg::FloorGenerator::_startBox |
special room for start