Revision: 69012
          http://sourceforge.net/p/brlcad/code/69012
Author:   ejno
Date:     2016-10-11 02:38:23 +0000 (Tue, 11 Oct 2016)
Log Message:
-----------
check magic in TreeUpdater; syntactic tweaks; fix in progress

Modified Paths:
--------------
    brlcad/trunk/src/libged/simulate/collision.cpp
    brlcad/trunk/src/libged/simulate/collision.hpp
    brlcad/trunk/src/libged/simulate/interface.cpp
    brlcad/trunk/src/libged/simulate/physics_world.cpp
    brlcad/trunk/src/libged/simulate/physics_world.hpp
    brlcad/trunk/src/libged/simulate/rt_instance.cpp
    brlcad/trunk/src/libged/simulate/rt_instance.hpp
    brlcad/trunk/src/libged/simulate/simulation.cpp
    brlcad/trunk/src/libged/simulate/simulation.hpp
    brlcad/trunk/src/libged/simulate/utility.hpp
    brlcad/trunk/src/libged/simulate/world_object.cpp
    brlcad/trunk/src/libged/simulate/world_object.hpp

Modified: brlcad/trunk/src/libged/simulate/collision.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/collision.cpp      2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/collision.cpp      2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -37,7 +37,7 @@
 
 
 HIDDEN bool
-path_match(const char *full_path, const char *toplevel_path)
+path_match(const char *full_path, const char * const toplevel_path)
 {
     if (*full_path++ != '/') return false;
 
@@ -83,8 +83,8 @@
 
 
 HIDDEN void
-on_multioverlap(application *app, partition *partition1, bu_ptbl *region_table,
-               partition *partition2)
+on_multioverlap(application * const app, partition * const partition1,
+               bu_ptbl * const region_table, partition * const partition2)
 {
     OverlapHandlerArgs &args = *static_cast<OverlapHandlerArgs *>(app->a_uptr);
 
@@ -98,7 +98,7 @@
           app->a_ray.r_dir);
     VJOIN1(point_on_b, app->a_ray.r_pt, partition1->pt_outhit->hit_dist,
           app->a_ray.r_dir);
-    btScalar depth = -DIST_PT_PT(point_on_a, point_on_b);
+    fastf_t depth = -DIST_PT_PT(point_on_a, point_on_b);
     args.result.addContactPoint(args.normal_world_on_b, point_on_b, depth);
 
     // handle the overlap
@@ -151,12 +151,12 @@
        // radius of the circle of rays
        // half of the diagonal of the overlap rpp so that rays will cover
        // the entire volume from all orientations
-       btScalar radius = (overlap_max - overlap_min).length() / 2.0;
+       const fastf_t radius = (overlap_max - overlap_min).length() / 2.0;
 
        // calculate the origin of the center ray
        {
            // center of the overlap volume
-           btVector3 overlap_center = (overlap_min + overlap_max) / 2.0;
+           const btVector3 overlap_center = (overlap_min + overlap_max) / 2.0;
 
            // step back from overlap_center, along the normal by `radius`,
            // to ensure that rays start from outside of the overlap region
@@ -177,7 +177,7 @@
        }
 
        // equivalent to Bullet's collision tolerance (4mm after scaling is 
enabled)
-       const btScalar grid_size = 4.0;
+       const fastf_t grid_size = 4.0;
 
        rt_gen_circular_grid(rays, &center_ray, radius, up_vect, grid_size);
     }
@@ -240,7 +240,8 @@
 
 
 void
-RtCollisionShape::calculateLocalInertia(btScalar mass, btVector3 &inertia) 
const
+RtCollisionShape::calculateLocalInertia(const btScalar mass,
+                                       btVector3 &inertia) const
 {
     // in most cases we can approximate the inertia tensor with that of a 
bounding box
     btBoxShape::calculateLocalInertia(mass, inertia);
@@ -268,16 +269,17 @@
     const btCollisionObjectWrapper *body_a_wrap,
     const btCollisionObjectWrapper *body_b_wrap)
 {
-    void *ptr = cinfo.m_dispatcher1->allocateCollisionAlgorithm(sizeof(
-                   RtCollisionAlgorithm));
+    void * const ptr = cinfo.m_dispatcher1->allocateCollisionAlgorithm(sizeof(
+                          RtCollisionAlgorithm));
     return new(ptr) RtCollisionAlgorithm(NULL, cinfo, body_a_wrap, 
body_b_wrap);
 }
 
 
