123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- {
- "types": {
- "Car": [
- {
- "name": "name",
- "type": "string",
- "default": "Car1"
- },
- {
- "name": "position",
- "type": "list<int>",
- "default": [
- 0,
- 0
- ]
- }
- ],
- "UnitTrack": [
- {
- "name": "position",
- "type": "list<int>",
- "default": [
- 0,
- 0
- ]
- }
- ],
- "Positionable": [
- {
- "name": "position",
- "type": "list<int>",
- "default": [
- 0,
- 0
- ]
- }
- ],
- "next": [],
- "onTrack": []
- },
- "constraints": [
- {
- "name": "noAbstractInstances",
- "event": "pre-create",
- "code": "false",
- "targetType": "Positionable"
- }
- ],
- "actions": [
- {
- "name": "snapToTarget",
- "event": "post-connect",
- "code": "/*newline*/var neighborLinks = getNeighbors('>'),/*newline*/ neighborLink = neighborLinks[neighborLinks.length-1];/*newline*/if( neighborLink )/*newline*/{/*newline*/ if( getAttr('$type', neighborLink).match(/next/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ npos = getAttr('position',neighbor);/*newline*/ setAttr('position', [npos[0] - 75, npos[1]]);/*newline*/ }/*newline*/ else if( getAttr('$type', neighborLink).match(/onTrack/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ gpos = getAttr('position');/*newline*/ setAttr('position', [gpos[0] + 10, gpos[1] + 35], neighbor);/*newline*/ }/*newline*/ else/*newline*/ {/*newline*/ print('Invalid link');/*newline*/ }/*newline*/}",
- "targetType": "Car"
- },
- {
- "name": "snapToTarget",
- "event": "post-connect",
- "code": "/*newline*/var neighborLinks = getNeighbors('>'),/*newline*/ neighborLink = neighborLinks[neighborLinks.length-1];/*newline*/if( neighborLink )/*newline*/{/*newline*/ if( getAttr('$type', neighborLink).match(/next/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ npos = getAttr('position',neighbor);/*newline*/ setAttr('position', [npos[0] - 75, npos[1]]);/*newline*/ }/*newline*/ else if( getAttr('$type', neighborLink).match(/onTrack/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ gpos = getAttr('position');/*newline*/ setAttr('position', [gpos[0] + 10, gpos[1] + 35], neighbor);/*newline*/ }/*newline*/ else/*newline*/ {/*newline*/ print('Invalid link');/*newline*/ }/*newline*/}",
- "targetType": "UnitTrack"
- },
- {
- "name": "snapToTarget",
- "event": "post-connect",
- "code": "/*newline*/var neighborLinks = getNeighbors('>'),/*newline*/ neighborLink = neighborLinks[neighborLinks.length-1];/*newline*/if( neighborLink )/*newline*/{/*newline*/ if( getAttr('$type', neighborLink).match(/next/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ npos = getAttr('position',neighbor);/*newline*/ setAttr('position', [npos[0] - 75, npos[1]]);/*newline*/ }/*newline*/ else if( getAttr('$type', neighborLink).match(/onTrack/) )/*newline*/ {/*newline*/ var neighbor = getNeighbors('>','*',neighborLink)[0],/*newline*/ gpos = getAttr('position');/*newline*/ setAttr('position', [gpos[0] + 10, gpos[1] + 35], neighbor);/*newline*/ }/*newline*/ else/*newline*/ {/*newline*/ print('Invalid link');/*newline*/ }/*newline*/}",
- "targetType": "Positionable"
- }
- ],
- "cardinalities": {
- "Car": [
- {
- "dir": "in",
- "type": "onTrack",
- "min": "0",
- "max": "Infinity"
- }
- ],
- "UnitTrack": [
- {
- "dir": "out",
- "type": "next",
- "min": "0",
- "max": "Infinity"
- },
- {
- "dir": "in",
- "type": "next",
- "min": "0",
- "max": "Infinity"
- },
- {
- "dir": "out",
- "type": "onTrack",
- "min": "0",
- "max": "Infinity"
- }
- ],
- "Positionable": [],
- "next": [
- {
- "dir": "in",
- "type": "UnitTrack",
- "min": "0",
- "max": "1"
- },
- {
- "dir": "out",
- "type": "UnitTrack",
- "min": "0",
- "max": "1"
- }
- ],
- "onTrack": [
- {
- "dir": "in",
- "type": "UnitTrack",
- "min": "0",
- "max": "1"
- },
- {
- "dir": "out",
- "type": "Car",
- "min": "0",
- "max": "1"
- }
- ]
- },
- "legalConnections": {
- "UnitTrack": {
- "UnitTrack": [
- "next"
- ],
- "Car": [
- "onTrack"
- ]
- }
- },
- "connectorTypes": {
- "next": "visual",
- "onTrack": "containment"
- },
- "types2parentTypes": {
- "Car": [
- "Positionable"
- ],
- "UnitTrack": [
- "Positionable"
- ],
- "Positionable": [],
- "next": [],
- "onTrack": []
- }
- }
|