class_name ServerProcess ## Manages the Rust simulation server as a subprocess (D-020). var _pid: int = -1 ## Start the server process. Returns the PID, or -1 on failure. func start(server_path: String, args: Array = []) -> int: if _pid > 0 and is_alive(): push_warning("ServerProcess: server already running (pid %d)" % _pid) return _pid _pid = OS.create_process(server_path, args) if _pid <= 0: push_error("ServerProcess: failed to start server at %s" % server_path) return _pid ## Check if the server process is still running. func is_alive() -> bool: if _pid <= 0: return false return OS.is_process_running(_pid) ## Stop the server process. func stop() -> void: if _pid > 0 and is_alive(): OS.kill(_pid) _pid = -1 ## Get the server PID (-1 if not started). func get_pid() -> int: return _pid ## Clean up on destruction — kill the server if still running. func _notification(what: int) -> void: if what == NOTIFICATION_PREDELETE: stop()