소스 검색

CompositeSprite UserData exposed to script

capnlove 11 년 전
부모
커밋
f7851e84ee
2개의 변경된 파일26개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      engine/source/2d/core/SpriteBatchItem.cc
  2. 14 0
      engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h

+ 12 - 0
engine/source/2d/core/SpriteBatchItem.cc

@@ -57,6 +57,7 @@ static StringTableEntry spriteImageFrameName        = StringTable->insert("Frame
 static StringTableEntry spriteNamedImageFrameName   = StringTable->insert("NamedFrame");
 static StringTableEntry spriteNamedImageFrameName   = StringTable->insert("NamedFrame");
 static StringTableEntry spriteAnimationName         = StringTable->insert("Animation");
 static StringTableEntry spriteAnimationName         = StringTable->insert("Animation");
 static StringTableEntry spriteDataObjectName        = StringTable->insert("DataObject");
 static StringTableEntry spriteDataObjectName        = StringTable->insert("DataObject");
+static StringTableEntry spriteUserDataName          = StringTable->insert("DataObject");
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 
 
@@ -433,6 +434,12 @@ void SpriteBatchItem::onTamlCustomWrite( TamlCustomNode* pParentNode )
     // Write data object.
     // Write data object.
     if ( getDataObject() != NULL )
     if ( getDataObject() != NULL )
         pSpriteNode->addNode( getDataObject() );
         pSpriteNode->addNode( getDataObject() );
+
+    if ( getUserData() != NULL)
+    {   
+        const char* UserDatastr = (const char*) getUserData();
+        pSpriteNode->addField( "UserData", UserDatastr );
+    }
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
@@ -581,6 +588,11 @@ void SpriteBatchItem::onTamlCustomRead( const TamlCustomNode* pSpriteNode )
 
 
             // Set logical position.
             // Set logical position.
             setLogicalPosition( LogicalPosition( pLogicalPositionArgs ) );
             setLogicalPosition( LogicalPosition( pLogicalPositionArgs ) );
+        }
+		else if ( fieldName == spriteUserDataName )
+        {
+            StringTableEntry UserDatastr = StringTable->insert(pSpriteField->getFieldValue());
+            setUserData((void *)UserDatastr);
         }
         }
     }
     }
 
 

+ 14 - 0
engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h

@@ -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.
 /*! 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)
     @param x/y The coordinate of the point as either (\x y\ or (x,y)
     @return Returns list of sprite Ids.
     @return Returns list of sprite Ids.