mobility+visualizer+python: A specialized version of GetObject (GetMobilityModel) is now implemented in MobilityModel class. This method is now used by the visualizer to obtain mobility interface.
This trick is necessary in order to use in python mobility models that are not explicitly exported (or impossible to export) to python bindings generation.
This commit is contained in:
1 parent
2b0daaa2dd
commit
fcbbf82910
2 files changed
+16
-6
No files matched your search
@@ -75,6 +75,9 @@ public:
|
||||
*/
|
||||
int64_t AssignStreams (int64_t stream);
|
||||
|
||||
static inline Ptr<MobilityModel>
|
||||
GetMobilityModel (Ptr<Object> node);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Must be invoked by subclasses when the course of the
|
||||
@@ -118,6 +121,13 @@ private:
|
||||
|
||||
};
|
||||
|
||||
Ptr<MobilityModel>
|
||||
MobilityModel::GetMobilityModel (Ptr<Object> node)
|
||||
{
|
||||
return node->GetObject<MobilityModel> ();
|
||||
}
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
#endif /* MOBILITY_MODEL_H */
|
||||
@@ -173,7 +173,7 @@ class Node(PyVizObject):
|
||||
|
||||
self.emit("query-extra-tooltip-info", lines)
|
||||
|
||||
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
|
||||
if mob is not None:
|
||||
lines.append(' <b>Mobility Model</b>: %s' % mob.GetInstanceTypeId().GetName())
|
||||
|
||||
@@ -308,7 +308,7 @@ class Node(PyVizObject):
|
||||
def has_mobility(self):
|
||||
if self._has_mobility is None:
|
||||
node = ns.network.NodeList.GetNode(self.node_index)
|
||||
mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mobility = ns.mobility.MobilityModel.GetMobilityModel (node)
|
||||
self._has_mobility = (mobility is not None)
|
||||
return self._has_mobility
|
||||
|
||||
@@ -766,7 +766,7 @@ class Visualizer(gobject.GObject):
|
||||
node_name = "Node %i" % nodeI
|
||||
node_view = self.get_node(nodeI)
|
||||
|
||||
mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mobility = ns.mobility.MobilityModel.GetMobilityModel (node)
|
||||
# print "Mobility type: " + mobility.GetInstanceTypeId().GetName()
|
||||
if mobility is not None:
|
||||
node_view.set_color("red")
|
||||
@@ -877,7 +877,7 @@ class Visualizer(gobject.GObject):
|
||||
for node in self.nodes.itervalues():
|
||||
if node.has_mobility:
|
||||
ns3_node = ns.network.NodeList.GetNode(node.node_index)
|
||||
mobility = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
|
||||
if mobility is not None:
|
||||
pos = mobility.GetPosition()
|
||||
x, y = transform_point_simulation_to_canvas(pos.x, pos.y)
|
||||
@@ -1236,7 +1236,7 @@ class Visualizer(gobject.GObject):
|
||||
self.simulation.lock.acquire()
|
||||
try:
|
||||
ns3_node = ns.network.NodeList.GetNode(node.node_index)
|
||||
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
|
||||
if mob is None:
|
||||
return
|
||||
if self.node_drag_state is not None:
|
||||
@@ -1253,7 +1253,7 @@ class Visualizer(gobject.GObject):
|
||||
self.simulation.lock.acquire()
|
||||
try:
|
||||
ns3_node = ns.network.NodeList.GetNode(node.node_index)
|
||||
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
|
||||
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
|
||||
if mob is None:
|
||||
return False
|
||||
if self.node_drag_state is None:
|
||||
|
||||
Reference in new issue
Block a user