WhirlyGlobe
1.1
A 3D interactive globe toolkit for ios
|
#include <GlobeScene.h>
Public Types | |
typedef std::set< Drawable *, IdentifiableSorter > | DrawableSet |
typedef std::set< Texture *, IdentifiableSorter > | TextureSet |
Public Member Functions | |
GlobeScene (unsigned int numX, unsigned int numY) | |
The earth will be divided up into these pieces. | |
void | getCullableSize (unsigned int &numX, unsigned int &numY) |
Get the cullable grid size. | |
const Cullable * | getCullable (unsigned int x, unsigned int y) |
Return a particular cullable. | |
const Cullable * | getCullables () |
Full list of cullables (for the renderer) | |
void | addChangeRequest (ChangeRequest *newChange) |
If you have more than one, don't iterate, use the other version. | |
void | addChangeRequests (const std::vector< ChangeRequest * > &newchanges) |
GLuint | getGLTexture (SimpleIdentity texIdent) |
If it's missing, we probably won't draw the associated geometry. | |
void | processChanges (WhirlyGlobeView *view) |
void | overlapping (GeoMbr geoMbr, std::vector< Cullable * > &cullables) |
Given a geo mbr, return all the overlapping cullables. | |
void | removeFromCullables (Drawable *drawable) |
Remove the given drawable from the cullables. | |
Drawable * | getDrawable (SimpleIdentity drawId) |
Look for a Drawable by ID. | |
Texture * | getTexture (SimpleIdentity texId) |
Look for a Texture by ID. | |
Public Attributes | |
unsigned int | numX |
Cullable grid dimensions. | |
unsigned int | numY |
Cullable * | cullables |
Array of active cullables. Static after construction for now. | |
DrawableSet | drawables |
All the drawables we've been handed, sorted by ID. | |
TextureSet | textures |
Textures, sorted by ID. | |
pthread_mutex_t | changeRequestLock |
std::vector< ChangeRequest * > | changeRequests |
Friends | |
class | ChangeRequest |
GlobeScene is the top level scene object. It keeps track of the drawables by sorting them into cullables and it handles the change requests, which consist of pretty much everything that can happen.
The developer never interacts with this.
WhirlyGlobe::GlobeScene::GlobeScene | ( | unsigned int | numX, |
unsigned int | numY | ||
) |
The earth will be divided up into these pieces.
Construct with the grid size of the cullables
void WhirlyGlobe::GlobeScene::addChangeRequest | ( | ChangeRequest * | newChange | ) |
If you have more than one, don't iterate, use the other version.
Add a single change request. You can call this from any thread, it locks.
void WhirlyGlobe::GlobeScene::addChangeRequests | ( | const std::vector< ChangeRequest * > & | newchanges | ) |
Add a list of change requets. You can call this from any thread. This is the faster option if you have more than one change request
GLuint WhirlyGlobe::GlobeScene::getGLTexture | ( | SimpleIdentity | texIdent | ) |
If it's missing, we probably won't draw the associated geometry.
Look for a valid texture
void WhirlyGlobe::GlobeScene::processChanges | ( | WhirlyGlobeView * | view | ) |
Process change requests Only the renderer should call this in the rendering thread
std::vector<ChangeRequest *> WhirlyGlobe::GlobeScene::changeRequests |
We keep a list of change requests to execute This can be accessed in multiple threads, so we lock it