#ifndef	_PHYSICS_SHELL_HOLDER_EDITOR_BASE_
#define	_PHYSICS_SHELL_HOLDER_EDITOR_BASE_

#include "../../../xrphysics/iphysicsshellholder.h"

class ECORE_API CPhysicsShellHolderEditorBase: public IPhysicsShellHolder
{
public:
	void								CreatePhysicsShell	( Fmatrix*	obj_xform );
    void								DeletePhysicsShell	();
    void								UpdateObjectXform	( Fmatrix &obj_xform );
    void								ApplyDragForce		( const Fvector &force );
protected:
	CPhysicsShellHolderEditorBase(): m_physics_shell(0),m_object_xform(Fidentity){}
	~CPhysicsShellHolderEditorBase()	{ /*DeletePhysicsShell	();*/ }
protected:
	CPhysicsShell*						m_physics_shell;
    Fmatrix								m_object_xform;
private:
  	virtual	LPCSTR						_BCL	ObjectName							()		const	 { return "EditorActor"; }
	virtual	LPCSTR						_BCL	ObjectNameVisual					()		const	 { return "unknown"; }
	virtual	LPCSTR						_BCL	ObjectNameSect						()		const	 { return "unknown"; }
	virtual	bool						_BCL	ObjectGetDestroy					()		const	 { return false; };
	virtual ICollisionHitCallback*		_BCL	ObjectGetCollisionHitCallback		()				 { return 0;}
	virtual	u16							_BCL	ObjectID							()		const	 { return u16(-1);}
	virtual	ICollisionForm*				_BCL	ObjectCollisionModel				()				 { VERIFY(false);return 0; }
//	virtual	IRenderVisual*				_BCL	ObjectVisual						()				 { return m_pVisual;}
	virtual IDamageSource*				_BCL	ObjectCastIDamageSource				()				 { return 0; }
	virtual	void						_BCL	ObjectProcessingDeactivate			()				 {;}
	virtual	void						_BCL	ObjectProcessingActivate			()				 {}
	virtual	void						_BCL	ObjectSpatialMove					()				 {}
    virtual	CPhysicsShell*&				_BCL	ObjectPPhysicsShell					()				 { return m_physics_shell; }
	virtual	void						_BCL	enable_notificate					()				 {}
	virtual bool						_BCL	has_parent_object					()				 { return false; }
	virtual	void						_BCL	on_physics_disable					()				 {}
	virtual	IPHCapture*					_BCL	PHCapture							()				 { return 0;}
	virtual	bool						_BCL	IsInventoryItem						()				 { return false; }
	virtual	bool						_BCL	IsActor								()				 { return false; }
 	virtual bool						_BCL	IsStalker							()				 { return false; }
	//virtual	void						SetWeaponHideState					( u16 State, bool bSet )=0;
	virtual	void						_BCL	HideAllWeapons						( bool v )		 {}//(SetWeaponHideState(INV_STATE_BLOCK_ALL,true))
	virtual	void						_BCL	MovementCollisionEnable				( bool enable )	 {}
	virtual CPHSoundPlayer*				_BCL	ObjectPhSoundPlayer				()  			 	 { return 0; }
	virtual	ICollisionDamageReceiver* 	_BCL	ObjectPhCollisionDamageReceiver	()				 	 { return 0; }
	virtual	void					 	_BCL	BonceDamagerCallback			( float &damage_factor ){}
public:
    virtual	Fmatrix&					_BCL	ObjectXFORM				()														{  return m_object_xform;}
private:
    virtual	Fvector&					_BCL	ObjectPosition			()														{  return m_object_xform.c;}

#ifdef	DEBUG
	virtual	std::string					_BCL	dump							( EDumpType type )const  { VERIFY(false); return std::string("ActorEditor!");}
#endif
};



#endif
 