The base class gets derived by every class in the namespace simple::*. It represends one level of detail. If you dont need a terrain but a voxel-surface use a class in this namespace. More...
#include <base.hpp>
Public Types | |
| typedef tileType | t_tile |
| typedef sharedPointer< t_tile > | t_tilePtr |
| typedef base< t_tile > | t_thisClass |
| typedef vector3int32 | t_tileId |
|
typedef hashMap< t_tileId, t_tilePtr > | t_tilesGotChangedMap |
| typedef std::function< t_tilePtr()> | t_createTileCallback |
| typedef blub::signal< void()> | t_sigEditDone |
Public Member Functions | |
| base (blub::async::dispatcher &worker) | |
| base constructor More... | |
| ~base () | |
| ~base destructor | |
| void | lockForEdit () |
| lockForEdit locks the class for editing/writing it. Call unlockForEdit() after work done. Method executes locks by the dispatcher master. More... | |
| void | unlockForEdit () |
| unlockForEdit unlocks edit/write-lock and calls signalEditDone() . Method executes unlock by the dispatcher master. More... | |
| void | lockForRead () |
| lockForRead locks the class for reading. | |
| void | unlockRead () |
| unlockRead unlocks the class after reading. | |
| const t_tilesGotChangedMap & | getTilesThatGotEdited () const |
| getTilesThatGotEdited returns a list of tiles which changed since the last call lockForEdit() / lockForEditMaster() More... | |
| void | setCreateTileCallback (const t_createTileCallback &callback) |
| setCreateTileCallback sets a callback for creating tiles. Use this method if you want to create custom tiles. More... | |
| blub::async::strand & | getMaster () |
| getMaster returns the master dispatcher. The master synchronises jobs for the worker-thread and writes to class member. The master calls all methods which end with *Master. More... | |
| t_sigEditDone * | signalEditDone () |
| signalEditDone gets called after unlockForEdit() got called. More... | |
Protected Member Functions | |
| void | addToChangeList (const t_tileId &id, t_tilePtr toAdd) |
| addToChangeList adds a tile to the change-list. More... | |
| virtual bool | tryLockForEditMaster () |
| tryLockForEditMaster tries to lock for write. Call by master dispatcher. More... | |
| virtual void | lockForEditMaster () |
| lockForEditMaster locks for write, or waits until possible. Call by master dispatcher. | |
| virtual void | unlockForEditMaster () |
| unlockForEditMaster unlocks write. Call by master dispatcher. | |
| virtual t_tilePtr | createTile () const |
| createTile creates a new Tile. Uses callback set by setCreateTileCallback() More... | |
Protected Attributes | |
| blub::async::strand | m_master |
| m_master The master synchronises jobs for the worker-thread and writes to class member. The master calls all methods which end with *Master. | |
| blub::async::dispatcher & | m_worker |
| m_worker use it to dispatch heavy work. Don't write to class member with it. Do not use any locks. Use m_master for such tasks. | |
| t_tilesGotChangedMap | m_tilesThatGotEdited |
| t_createTileCallback | m_createTileCallback |
| async::mutexReadWrite | m_classLocker |
| t_sigEditDone | m_sigEditDone |
The base class gets derived by every class in the namespace simple::*. It represends one level of detail. If you dont need a terrain but a voxel-surface use a class in this namespace.
| typedef vector3int32 blub::procedural::voxel::simple::base< tileType >::t_tileId |
id Identifier. Contains voxel from id*blub::procedural::voxel::tile::container::voxelLength to (id+1)*blub::procedural::voxel::tile::container::voxelLength-1
| blub::procedural::voxel::simple::base< tileType >::base | ( | blub::async::dispatcher & | worker | ) |
base constructor
| worker | may gets run by multiple threads. |
|
protected |
|
protectedvirtual |
createTile creates a new Tile. Uses callback set by setCreateTileCallback()
Reimplemented in blub::procedural::voxel::simple::accessor< configType >.
| blub::async::strand & blub::procedural::voxel::simple::base< tileType >::getMaster | ( | ) |
getMaster returns the master dispatcher. The master synchronises jobs for the worker-thread and writes to class member. The master calls all methods which end with *Master.
| const base< tileType >::t_tilesGotChangedMap & blub::procedural::voxel::simple::base< tileType >::getTilesThatGotEdited | ( | ) | const |
getTilesThatGotEdited returns a list of tiles which changed since the last call lockForEdit() / lockForEditMaster()
| void blub::procedural::voxel::simple::base< tileType >::lockForEdit | ( | ) |
lockForEdit locks the class for editing/writing it. Call unlockForEdit() after work done. Method executes locks by the dispatcher master.
| void blub::procedural::voxel::simple::base< tileType >::setCreateTileCallback | ( | const t_createTileCallback & | callback | ) |
setCreateTileCallback sets a callback for creating tiles. Use this method if you want to create custom tiles.
| callback | Must not be empty. |
| base< tileType >::t_sigEditDone * blub::procedural::voxel::simple::base< tileType >::signalEditDone | ( | ) |
signalEditDone gets called after unlockForEdit() got called.
|
protectedvirtual |
tryLockForEditMaster tries to lock for write. Call by master dispatcher.
Reimplemented in blub::procedural::voxel::simple::container::base< configType >, and blub::procedural::voxel::simple::container::base< voxelType >.
| void blub::procedural::voxel::simple::base< tileType >::unlockForEdit | ( | ) |
unlockForEdit unlocks edit/write-lock and calls signalEditDone() . Method executes unlock by the dispatcher master.
1.8.8