/*=========================================================================

	EXPUPROP.CPP

	Author:  Dave
	Created:
	Project:
	Purpose:

	Copyright (c) 1998 Climax Development Ltd

===========================================================================*/

/*----------------------------------------------------------------------
	Includes
	-------- */

#include "AsciiExp.h"


/*	Std Lib
	------- */

/*	Glib
	---- */

/*	Local
	----- */

/*	Graphics
	-------- */

/*----------------------------------------------------------------------
	Tyepdefs && Defines
	------------------- */

/*----------------------------------------------------------------------
	Structure defintions
	-------------------- */

/*----------------------------------------------------------------------
	Positional Vars
	--------------- */

/*----------------------------------------------------------------------
	Function Prototypes
	------------------- */

/*----------------------------------------------------------------------
	Vars
	---- */

/*----------------------------------------------------------------------
	Data
	---- */

/*----------------------------------------------------------------------
	Function:	
	Purpose:
	Params:
	Returns:
  ---------------------------------------------------------------------- */
const char	UPROP_ID[]			=	MAKE_LONG( 'P', 'R', 'O', 'P' );

/*----------------------------------------------------------------------
	Function:	
	Purpose:
	Params:
	Returns:
  ---------------------------------------------------------------------- */
void AsciiExp::ExportProp( INode* node )
{
ObjectState	os;
Object *	obj;
TSTR		UPBuffer;
Uint32		Len;
Uint32		ModNum=nCurNode;
char		*TxtPtr;

	os = node->EvalWorldState( ip->GetAnimRange().Start() );
	obj = node->EvalWorldState( ip->GetAnimRange().Start() ).obj;

	if (!os.obj)				return;
//	if (!obj->IsRenderable())	return;
	if (node->IsNodeHidden())	return;
//	if (!obj || os.obj->SuperClassID() != GEOMOBJECT_CLASS_ID)	return; // Safety net. This shouldn't happen.

	node->GetUserPropBuffer(UPBuffer);
	Len=UPBuffer.Length();//strlen(UPBuffer);
	Len=(Len+3)&0xfffc;
	TxtPtr=UPBuffer.data();
	WriteChunkHdr( (char*)UPROP_ID, 0 );
	fwrite( &ModNum, sizeof(Uint32), 1, expStream );
	fwrite( &Len, sizeof(Uint32), 1, expStream );
	fwrite( TxtPtr, sizeof(char), Len, expStream );
}