Advertisement

Script object reference in C++

Started by September 19, 2013 01:09 PM
5 comments, last by chewbakka 11 years, 2 months ago

Hi,

I'm writing a debugger for my project using AngelScript 2.27.1. I've registered a callback and able to extract the variables. I have a nice display showing the variables. For references I'd like to write if it is null or not.


for ( int varIx = 0; varIx < context->GetVarCount( level ); varIx++ )
  watch->Show( context->GetVarName( varIx, level )
             , context->GetVarTypeId( varIx, level )
             , context->GetAddressOfVar( varIx, level ) );

This way I enumerate the variables. In Show, I get the object type:


asIObjectType* objType = ScriptEngine::Instance().GetAsEngine()->GetObjectTypeById( typeId );

And then I have a TODO now smile.png


if ( objType->GetFlags() & asOBJ_REF )
{
  const asIScriptObject* object = (const asIScriptObject*)address;
  bool isValidRef = true; // TODO
  
  item->setText( 2, isValidRef ? "valid ref" : "null ref" );
}

I can cast the address of the property to an asIScriptObject, but I can't still determine if it is null reference or not. I've checked if the address pointer is maybe null, but it is not null even for null ref objects.

Is there a way to check if it is a null ref or not?

Thank you.

GetAddressOfVar() will return the address of the value in the variable. If the variable is a primitive type then the address will point to the value of the primitive, if the variable is a handle then the address will point to the handle, if the variable is local object (even if it is a ref type) then the address will point to the object.

You can use the typeId to know if the variable is a handle or not by checking for the bit asTYPEID_OBJHANDLE. If it is not a handle, then the variable will not be null.

I suggest you take a look at the CDebugger add-on in the SDK, particularly the ToString() and PrintValue() methods. It shows how to interpret the information you get about the variables.

Regards,

Andreas

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Advertisement

I wasn't aware of the Debugger addon. Thank you, checked it, and now I have a nice game editor with a full angelscript IDE. :) Like this:

[attachment=17951:editor.jpg]

Wow nice work! that looks amazingly useful. I'll have to look into that, maybe not a full blown GUI like that, but at least a Debug() function that could automatically output all the local variables to log file as best it can sure would beat hacking in output to console statements for each var I want to look at.

Lead Coder/Game Designer for Brutal Nature: http://BrutalNature.com

Thank you, I now have only one feature left before I'll release it to the public; Skinned animation.

This looks really nice indeed.

Do you have a site for your project that I can link to on the users list?

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Advertisement

It is http://brumisoft.com.

Thank you.

This topic is closed to new replies.

Advertisement