///////////////////////////////////////////////////////////////////////////////
/// @file deNetObject.hpp
///
/// @brief 
///
/// @author trajar
///
/// This file is the intellectual property of Novus Delta, LLC.. Usage of the
/// contents of this file is subject to the Destiny3D Member License which
/// can be found at http://www.destiny3d.com.  Any other usage is prohibited.
///
/// This file is distributed "AS IS" without warranty of any kind.  Novus
/// Delta, LLC. does not guarantee the fitness of the contents of this file
/// for any particular purpose.
///
/// Copyright (C) 2001-2003 Novus Delta, LLC. All Rights Reserved.
///
/// <hr>
///                                 Change History
/// <hr>
///
/// @date Jun 2002
/// @author trajar
/// @remarks Creation
///
///////////////////////////////////////////////////////////////////////////////

#ifndef	_DENETOBJECT_HPP
#define	_DENETOBJECT_HPP

#ifndef		_DENET_HPP
 #include	"deNet.hpp"
#endif

#ifndef		_DENETDATA_HPP
 #include	"deNetData.hpp"
#endif

/*
#ifndef		_THANDLE_H
 #include	"THandle.h"
#endif

class deNetObject;
typedef THandle<deNetObject>				hNetObject;
typedef THandleMgr<deNetObject, hNetObject>	hNetObjectMgr;
*/

//---------------------------------------------------------------------------
// deNetObject
//
// - a collection of deNetDataGroups, which is updated, predicted, etc.
//---------------------------------------------------------------------------
typedef class DENET_API deNetObject
{
public:

	enum NetObjectType
	{
		OBJ_UNKNOWN = -1,
		OBJ_PARENT,
		OBJ_CHILD
	};

	deNetObject(void)	: m_DataGroups(NULL) 			{ }
	~deNetObject(void);

	NetObjectType	GetNetObjectType(void)	const	{ return m_NetObjectType; }
//	hNetObject		GetHandle(void)			const	{ return m_Handle; }

private:

	NetObjectType		m_NetObjectType;
	//hNetObject			m_Handle;
	deNetDataGroup *	m_DataGroups;
	unsigned int		m_NumDataGroups;


} deNetObject, *pdeNetObject;

#endif