diff --git a/src/debugger/godot3/server_controller.ts b/src/debugger/godot3/server_controller.ts index c57fccdd..b19d19a5 100644 --- a/src/debugger/godot3/server_controller.ts +++ b/src/debugger/godot3/server_controller.ts @@ -375,10 +375,15 @@ export class ServerController { break; } case "message:inspect_object": { - const id = BigInt(command.parameters[0]); + let id = BigInt(command.parameters[0]); const className: string = command.parameters[1]; const properties: any[] = command.parameters[2]; + // message:inspect_object returns the id as an unsigned 64 bit integer, but it is decoded as a signed 64 bit integer, + // thus we need to convert it to its equivalent unsigned value here. + if(id < 0) + id = id + BigInt(2) ** BigInt(64); + const rawObject = new RawObject(className); properties.forEach((prop) => { rawObject.set(prop[0], prop[5]); diff --git a/src/debugger/godot4/server_controller.ts b/src/debugger/godot4/server_controller.ts index 737048da..ee138cf8 100644 --- a/src/debugger/godot4/server_controller.ts +++ b/src/debugger/godot4/server_controller.ts @@ -374,10 +374,15 @@ export class ServerController { break; } case "scene:inspect_object": { - const id = BigInt(command.parameters[0]); + let id = BigInt(command.parameters[0]); const className: string = command.parameters[1]; const properties: any[] = command.parameters[2]; + // message:inspect_object returns the id as an unsigned 64 bit integer, but it is decoded as a signed 64 bit integer, + // thus we need to convert it to its equivalent unsigned value here. + if(id < 0) + id = id + BigInt(2) ** BigInt(64); + const rawObject = new RawObject(className); properties.forEach((prop) => { rawObject.set(prop[0], prop[5]);