-RtCollisionAlgorithm::RtCollisionAlgorithm(btPersistentManifold *manifold,
+RtCollisionAlgorithm::RtCollisionAlgorithm(btPersistentManifold * const
+       manifold,
        const btCollisionAlgorithmConstructionInfo &cinfo,
-       const btCollisionObjectWrapper *body_a_wrap,
-       const btCollisionObjectWrapper *body_b_wrap) :
+       const btCollisionObjectWrapper * const body_a_wrap,
+       const btCollisionObjectWrapper * const body_b_wrap) :
     btActivatingCollisionAlgorithm(cinfo, body_a_wrap, body_b_wrap),
     m_owns_manifold(false),
     m_manifold(manifold)
@@ -300,10 +302,10 @@
 
 
 void
-RtCollisionAlgorithm::processCollision(const btCollisionObjectWrapper
-                                      *body_a_wrap,
-                                      const btCollisionObjectWrapper 
*body_b_wrap,
-                                      const btDispatcherInfo &, 
btManifoldResult *result)
+RtCollisionAlgorithm::processCollision(const btCollisionObjectWrapper * const
+                                      body_a_wrap,
+                                      const btCollisionObjectWrapper * const 
body_b_wrap,
+                                      const btDispatcherInfo &, 
btManifoldResult * const result)
 {
     if (!m_manifold)
        return;

Modified: brlcad/trunk/src/libged/simulate/collision.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/collision.hpp      2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/collision.hpp      2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -47,8 +47,8 @@
     static const int RT_SHAPE_TYPE = CUSTOM_POLYHEDRAL_SHAPE_TYPE;
 
 
-    RtCollisionShape(const TreeUpdater &tree_updater, const std::string 
&db_path,
-                    const btVector3 &half_extents);
+    explicit RtCollisionShape(const TreeUpdater &tree_updater,
+                             const std::string &db_path, const btVector3 
&half_extents);
 
     virtual const char *getName() const;
     virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) 
