Skip to content

Commit

Permalink
Merge pull request #221 from capnlove/UserData
Browse files Browse the repository at this point in the history
CompositeSprite UserData exposed to script
  • Loading branch information
lilligreen committed Jul 31, 2014
2 parents 7a1660d + 3e1ffb4 commit 78e8575
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
12 changes: 12 additions & 0 deletions engine/source/2d/core/SpriteBatchItem.cc
Expand Up @@ -57,6 +57,7 @@ static StringTableEntry spriteImageFrameName = StringTable->insert("Frame
static StringTableEntry spriteNamedImageFrameName = StringTable->insert("NamedFrame");
static StringTableEntry spriteAnimationName = StringTable->insert("Animation");
static StringTableEntry spriteDataObjectName = StringTable->insert("DataObject");
static StringTableEntry spriteUserDataName = StringTable->insert("UserData");

//------------------------------------------------------------------------------

Expand Down Expand Up @@ -433,6 +434,12 @@ void SpriteBatchItem::onTamlCustomWrite( TamlCustomNode* pParentNode )
// Write data object.
if ( getDataObject() != NULL )
pSpriteNode->addNode( getDataObject() );

if ( getUserData() != NULL)
{
const char* UserDatastr = (const char*) getUserData();
pSpriteNode->addField( "UserData", UserDatastr );
}
}

//------------------------------------------------------------------------------
Expand Down Expand Up @@ -582,6 +589,11 @@ void SpriteBatchItem::onTamlCustomRead( const TamlCustomNode* pSpriteNode )
// Set logical position.
setLogicalPosition( LogicalPosition( pLogicalPositionArgs ) );
}
else if ( fieldName == spriteUserDataName )
{
StringTableEntry UserDatastr = StringTable->insert(pSpriteField->getFieldValue());
setUserData((void *)UserDatastr);
}
}

// Fetch sprite children.
Expand Down
14 changes: 14 additions & 0 deletions engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h
Expand Up @@ -1050,6 +1050,20 @@ ConsoleMethodWithDocs(CompositeSprite, getSpriteId, ConsoleInt, 2, 2, ())

//-----------------------------------------------------------------------------

ConsoleMethodWithDocs(CompositeSprite, getSpriteUserData, ConsoleString, 2, 2, ())
{
const char* UserDatastr = (const char*) object->getUserData();
return UserDatastr;
}

//-----------------------------------------------------------------------------

ConsoleMethodWithDocs(CompositeSprite, setSpriteUserData, ConsoleVoid, 3, 3, (string))
{
StringTableEntry UserDatastr = StringTable->insert(argv[2]);
object->setUserData((void *)UserDatastr);
}

/*! Picks sprites intersecting the specified point with optional group/layer masks.
@param x/y The coordinate of the point as either (\x y\ or (x,y)
@return Returns list of sprite Ids.
Expand Down

0 comments on commit 78e8575

Please sign in to comment.