Advertisement
PlanetKiller

Godot AStar Path Point Connector

Mar 1st, 2018
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.92 KB | None | 0 0
  1. extends Spatial
  2.  
  3. # class member variables go here, for example:
  4. # var a = 2
  5. # var b = "textvar"
  6. var as
  7.  
  8. func startup():
  9.     as = MinorData.get_star()
  10.     pass
  11.    
  12. func setup_paths():
  13.     #get_global_transform().basis()
  14.     var navPoints = get_tree().get_nodes_in_group("Starnav")
  15.     var connectPoints = get_tree().get_nodes_in_group("Connector")
  16.     var par
  17.     for i in navPoints:
  18.         var iGlobal = i.get_global_transform().origin
  19.         var iName = i.get_name()
  20.         var curve = i.get_curve()
  21.         var points = curve.get_point_count()
  22.         for i in range(points):
  23.             var pNum = str(i)
  24.             var pointPos = curve.get_point_position(i)
  25.             var pointGlobal = iGlobal+pointPos
  26.             var navPointName = iName+pNum
  27.             as.add_point(int(navPointName), pointGlobal)
  28.            
  29.     for i in navPoints:
  30.         var parent = i.get_parent()
  31.         var iName = i.get_name()
  32.         var curve = i.get_curve()
  33.         var points = curve.get_point_count()
  34.         for i in range(points):
  35.             if(i > 0):
  36.                 var pNum1 = str(i)
  37.                 var pNum2 = str(i-1)
  38.                 var navPointName1 = iName+pNum1
  39.                 var navPointName2 = iName+pNum2
  40.                 as.connect_points(int(navPointName1), int(navPointName2), true)
  41.                
  42.         if(parent.is_in_group("Starnav")):
  43.             var parCurve = parent.get_curve()
  44.             var parPoints = parCurve.get_point_count()
  45.             var parName = parent.get_name()
  46.             var parNum = str(parPoints-1)
  47.             var parPointName = parName+parNum
  48.             var ownPointName = iName+str(0)
  49.             as.connect_points(int(parPointName), int(ownPointName), true)
  50.            
  51.            
  52.         if (i.is_in_group("Loopback")):
  53.             # child's last to parent's first
  54.             var parName = parent.get_name()
  55.             var parCurve = parent.get_curve()
  56.             var parPoints = parCurve.get_point_count()
  57.             var parNum = str(0)
  58.             var parPointName = parName+parNum
  59.             var ownPointName = iName+str(points-1)
  60.             as.connect_points(int(parPointName), int(ownPointName), true)
  61.            
  62.            
  63.     for i in connectPoints:
  64.         var parent = i.get_parent()
  65.         var family = get_children()
  66.         if(parent.is_in_group("Starnav")):
  67.             for i in range(family):
  68.                 if(i.is_in_group("Starnav")):
  69.                     var iName = i.get_name()
  70.                     var curve = i.get_curve()
  71.                     var points = curve.get_point_count()
  72.                     var parName = parent.get_name()
  73.                     var parCurve = parent.get_curve()
  74.                     var parPoints = parCurve.get_point_count()
  75.                     var parNum = str(parPoints-1)
  76.                     var parPointName = parName+parNum
  77.                     var ownPointName = iName+str(0)
  78.                     as.connect_points(int(parPointName), int(ownPointName), true)
  79.            
  80.     pass
  81.    
  82. func test_points():
  83.     print("navPoints: ",as.get_points())
  84.     print("10000010 ", as.get_point_position(1000010))
  85.     print("conn test: ", as.are_points_connected(1000010, 1000011))
  86.     #print(MinorData.get_star().get_closest_point(Vector3(0,0,0)))
  87.     pass
  88.  
  89. func _ready():
  90.     startup()
  91.     setup_paths()
  92.     #test_points()
  93.     # Called every time the node is added to the scene.
  94.     # Initialization here
  95.     pass
  96.  
  97. #func _process(delta):
  98. #   # Called every frame. Delta is time since last frame.
  99. #   # Update game logic here.
  100. #   pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement