////////////////////////////////////////////////////////////////////// // // Crytek Source code // Copyright (c) Crytek 2001-2004 // ////////////////////////////////////////////////////////////////////// #ifndef SCRIPTOBJECTWEAPONCLASS_H__ #define SCRIPTOBJECTWEAPONCLASS_H__ #include #include #include <_ScriptableEx.h> class CWeaponClass; struct WeaponParams; class CScriptObjectFireParam : public _ScriptableEx { public: CScriptObjectFireParam(); virtual ~CScriptObjectFireParam(); bool Create(IScriptSystem *pScriptSystem,WeaponParams *p); static void InitializeTemplate(IScriptSystem *pSS); static void ReleaseTemplate(); private: WeaponParams *m_pWeaponParams; }; class CScriptObjectWeaponClass : public _ScriptableEx, public IScriptObjectSink { public: CScriptObjectWeaponClass(); virtual ~CScriptObjectWeaponClass(); bool Create(CXGame* pGame, CWeaponClass* pWeaponClass); //IScriptObjectSink void OnRelease() { m_pScriptThis->Clear(); m_pScriptThis=NULL; delete this; } static void InitializeTemplate(IScriptSystem *pSS); static void ReleaseTemplate(); int SetName(IFunctionHandler *pH); int SetShaderFloat(IFunctionHandler *pH); int SetBindBone(IFunctionHandler *pH); int SetAnimationKeyEvent(IFunctionHandler *pH); int StartAnimation(IFunctionHandler *pH); int ResetAnimation(IFunctionHandler *pH); int GetAnimationLength(IFunctionHandler *pH); int GetCurAnimation(IFunctionHandler *pH); int IsAnimationRunning(IFunctionHandler *pH); int GetPos(IFunctionHandler *pH); int GetBonePos(IFunctionHandler *pH); int GetInstantHit(IFunctionHandler *pH); int GetProjectileFiringAngle(IFunctionHandler *pH); int Hit(IFunctionHandler *pH); int SetFirstPersonWeaponPos(IFunctionHandler *pH); int SetHoldingType(IFunctionHandler *pH); int SetWeaponFireParams(IFunctionHandler *pH); int LoadObject(IFunctionHandler *pH); int AttachObjectToBone(IFunctionHandler *pH); int DetachObjectToBone(IFunctionHandler *pH); int CacheObject(IFunctionHandler *pH); int DrawScopeFlare(IFunctionHandler *pH); int CalcFlareIntensity(IFunctionHandler *pH); public: private: typedef std::vector FireParamsObjVec; typedef FireParamsObjVec::iterator FireParamsObjVecItor; static void GetDirection(IEntity *pEntity, Vec3& vDir); FireParamsObjVec m_vFireParams; static IScriptObject *m_pMemberBonePos; CWeaponClass* m_pWeaponClass; CXGame* m_pGame; ISystem* m_pSystem; }; #endif //SCRIPTOBJECTWEAPONCLASS_H__