/// <summary>
        /// Add a named shape to a given region, will return a new ReshapeableRigidBodySection if this works correctly.
        /// The returned handles will be owned by this object, so there is no need to dispose them or clean them up (if this
        /// object is disposed). However, you can manually remove a section at any time by calling destroySection.
        /// </summary>
        public ReshapeableRigidBodySection createSection(String shapeName, Vector3 translation, Quaternion rotation, Vector3 scale)
        {
            BulletShapeRepository repository = BulletInterface.Instance.ShapeRepository;

            if (repository.containsValidCollection(shapeName))
            {
                var section = new ReshapeableRigidBodySection(this, repository.getCollection(shapeName).CollisionShape.createClone(), translation, rotation);
                sections.Add(section);

                return(section);
            }

            return(null);
        }
        internal override void createProduct(SimObjectBase instance, BulletScene scene)
        {
            BulletShapeRepository repository = BulletInterface.Instance.ShapeRepository;

            if (repository.containsValidCollection(ShapeName))
            {
                btCollisionShape shape = repository.getCollection(ShapeName).CollisionShape;
                if (constructionInfo.m_mass != 0.0f)
                {
                    shape.calculateLocalInertia(constructionInfo.m_mass, ref constructionInfo.m_localInertia);
                }
                RigidBody rigidBody = new RigidBody(this, scene, shape, instance.Translation, instance.Rotation);
                instance.addElement(rigidBody);
            }
            else
            {
                Log.Default.sendMessage("Could not find collision shape named {0}.", LogLevel.Warning, "BulletPlugin", ShapeName);
            }
        }