mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
42 lines
1.3 KiB
GDScript
42 lines
1.3 KiB
GDScript
class_name TbManager
|
|
extends Node
|
|
|
|
# Common inverse scale. Calculated as 1.0 / Inverse Scale Factor.
|
|
# Used to help translate properties using Quake Units into Godot Units.
|
|
const INVERSE_SCALE: float = 0.03125
|
|
|
|
enum {
|
|
WORLD_LAYER = (1 << 0),
|
|
ACTOR_LAYER = (1 << 1),
|
|
TRIGGER_LAYER = (1 << 2)
|
|
}
|
|
|
|
func use_targets(activator: Node, target: String) -> void:
|
|
# Targetnames are really Godot Groups, so we can have multiple entities
|
|
# share a common "targetname" in Trenchbroom.
|
|
var target_list: Array[Node] = get_tree().get_nodes_in_group(target)
|
|
for targ in target_list:
|
|
var f: String
|
|
# Be careful when specifying a function since we can't pass arguments
|
|
# to it (without hackarounds of course)
|
|
if 'targetfunc' in activator:
|
|
f = activator.targetfunc
|
|
if f.is_empty():
|
|
f = "use"
|
|
if targ.has_method(f):
|
|
targ.call(f)
|
|
|
|
func set_targetname(node: Node, targetname: String) -> void:
|
|
if node != null and not targetname.is_empty():
|
|
node.add_to_group(targetname)
|
|
|
|
# Converts Quake 1 axis to Godot axis
|
|
static func id_vec_to_godot_vec(vec: Variant)->Vector3:
|
|
var org: Vector3 = Vector3.ZERO
|
|
if vec is Vector3:
|
|
org = vec
|
|
elif vec is String:
|
|
var arr: PackedFloat64Array = (vec as String).split_floats(" ")
|
|
for i in max(arr.size(), 3):
|
|
org[i] = arr[i]
|
|
return Vector3(org.y, org.z, org.x)
|