OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-tps_demo / game / maps / map_core.gd

58 lines · gd ref:
extends Spatial

onready var playerSpawnNodes : Node = find_node("PlayerSpawnNodes")

export(String) var map_name : String = ""

func _ready():
	randomize()
	addGrapplingHookCollisionMaskToMap()

func _process(_delta):
	pass
	
func getSpawnLocation() -> Vector3:
	var childCount : int = playerSpawnNodes.get_child_count()
	var spawnNode : Spatial = playerSpawnNodes.get_child( randi() % childCount )
	return spawnNode.global_transform.origin
	
func getInstanceOfMapWorldEnvironmentScene():
	var path = "res://assets/maps/" + map_name + "/" + map_name + "_environment.scn"
	var worldEnvironment = load(path)
	return worldEnvironment
	
func updateMapWorldEnvironmentScene():
	# First check to see if we need to delete any existing World Environments
	get_tree().get_current_scene().PurgeAllWorldEnvironmentNodes()
		
	# Spawn in new World Environment
	var worldEnvironment = getInstanceOfMapWorldEnvironmentScene()
	if(worldEnvironment != null):
		add_child(worldEnvironment.instance())

func addGrapplingHookCollisionMaskToMap():
	var _name = self.name
	# var currentMap : Node = get_tree().get_current_scene().get_node("Maps").find_node(_name, true, false)
	# var assetMap : Spatial = currentMap.find_node("asset_" + currentMap.name)
	checkAndSetChildrenGrapplingHookMask(self, 0)
				
func checkAndSetChildrenGrapplingHookMask(var _Node, indentLevel : int):
	var _strIndents : String = ""
	for _i in range(indentLevel):
		_strIndents += "\t"
		
	if(_Node is StaticBody):
		_Node.collision_layer += 2
		
	var childCount = _Node.get_child_count()
	for i in range(childCount):
		checkAndSetChildrenGrapplingHookMask(_Node.get_child(i), indentLevel + 1)


func _on_Area_body_entered(body, map_name):
	if(body is KinematicBody):
		var mapNode = get_tree().get_current_scene().find_node(map_name, true, false)
		body.currentMap = mapNode
		body.playerWantsNewWorldEnvironment = true