Merge branch 'ehofman/model' into next
This commit is contained in:
@@ -135,15 +135,11 @@ SGMatModel::load_models( SGPropertyNode *prop_root )
|
||||
}
|
||||
|
||||
osg::Node*
|
||||
SGMatModel::get_random_model( SGPropertyNode *prop_root )
|
||||
SGMatModel::get_random_model( SGPropertyNode *prop_root, mt seed )
|
||||
{
|
||||
load_models( prop_root ); // comment this out if preloading models
|
||||
int nModels = _models.size();
|
||||
// int index = int(sg_random() * nModels);
|
||||
static int index = -1;
|
||||
if (++index >= nModels)
|
||||
index = 0;
|
||||
return _models[index].get();
|
||||
return _models[mt_rand(&seed) * nModels].get();
|
||||
}
|
||||
|
||||
double
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
*
|
||||
* @return A randomly select model from the variants.
|
||||
*/
|
||||
osg::Node *get_random_model( SGPropertyNode *prop_root );
|
||||
osg::Node *get_random_model( SGPropertyNode *prop_root, mt seed );
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -611,7 +611,7 @@ SGLoadBTG(const std::string& path, SGMaterialLib *matlib, bool calc_lights, bool
|
||||
i < tileGeometryBin.randomModels.getNumModels(); i++) {
|
||||
SGMatModelBin::MatModel obj
|
||||
= tileGeometryBin.randomModels.getMatModel(i);
|
||||
osg::Node* node = sgGetRandomModel(obj.model);
|
||||
osg::Node* node = sgGetRandomModel(obj.model, seed);
|
||||
|
||||
// Create a matrix to place the object in the correct
|
||||
// location, and then apply the rotation matrix created
|
||||
|
||||
@@ -60,8 +60,8 @@ void sgUserDataInit( SGPropertyNode *p ) {
|
||||
root_props = p;
|
||||
}
|
||||
|
||||
osg::Node* sgGetRandomModel(SGMatModel *obj) {
|
||||
return obj->get_random_model( root_props );
|
||||
osg::Node* sgGetRandomModel(SGMatModel *obj, mt seed) {
|
||||
return obj->get_random_model( root_props, seed );
|
||||
}
|
||||
|
||||
namespace simgear
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#define _SG_USERDATA_HXX
|
||||
|
||||
#include <simgear/compiler.h>
|
||||
#include <simgear/math/sg_random.h>
|
||||
|
||||
#include <osg/Node>
|
||||
|
||||
@@ -42,7 +43,7 @@ void sgUserDataInit(SGPropertyNode *p);
|
||||
/**
|
||||
* Get a random model.
|
||||
*/
|
||||
osg::Node* sgGetRandomModel(SGMatModel *obj);
|
||||
osg::Node* sgGetRandomModel(SGMatModel *obj, mt seed);
|
||||
|
||||
namespace simgear
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user