const;
@@ -66,10 +66,10 @@
 class RtCollisionAlgorithm : public btActivatingCollisionAlgorithm
 {
 public:
-    RtCollisionAlgorithm(btPersistentManifold *manifold,
-                        const btCollisionAlgorithmConstructionInfo &cinfo,
-                        const btCollisionObjectWrapper *body_a_wrap,
-                        const btCollisionObjectWrapper *body_b_wrap);
+    explicit RtCollisionAlgorithm(btPersistentManifold *manifold,
+                                 const btCollisionAlgorithmConstructionInfo 
&cinfo,
+                                 const btCollisionObjectWrapper *body_a_wrap,
+                                 const btCollisionObjectWrapper *body_b_wrap);
 
     virtual ~RtCollisionAlgorithm();
 

Modified: brlcad/trunk/src/libged/simulate/interface.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/interface.cpp      2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/interface.cpp      2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -37,7 +37,7 @@
 
 
 int
-ged_simulate(ged *gedp, int argc, const char **argv)
+ged_simulate(ged * const gedp, const int argc, const char ** const argv)
 {
     GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
     GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
@@ -48,15 +48,15 @@
        return GED_ERROR;
     }
 
-    directory *dir = db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_NOISY);
+    directory * const dir = db_lookup(gedp->ged_wdbp->dbip, argv[1], true);
 
     if (!dir) return GED_ERROR;
 
     try {
-       btScalar seconds = simulate::lexical_cast<btScalar>(argv[2],
-                          std::invalid_argument("invalid value for 
'seconds'"));
+       const fastf_t seconds = simulate::lexical_cast<btScalar>(argv[2],
+                               std::invalid_argument("invalid value for 
'seconds'"));
 
-       if (seconds < 0.0) throw std::runtime_error("invalid value for 
'seconds'");
+       if (seconds < 0.0) throw std::invalid_argument("invalid value for 
'seconds'");
 
        simulate::Simulation simulation(*gedp->ged_wdbp->dbip, *dir);
        simulation.step(seconds);
@@ -79,7 +79,7 @@
 
 
 int
-ged_simulate(ged *gedp, int argc, const char **argv)
+ged_simulate(ged * const gedp, const int argc, const char ** const argv)
 {
     GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
     GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);

Modified: brlcad/trunk/src/libged/simulate/physics_world.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/physics_world.cpp  2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/physics_world.cpp  2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -51,9 +51,9 @@
 
 
 void
-PhysicsWorld::step(btScalar seconds)
+PhysicsWorld::step(fastf_t seconds)
 {
-    for (int i = 0; i < 600.0 * seconds; ++i)
+    for (unsigned i = 0; i < 600.0 * seconds; ++i)
        m_world.stepSimulation(1.0 / 600.0, 6000);
 }
 

Modified: brlcad/trunk/src/libged/simulate/physics_world.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/physics_world.hpp  2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/physics_world.hpp  2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -30,6 +30,8 @@
 
 #include "common.h"
 
+#include "bu/defines.h"
+
 #include <btBulletDynamicsCommon.h>
 
 
@@ -40,10 +42,10 @@
 class PhysicsWorld
 {
 public:
-    PhysicsWorld();
+    explicit PhysicsWorld();
     virtual ~PhysicsWorld();
 
-    void step(btScalar seconds);
+    void step(fastf_t seconds);
     void add_rigid_body(btRigidBody &rigid_body);
     void remove_rigid_body(btRigidBody &rigid_body);
 

Modified: brlcad/trunk/src/libged/simulate/rt_instance.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/rt_instance.cpp    2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/rt_instance.cpp    2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -31,7 +31,9 @@
 
 #include "rt_instance.hpp"
 
+#include <stdexcept>
 
+
 namespace
 {
 
@@ -39,8 +41,7 @@
 HIDDEN rt_db_internal
 duplicate_comb_internal(const rt_db_internal &source)
 {
-    if (source.idb_minor_type != ID_COMBINATION)
-       throw std::invalid_argument("source is not a combination");
+    RT_CK_DB_INTERNAL(&source);
 
     rt_db_internal dest = source;
     BU_GET(dest.idb_ptr, rt_comb_internal);
@@ -52,6 +53,8 @@
                                              (source.idb_ptr);
        rt_comb_internal &dest_comb = *static_cast<rt_comb_internal 
*>(dest.idb_ptr);
 
+       RT_CK_COMB(&source_comb);
+
        dest_comb = source_comb;
        BU_VLS_INIT(&dest_comb.shader);
        BU_VLS_INIT(&dest_comb.material);
@@ -65,14 +68,13 @@
 
 
 HIDDEN void
-write_comb_internal(db_i &db_instance, directory &vdirectory,
+write_comb_internal(db_i &db, directory &dir,
                    const rt_db_internal &comb_internal)
 {
 
     rt_db_internal temp_internal = duplicate_comb_internal(comb_internal);
 
-    if (rt_db_put_internal(&vdirectory, &db_instance, &temp_internal,
-                          &rt_uniresource) < 0)
+    if (rt_db_put_internal(&dir, &db, &temp_internal, &rt_uniresource) < 0)
        throw std::runtime_error("rt_db_put_internal() failed");
 }
 
@@ -84,26 +86,25 @@
 {
 
 
-TreeUpdater::TreeUpdater(db_i &db_instance, directory &vdirectory) :
-    m_db_instance(db_instance),
-    m_directory(vdirectory),
+TreeUpdater::TreeUpdater(db_i &db, directory &dir) :
+    m_db(db),
+    m_dir(dir),
     m_comb_internal(),
     m_is_modified(false),
     m_rt_instance(NULL)
 {
-    if (rt_db_get_internal(&m_comb_internal, &m_directory, &m_db_instance,
-                          bn_mat_identity, &rt_uniresource) < 0)
+    if (rt_db_get_internal(&m_comb_internal, &m_dir, &m_db, bn_mat_identity,
+                          &rt_uniresource) < 0)
        throw std::runtime_error("rt_db_get_internal() failed");
 
-    if (m_comb_internal.idb_minor_type != ID_COMBINATION)
-       throw std::invalid_argument("object is not a combination");
+    RT_CK_COMB(m_comb_internal.idb_ptr);
 }
 
 
 TreeUpdater::~TreeUpdater()
 {
     if (m_is_modified)
-       write_comb_internal(m_db_instance, m_directory, m_comb_internal);
+       write_comb_internal(m_db, m_dir, m_comb_internal);
 
     if (m_rt_instance)
        rt_free_rti(m_rt_instance);
@@ -130,19 +131,19 @@
 TreeUpdater::get_rt_instance() const
 {
     if (m_is_modified)
-       write_comb_internal(m_db_instance, m_directory, m_comb_internal);
+       write_comb_internal(m_db, m_dir, m_comb_internal);
     else if (m_rt_instance)
        return *m_rt_instance;
 
     if (m_rt_instance)
        rt_free_rti(m_rt_instance);
 
-    m_rt_instance = rt_new_rti(&m_db_instance);
+    m_rt_instance = rt_new_rti(&m_db);
 
     if (!m_rt_instance)
        throw std::runtime_error("rt_new_rti() failed");
 
-    if (rt_gettree(m_rt_instance, m_directory.d_namep) != 0) {
+    if (rt_gettree(m_rt_instance, m_dir.d_namep) != 0) {
        rt_free_rti(m_rt_instance);
        m_rt_instance = NULL;
        throw std::runtime_error("rt_gettree() failed");

Modified: brlcad/trunk/src/libged/simulate/rt_instance.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/rt_instance.hpp    2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/rt_instance.hpp    2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -30,8 +30,6 @@
 
 #include "common.h"
 
-#include <stdexcept>
-
 #include "raytrace.h"
 
 
@@ -42,7 +40,7 @@
 class TreeUpdater
 {
 public:
-    TreeUpdater(db_i &db_instance, directory &vdirectory);
+    explicit TreeUpdater(db_i &db, directory &dir);
     ~TreeUpdater();
 
     void mark_modified();
@@ -54,8 +52,8 @@
     TreeUpdater(const TreeUpdater &source);
     TreeUpdater &operator=(const TreeUpdater &source);
 
-    db_i &m_db_instance;
-    directory &m_directory;
+    db_i &m_db;
+    directory &m_dir;
     rt_db_internal m_comb_internal;
 
     mutable bool m_is_modified;

Modified: brlcad/trunk/src/libged/simulate/simulation.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/simulation.cpp     2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/simulation.cpp     2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -38,13 +38,16 @@
 {
 
 
-Simulation::Simulation(db_i &db_instance, directory &vdirectory) :
-    m_db_instance(db_instance),
-    m_directory(vdirectory),
-    m_tree_updater(db_instance, m_directory),
+Simulation::Simulation(db_i &db, directory &dir) :
+    m_db(db),
+    m_dir(dir),
+    m_tree_updater(db, m_dir),
     m_objects()
 {
-    if (m_directory.d_minor_type != ID_COMBINATION)
+    RT_CK_DBI(&m_db);
+    RT_CK_DIR(&m_dir);
+
+    if (m_dir.d_minor_type != ID_COMBINATION)
        throw std::runtime_error("object is not a combination");
 
     tree * const vtree = m_tree_updater.get_tree();
@@ -81,7 +84,7 @@
 {
     switch (vtree.tr_op) {
        case OP_DB_LEAF: {
-           directory *dir = db_lookup(&m_db_instance, vtree.tr_l.tl_name, 
LOOKUP_NOISY);
+           directory * const dir = db_lookup(&m_db, vtree.tr_l.tl_name, true);
 
            if (!dir) throw std::runtime_error("db_lookup() failed");
 
@@ -90,7 +93,7 @@
                MAT_IDN(vtree.tr_l.tl_mat);
            }
 
-           WorldObject * const object = WorldObject::create(m_db_instance, 
*dir,
+           WorldObject * const object = WorldObject::create(m_db, *dir,
                                         vtree.tr_l.tl_mat, m_tree_updater);
            m_objects.push_back(object);
            object->add_to_world(m_world);

Modified: brlcad/trunk/src/libged/simulate/simulation.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/simulation.hpp     2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/simulation.hpp     2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -41,15 +41,15 @@
 class Simulation : public PhysicsWorld
 {
 public:
-    Simulation(db_i &db_instance, directory &vdirectory);
+    explicit Simulation(db_i &db_instance, directory &dir);
     virtual ~Simulation();
 
 
 private:
     void get_tree_objects(tree &vtree);
 
-    db_i &m_db_instance;
-    directory &m_directory;
+    db_i &m_db;
+    directory &m_dir;
     TreeUpdater m_tree_updater;
     std::vector<WorldObject *> m_objects;
 };

Modified: brlcad/trunk/src/libged/simulate/utility.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/utility.hpp        2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/utility.hpp        2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -48,7 +48,7 @@
 }
 
 
-template<typename Target, typename Source>
+template <typename Target, typename Source>
 Target lexical_cast(Source arg,
                    const std::exception &exception = 
std::invalid_argument("bad lexical_cast"))
 {

Modified: brlcad/trunk/src/libged/simulate/world_object.cpp
===================================================================
--- brlcad/trunk/src/libged/simulate/world_object.cpp   2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/world_object.cpp   2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -41,13 +41,13 @@
 
 
 HIDDEN std::pair<btVector3, btVector3>
-get_bounding_box(db_i &db_instance, directory &dir)
+get_bounding_box(db_i &db, directory &dir)
 {
     btVector3 bounding_box_min, bounding_box_max;
     {
        point_t bb_min, bb_max;
 
-       if (rt_bound_internal(&db_instance, &dir, bb_min, bb_max))
+       if (rt_bound_internal(&db, &dir, bb_min, bb_max))
            throw std::runtime_error("failed to get bounding box");
 
        VMOVE(bounding_box_min, bb_min);
@@ -60,12 +60,12 @@
 }
 
 
-HIDDEN btScalar
-get_volume(db_i &db_instance, directory &dir)
+HIDDEN fastf_t
+get_volume(db_i &db, directory &dir)
 {
     rt_db_internal internal;
 
-    if (rt_db_get_internal(&internal, &dir, &db_instance, bn_mat_identity,
+    if (rt_db_get_internal(&internal, &dir, &db, bn_mat_identity,
                           &rt_uniresource) < 0)
        throw std::runtime_error("rt_db_get_internal() failed");
 
@@ -79,7 +79,7 @@
     }
 
     // approximate volume using the bounding box
-    btVector3 bounding_box_dims = get_bounding_box(db_instance, dir).second;
+    btVector3 bounding_box_dims = get_bounding_box(db, dir).second;
     return bounding_box_dims.getX() * bounding_box_dims.getY() *
           bounding_box_dims.getZ();
 }
@@ -97,7 +97,7 @@
     for (int i = 0; i < 3; ++i) {
        std::string value;
        std::getline(stream, value, i != 2 ? ',' : '>');
-       result[i] = simulate::lexical_cast<btScalar>(value,
+       result[i] = simulate::lexical_cast<fastf_t>(value,
                    std::invalid_argument("invalid vector"));
     }
 
@@ -110,7 +110,7 @@
 
 HIDDEN btRigidBody::btRigidBodyConstructionInfo
 build_construction_info(btMotionState &motion_state,
-                       btCollisionShape &collision_shape, btScalar mass)
+                       btCollisionShape &collision_shape, fastf_t mass)
 {
     btVector3 inertia;
     collision_shape.calculateLocalInertia(mass, inertia);
@@ -126,8 +126,8 @@
 {
 
 
-MatrixMotionState::MatrixMotionState(mat_t matrix, const btVector3 &origin,
-                                    TreeUpdater &tree_updater) :
+MatrixMotionState::MatrixMotionState(fastf_t * const matrix,
+                                    const btVector3 &origin, TreeUpdater 
&tree_updater) :
     m_matrix(matrix),
     m_origin(origin),
     m_tree_updater(tree_updater)
@@ -175,14 +175,13 @@
 
 
 WorldObject *
-WorldObject::create(db_i &db_instance, directory &vdirectory, mat_t matrix,
+WorldObject::create(db_i &db, directory &dir, fastf_t * const matrix,
                    TreeUpdater &tree_updater)
 {
     btVector3 linear_velocity(0.0, 0.0, 0.0), angular_velocity(0.0, 0.0, 0.0);
-    btScalar mass;
+    fastf_t mass;
 
-    std::pair<btVector3, btVector3> bounding_box = 
get_bounding_box(db_instance,
-           vdirectory);
+    std::pair<btVector3, btVector3> bounding_box = get_bounding_box(db, dir);
     // apply matrix scaling
     bounding_box.second[X] *= 1.0 / matrix[MSX];
     bounding_box.second[Y] *= 1.0 / matrix[MSY];
@@ -190,13 +189,13 @@
     bounding_box.second *= 1.0 / matrix[MSA];
 
     {
-       const btScalar density = 1.0;
-       mass = density * get_volume(db_instance, vdirectory);
+       const fastf_t density = 1.0;
+       mass = density * get_volume(db, dir);
 
        bu_attribute_value_set obj_avs;
        BU_AVS_INIT(&obj_avs);
 
-       if (db5_get_attributes(&db_instance, &obj_avs, &vdirectory) < 0)
+       if (db5_get_attributes(&db, &obj_avs, &dir) < 0)
            throw std::runtime_error("db5_get_attributes() failed");
 
        simulate::AutoPtr<bu_attribute_value_set, bu_avs_free> obj_avs_autoptr(
@@ -209,8 +208,8 @@
                const std::string value = obj_avs.avp[i].value;
 
                if (name == "mass") {
-                   mass = lexical_cast<btScalar>(value,
-                                                 
std::invalid_argument("invalid attribute 'mass'"));
+                   mass = lexical_cast<fastf_t>(value,
+                                                std::invalid_argument("invalid 
attribute 'mass'"));
 
                    if (mass < 0.0) throw std::invalid_argument("invalid 
attribute 'mass'");
                } else if (name == "linear_velocity") {
@@ -222,20 +221,20 @@
            }
     }
 
-    WorldObject *object = new WorldObject(vdirectory, matrix, tree_updater,
-                                         bounding_box.first, 
bounding_box.second, mass);
+    WorldObject * const object = new WorldObject(dir, matrix, tree_updater,
+           bounding_box.first, bounding_box.second, mass);
     object->m_rigid_body.setLinearVelocity(linear_velocity);
     object->m_rigid_body.setAngularVelocity(angular_velocity);
     return object;
 }
 
 
-WorldObject::WorldObject(directory &vdirectory, mat_t matrix,
+WorldObject::WorldObject(directory &dir, fastf_t * const matrix,
                         TreeUpdater &tree_updater, btVector3 bounding_box_pos,
-                        btVector3 bounding_box_dims, btScalar mass) :
+                        btVector3 bounding_box_dims, const fastf_t mass) :
     m_world(NULL),
     m_motion_state(matrix, bounding_box_pos, tree_updater),
-    m_collision_shape(tree_updater, vdirectory.d_namep, bounding_box_dims / 
2.0),
+    m_collision_shape(tree_updater, dir.d_namep, bounding_box_dims / 2.0),
     m_rigid_body(build_construction_info(m_motion_state, m_collision_shape, 
mass))
 {}
 

Modified: brlcad/trunk/src/libged/simulate/world_object.hpp
===================================================================
--- brlcad/trunk/src/libged/simulate/world_object.hpp   2016-10-09 01:34:28 UTC 
(rev 69011)
+++ brlcad/trunk/src/libged/simulate/world_object.hpp   2016-10-11 02:38:23 UTC 
(rev 69012)
@@ -40,8 +40,8 @@
 class MatrixMotionState : public btMotionState
 {
 public:
-    MatrixMotionState(mat_t matrix, const btVector3 &origin,
-                     TreeUpdater &tree_updater);
+    explicit MatrixMotionState(fastf_t *matrix, const btVector3 &origin,
+                              TreeUpdater &tree_updater);
 
     virtual void getWorldTransform(btTransform &dest) const;
     virtual void setWorldTransform(const btTransform &transform);
@@ -60,8 +60,8 @@
 class WorldObject
 {
 public:
-    static WorldObject *create(db_i &db_instance, directory &vdirectory,
-                              mat_t matrix, TreeUpdater &tree_updater);
+    static WorldObject *create(db_i &db, directory &dir, fastf_t *matrix,
+                              TreeUpdater &tree_updater);
     ~WorldObject();
 
     void add_to_world(btDiscreteDynamicsWorld &world);
@@ -71,8 +71,9 @@
     WorldObject(const WorldObject &source);
     WorldObject &operator=(const WorldObject &source);
 
-    WorldObject(directory &vdirectory, mat_t matrix, TreeUpdater &tree_updater,
-               btVector3 bounding_box_pos, btVector3 bounding_box_dims, 
btScalar mass);
+    explicit WorldObject(directory &dir, fastf_t *matrix,
+                        TreeUpdater &tree_updater, btVector3 bounding_box_pos,
+                        btVector3 bounding_box_dims, fastf_t mass);
 
 
     btDiscreteDynamicsWorld *m_world;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to