INET Framework for OMNeT++/OMNEST
inet::physicalenvironment::GridObjectCache Class Reference

#include <GridObjectCache.h>

Inheritance diagram for inet::physicalenvironment::GridObjectCache:
inet::physicalenvironment::IObjectCache

Protected Attributes

Parameters
ModuleRefByPar< PhysicalEnvironmentphysicalEnvironment
 

Cache

SpatialGridgrid
 
virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual bool insertObject (const IPhysicalObject *object)
 
 GridObjectCache ()
 
virtual ~GridObjectCache ()
 
virtual void visitObjects (const IVisitor *visitor, const LineSegment &lineSegment) const override
 Calls the visitor with at least all physical objects that intersect with the provided line segment. More...
 

Additional Inherited Members

Constructor & Destructor Documentation

◆ GridObjectCache()

inet::physicalenvironment::GridObjectCache::GridObjectCache ( )
18  :
19  grid(nullptr)
20 {
21 }

◆ ~GridObjectCache()

inet::physicalenvironment::GridObjectCache::~GridObjectCache ( )
virtual
24 {
25  delete grid;
26 }

Member Function Documentation

◆ initialize()

void inet::physicalenvironment::GridObjectCache::initialize ( int  stage)
overrideprotectedvirtual
29 {
30  if (stage == INITSTAGE_LOCAL)
31  physicalEnvironment.reference(this, "physicalEnvironmentModule", true);
32  else if (stage == INITSTAGE_PHYSICAL_OBJECT_CACHE) {
33  double cellSizeX = par("cellSizeX");
34  double cellSizeY = par("cellSizeY");
35  double cellSizeZ = par("cellSizeZ");
36  const Coord& spaceMin = physicalEnvironment->getSpaceMin();
37  const Coord& spaceMax = physicalEnvironment->getSpaceMax();
38  const Coord spaceSize = spaceMax - spaceMin;
39  if (std::isnan(cellSizeX))
40  cellSizeX = spaceSize.x / par("cellCountX").intValue();
41  if (std::isnan(cellSizeY))
42  cellSizeY = spaceSize.y / par("cellCountY").intValue();
43  if (std::isnan(cellSizeZ))
44  cellSizeZ = spaceSize.z / par("cellCountZ").intValue();
45  Coord voxelSizes(cellSizeX, cellSizeY, cellSizeZ);
46  grid = new SpatialGrid(voxelSizes, spaceMin, spaceMax);
47  for (int i = 0; i < physicalEnvironment->getNumObjects(); i++)
48  insertObject(physicalEnvironment->getObject(i));
49  }
50 }

◆ insertObject()

bool inet::physicalenvironment::GridObjectCache::insertObject ( const IPhysicalObject object)
protectedvirtual
53 {
54  Coord pos = object->getPosition();
55  Coord boundingBoxSize = object->getShape()->computeBoundingBoxSize();
56  // TODO avoid dynamic cast
57  grid->insertObject(dynamic_cast<const cObject *>(object), pos, boundingBoxSize);
58  return true;
59 }

Referenced by initialize().

◆ numInitStages()

virtual int inet::physicalenvironment::GridObjectCache::numInitStages ( ) const
inlineoverrideprotectedvirtual
36 { return NUM_INIT_STAGES; }

◆ visitObjects()

void inet::physicalenvironment::GridObjectCache::visitObjects ( const IVisitor visitor,
const LineSegment lineSegment 
) const
overridevirtual

Calls the visitor with at least all physical objects that intersect with the provided line segment.

Implements inet::physicalenvironment::IObjectCache.

62 {
63  grid->lineSegmentQuery(lineSegment, visitor);
64 }

Member Data Documentation

◆ grid

SpatialGrid* inet::physicalenvironment::GridObjectCache::grid
protected

◆ physicalEnvironment

ModuleRefByPar<PhysicalEnvironment> inet::physicalenvironment::GridObjectCache::physicalEnvironment
protected

Referenced by initialize().


The documentation for this class was generated from the following files:
inet::physicalenvironment::GridObjectCache::physicalEnvironment
ModuleRefByPar< PhysicalEnvironment > physicalEnvironment
Definition: GridObjectCache.h:27
inet::SpatialGrid::lineSegmentQuery
void lineSegmentQuery(const LineSegment &lineSegment, const IVisitor *visitor) const
Definition: SpatialGrid.cc:97
inet::INITSTAGE_PHYSICAL_OBJECT_CACHE
INET_API InitStage INITSTAGE_PHYSICAL_OBJECT_CACHE
Initialization of the cache of physical objects present in the physical environment.
inet::SpatialGrid::insertObject
bool insertObject(const cObject *object, const Coord &pos, const Coord &boundingBoxSize)
Definition: SpatialGrid.cc:14
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::physicalenvironment::GridObjectCache::grid
SpatialGrid * grid
Definition: GridObjectCache.h:32
inet::physicalenvironment::GridObjectCache::insertObject
virtual bool insertObject(const IPhysicalObject *object)
Definition: GridObjectCache.cc:52