added placement constraints
This commit is contained in:
parent
064e0aba80
commit
3a641d6d56
2 changed files with 149 additions and 138 deletions
27
projet.use
27
projet.use
|
@ -84,7 +84,7 @@ class Flotte
|
|||
operations
|
||||
ajouterBateau(bateau: Bateau)
|
||||
constraints
|
||||
-- Contraintes qui vérifient que les bateaux sont de la bonne taille
|
||||
-- Contraintes qui vérifient le nombre de bateaux par type
|
||||
inv torpilleur: bateaux->select(b: Bateau | b.type = TypeBateau::Torpilleur)->size() = 1
|
||||
inv contre_torpilleur: bateaux->select(b: Bateau | b.type = TypeBateau::Contre_Torpilleur)->size() = 2
|
||||
inv croiseur: bateaux->select(b: Bateau | b.type = TypeBateau::Croiseur)->size() = 1
|
||||
|
@ -94,6 +94,8 @@ end
|
|||
class Coup
|
||||
attributes
|
||||
type: TypeCoup
|
||||
constraints
|
||||
inv unicite: joueur.coups.isUnique(c: Coup | c.case = case)
|
||||
end
|
||||
|
||||
class Plateau
|
||||
|
@ -111,7 +113,7 @@ operations
|
|||
getEtat(): TypeCase
|
||||
constraints
|
||||
-- Contrainte qui vérifie qu'il n'y a pas deux cases au même endroit
|
||||
inv unicite: plateau.cases->select(c: Case | c.x = x and c.y = y)->size() = 1
|
||||
inv unicite: plateau.cases->isUnique(c: Case | c.x = x and c.y = y)
|
||||
-- Contrainte qui vérifie que le plateau est de bonne dimensions
|
||||
inv dimensions: x <= 10 and x > 0 and y > 0 and y <= 10
|
||||
end
|
||||
|
@ -121,14 +123,23 @@ attributes
|
|||
type: TypeBateau
|
||||
longueur: Integer
|
||||
etat: EtatBateau
|
||||
x1: Integer
|
||||
y1: Integer
|
||||
x2: Integer
|
||||
y2: Integer
|
||||
constraints
|
||||
-- Contraintes qui vérifient que les bateaux sont de la bonne taille
|
||||
inv torpilleur: type = TypeBateau::Torpilleur implies longueur = 2
|
||||
inv contre_torpilleur: type = TypeBateau::Contre_Torpilleur implies longueur = 3
|
||||
inv croiseur: type = TypeBateau::Croiseur implies longueur = 4
|
||||
inv porte_avions: type = TypeBateau::Porte_Avions implies longueur = 5
|
||||
inv torpilleur1: type = TypeBateau::Torpilleur implies longueur = 2 and cases->size() = 2
|
||||
inv contre_torpilleur1: type = TypeBateau::Contre_Torpilleur implies longueur = 3 and cases->size() = 3
|
||||
inv croiseur1: type = TypeBateau::Croiseur implies longueur = 4 and cases->size() = 4
|
||||
inv porte_avions1: type = TypeBateau::Porte_Avions implies longueur = 5 and cases->size() = 2
|
||||
-- Contrainte qui dit que si toutes les cases d'un bateau sont touchées alors le bateau est coulé
|
||||
inv coule: cases->forAll(c: Case | c.type = TypeCase::Touche) implies etat = EtatBateau::Coule
|
||||
-- Contrainte qui vérifie que le bateau est soit horizontal soit vertical
|
||||
inv orientation: x1 = x2 or y1 = y2
|
||||
-- Contraintes qui vérifient que les cases du bateau correspondent bien aux coordonnées
|
||||
inv horizontal: y1 = y2 implies cases.forAll(c: Case | c.y = y1 and c.x >= x1 and c.x <= x2)
|
||||
inv vertical: x1 = x2 implies cases.forAll(c: Case | c.x = x1 and c.y >= y1 and c.y <= y2)
|
||||
end
|
||||
|
||||
association Utilise between
|
||||
|
@ -147,8 +158,8 @@ Jeu[1] role jeu2
|
|||
end
|
||||
|
||||
association Tire between
|
||||
Joueur[*] role joueur
|
||||
Coup[1] role coups
|
||||
Joueur[1] role joueur
|
||||
Coup[0..100] role coups
|
||||
end
|
||||
|
||||
association Appartient between
|
||||
|
|
|
@ -103,19 +103,6 @@
|
|||
<target>Bateau</target>
|
||||
<name>Repartit</name>
|
||||
<properties>
|
||||
<edgeproperty id="Repartit::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>bateau</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-4.0</userOffsetX>
|
||||
<userOffsetY>-6.0</userOffsetY>
|
||||
<attached>Repartit::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::target::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="true" visible="true">
|
||||
|
@ -130,6 +117,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>bateau</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-4.0</userOffsetX>
|
||||
<userOffsetY>-6.0</userOffsetY>
|
||||
<attached>Repartit::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::AssociationName"
|
||||
sizeCalculated="true" type="associationName"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -146,6 +146,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>cases</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>8.0</userOffsetX>
|
||||
<userOffsetY>6.0</userOffsetY>
|
||||
<attached>Repartit::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::source::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="true" visible="true">
|
||||
|
@ -160,19 +173,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Repartit::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>cases</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>8.0</userOffsetX>
|
||||
<userOffsetY>6.0</userOffsetY>
|
||||
<attached>Repartit::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
</properties>
|
||||
<waypoints>
|
||||
<edgeproperty id="Repartit::WayPoint::0"
|
||||
|
@ -207,19 +207,6 @@
|
|||
<target>Plateau</target>
|
||||
<name>Compose</name>
|
||||
<properties>
|
||||
<edgeproperty id="Compose::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>plateau</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-17.0</userOffsetX>
|
||||
<userOffsetY>-5.0</userOffsetY>
|
||||
<attached>Compose::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Compose::target::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -234,6 +221,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Compose::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>plateau</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-17.0</userOffsetX>
|
||||
<userOffsetY>-5.0</userOffsetY>
|
||||
<attached>Compose::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Compose::AssociationName"
|
||||
sizeCalculated="true" type="associationName"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -311,19 +311,6 @@
|
|||
<target>Coup</target>
|
||||
<name>Etat</name>
|
||||
<properties>
|
||||
<edgeproperty id="Etat::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>coup</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>46.0</userOffsetX>
|
||||
<userOffsetY>-14.0</userOffsetY>
|
||||
<attached>Etat::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Etat::target::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -338,6 +325,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Etat::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>coup</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>46.0</userOffsetX>
|
||||
<userOffsetY>-14.0</userOffsetY>
|
||||
<attached>Etat::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Etat::AssociationName"
|
||||
sizeCalculated="true" type="associationName"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -456,6 +456,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>8.0</userOffsetX>
|
||||
<userOffsetY>7.0</userOffsetY>
|
||||
<attached>Appartient::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient::source::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="true" visible="true">
|
||||
|
@ -470,19 +483,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>8.0</userOffsetX>
|
||||
<userOffsetY>7.0</userOffsetY>
|
||||
<attached>Appartient::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
</properties>
|
||||
<waypoints>
|
||||
<edgeproperty id="Appartient::WayPoint::0"
|
||||
|
@ -724,6 +724,19 @@
|
|||
<target>Bateau</target>
|
||||
<name>Appartient2</name>
|
||||
<properties>
|
||||
<edgeproperty id="Appartient2::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>bateaux</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>1.0</userOffsetX>
|
||||
<userOffsetY>22.0</userOffsetY>
|
||||
<attached>Appartient2::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::target::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="true" visible="true">
|
||||
|
@ -738,19 +751,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>bateaux</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>1.0</userOffsetX>
|
||||
<userOffsetY>22.0</userOffsetY>
|
||||
<attached>Appartient2::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::AssociationName"
|
||||
sizeCalculated="true" type="associationName"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -767,6 +767,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>flotte</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>9.0</userOffsetX>
|
||||
<userOffsetY>30.0</userOffsetY>
|
||||
<attached>Appartient2::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::source::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -781,19 +794,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Appartient2::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>flotte</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>9.0</userOffsetX>
|
||||
<userOffsetY>30.0</userOffsetY>
|
||||
<attached>Appartient2::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
</properties>
|
||||
<waypoints>
|
||||
<edgeproperty id="Appartient2::WayPoint::0"
|
||||
|
@ -871,19 +871,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Joue1::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur1</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>62.0</userOffsetX>
|
||||
<userOffsetY>-25.0</userOffsetY>
|
||||
<attached>Joue1::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Joue1::source::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="true" visible="true">
|
||||
|
@ -898,6 +885,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Joue1::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur1</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>62.0</userOffsetX>
|
||||
<userOffsetY>-25.0</userOffsetY>
|
||||
<attached>Joue1::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
</properties>
|
||||
<waypoints>
|
||||
<edgeproperty id="Joue1::WayPoint::0" sizeCalculated="true"
|
||||
|
@ -930,19 +930,6 @@
|
|||
<target>Coup</target>
|
||||
<name>Tire</name>
|
||||
<properties>
|
||||
<edgeproperty id="Tire::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>coups</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-19.0</userOffsetX>
|
||||
<userOffsetY>-6.0</userOffsetY>
|
||||
<attached>Tire::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::target::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -957,6 +944,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::target::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>coups</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>-19.0</userOffsetX>
|
||||
<userOffsetY>-6.0</userOffsetY>
|
||||
<attached>Tire::WayPoint::1</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::AssociationName"
|
||||
sizeCalculated="true" type="associationName"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -973,19 +973,6 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>47.0</userOffsetX>
|
||||
<userOffsetY>9.0</userOffsetY>
|
||||
<attached>Tire::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::source::multiplicity"
|
||||
sizeCalculated="true" type="multiplicity"
|
||||
userDefined="false" visible="true">
|
||||
|
@ -1000,6 +987,19 @@
|
|||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
<edgeproperty id="Tire::source::rolename"
|
||||
sizeCalculated="true" type="rolename" userDefined="true" visible="true">
|
||||
<name>joueur</name>
|
||||
<strategy type="org.tzi.use.gui.views.diagrams.elements.positioning.StrategyRelativeToAttached">
|
||||
<userOffsetX>47.0</userOffsetX>
|
||||
<userOffsetY>9.0</userOffsetY>
|
||||
<attached>Tire::WayPoint::0</attached>
|
||||
<offset_x>8</offset_x>
|
||||
<offset_y>8</offset_y>
|
||||
<placement>TOP</placement>
|
||||
</strategy>
|
||||
<hidden>false</hidden>
|
||||
</edgeproperty>
|
||||
</properties>
|
||||
<waypoints>
|
||||
<edgeproperty id="Tire::WayPoint::0" sizeCalculated="true"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue