|
|
@@ -125,22 +125,16 @@ void StaticModel::ProcessRayQuery(const RayOctreeQuery& query, PODVector<RayQuer
|
|
|
void StaticModel::UpdateBatches(const FrameInfo& frame)
|
|
|
{
|
|
|
const BoundingBox& worldBoundingBox = GetWorldBoundingBox();
|
|
|
- const Matrix3x4& worldTransform = node_->GetWorldTransform();
|
|
|
distance_ = frame.camera_->GetDistance(worldBoundingBox.Center());
|
|
|
|
|
|
if (batches_.Size() > 1)
|
|
|
{
|
|
|
+ const Matrix3x4& worldTransform = node_->GetWorldTransform();
|
|
|
for (unsigned i = 0; i < batches_.Size(); ++i)
|
|
|
- {
|
|
|
batches_[i].distance_ = frame.camera_->GetDistance(worldTransform * geometryData_[i].center_);
|
|
|
- batches_[i].worldTransform_ = &worldTransform;
|
|
|
- }
|
|
|
}
|
|
|
else if (batches_.Size() == 1)
|
|
|
- {
|
|
|
batches_[0].distance_ = distance_;
|
|
|
- batches_[0].worldTransform_ = &worldTransform;
|
|
|
- }
|
|
|
|
|
|
float scale = worldBoundingBox.Size().DotProduct(DOT_SCALE);
|
|
|
float newLodDistance = frame.camera_->GetLodDistance(distance_, scale, lodBias_);
|
|
|
@@ -254,8 +248,10 @@ void StaticModel::SetModel(Model* model)
|
|
|
SetNumGeometries(model->GetNumGeometries());
|
|
|
const Vector<Vector<SharedPtr<Geometry> > >& geometries = model->GetGeometries();
|
|
|
const PODVector<Vector3>& geometryCenters = model->GetGeometryCenters();
|
|
|
+ const Matrix3x4* worldTransform = node_ ? &node_->GetWorldTransform() : (const Matrix3x4*)0;
|
|
|
for (unsigned i = 0; i < geometries.Size(); ++i)
|
|
|
{
|
|
|
+ batches_[i].worldTransform_ = worldTransform;
|
|
|
geometries_[i] = geometries[i];
|
|
|
geometryData_[i].center_ = geometryCenters[i];
|
|
|
}
|