/* /////////////////////////////////////////////////////////////////////////////////////////////////// // Description : WPObj.hpp // // Definition of the Light editors objects // /////////////////////////////////////////////////////////////////////////////////////////////////// // inherit from : CPA_Object // CPA_EdMot /////////////////////////////////////////////////////////////////////////////////////////////////// // Creation date: 11 feb 1997 Author: J Thénoz /////////////////////////////////////////////////////////////////////////////////////////////////// // Modification date: Author: // // // // /////////////////////////////////////////////////////////////////////////////////////////////////// */ #ifndef __WPOBJECT_HPP__ #define __WPOBJECT_HPP__ //---------------------------------------------------------------------- // Definition of the name of the models static CString csSpotModelName = "Spot"; static CString csSphericalModelName = "Spherical"; static CString csParallelModelName = "Parallel"; static CString csAmbientModelName = "Ambient"; //CHINA WFQ (MT) 16/02/98 { static CString csParallelBoxModelName = "ParallelBox"; //ENDCHINA WFQ } //ROMTEAM Z_Light Ionut Grozea 01-05-1998 static CString csZModelName = "Z_Light"; //ENDROMTEAM Z_Light Ionut Grozea 01-05-1998 //ANNECY jt { static CString csFogModelName = "Fog"; //ENDANNECY jt } //---------------------------------------------------------------------- class DiaLight; class Light_Interface; class Light : public CPA_SaveObject, public CPA_EdMot { protected: static Light_Interface* ms_poInterface; static DiaLight* ms_poDiaLight; // dialog static BOOL ms_bNotifyHeader; // header of this file is already notify static BOOL ms_bStopNotification; // Stop notification static CPA_List ms_oListOfSectionObject;// List of all the sector sections BOOL m_b3DsMaxLight; // light created with 3DsMax BOOL m_bLightOn; // The light is on ? BOOL m_bModify; // the light has been changed since last load CPA_SuperObject* m_poSuperObject; // Super Object CPA_SectionObject* m_poMatrixSection; CPA_List m_oSectorList; // list of affected sectors CPA_List m_oListOfSectorSection; // list of sector SectionObject float m_fIntensity; // light intensity ( 0-10 ) long m_lType; // type of the light //ROMTEAM BlendRLI (Ionut Grozea 24/02/98) long m_lIsTypePaint; // is type of the light Paint //ENDROMTEAM BlendRLI (Ionut Grozea) public: CPA_SuperObject* m_poNearSuperObject; // near edit objetct CPA_SuperObject* m_poFarSuperObject; // far edit object //CHINA WFQ (MT) 16/02/98 { CPA_SuperObject* m_poInterSuperObject; CPA_SuperObject* m_poExterSuperObject; //ENDCHINA WFQ } BOOL m_bSelect; // Is this light selected ? //--- static static void fn_vInitObject (void); static void fn_vSetDialog ( DiaLight* poDiaLight, Light_Interface* pInterface ); static DiaLight* fn_pGetDialog ( void ) { return ms_poDiaLight; } static void fn_vSetNotifyHeader (BOOL bNotifyHeader) { ms_bNotifyHeader=bNotifyHeader; } static void fn_vStopNotification (BOOL bStopNotification) { ms_bStopNotification = bStopNotification; } static Light_Interface* GetInterface (void) { return ms_poInterface; } static void fn_vInitListOfSectionObject (void); static void fn_vFreeListOfSectionObject (void); static CPA_SectionObject* fn_poFindSectionObject ( CPA_SuperObject* poSector ); static void fn_vUpdateSectorSection (void); // load save static SCRIPT_tdeReturnValue CallBackLoad (FILE *p_fFile, char *szAction, char *szParams[], SCRIPT_tdeAction cType); static void fn_vCallbackHeader ( SCR_tdst_File_Description *_p_stFile, char *_p_szSectionName, void *_p_vData,SCR_tde_Ntfy_Action _eAction ); static void fn_vCallbackSave ( SCR_tdst_File_Description *_p_stFile, char *_p_szSectionName, void *_p_vData,SCR_tde_Ntfy_Action _eAction ); static void fn_vCallBackSaveSector ( SCR_tdst_File_Description *_p_stFile, char *_p_szSectionName, void *_p_vData,SCR_tde_Ntfy_Action _eAction ); static void fn_vCallbackSaveMatrix ( SCR_tdst_File_Description *_p_stFile, char *_p_szSectionName, void *_p_vData,SCR_tde_Ntfy_Action _eAction ); Light(CPA_MainWorld *p_oMainWorld, CPA_ObjectDLLBase *p_oDLL, CString csFileName ); Light(CPA_MainWorld *p_oMainWorld, CPA_ObjectDLLBase *p_oDLL, GLI_tdxHandleToLight hEngineLight, CString csName, CString csFileName, CString csSectionName ); Light( Light& rLight); ~Light(); //--- data long GetDataType (void); void* GetData (void); //--- get long fn_lGetType (void) { return m_lType; } CPA_List* fn_pGetSectorList ( void ) { return &m_oSectorList; } BOOL fn_vAddSector ( CPA_SuperObject* poObject ); BOOL fn_bIsAffectedSector ( CPA_SuperObject* poSuperSector ) { return m_oSectorList.Find(poSuperSector)!=NULL; } CPA_SuperObject* GetSuperObject (void) { return m_poSuperObject; } CPA_SectionObject* GetMatrixSection (void) { return m_poMatrixSection; } BOOL fn_bIs3DsMaxLight (void) { return m_b3DsMaxLight; } BOOL fn_bIsLightOn (void) { return m_bLightOn; } BOOL fn_bIsModify (void) { return m_bModify; } //--- set void SetSuperObject ( CPA_SuperObject* poSuperObject ) { m_poSuperObject = poSuperObject; } void Set3DsMaxLight (BOOL b3DsMaxLight) { m_b3DsMaxLight=b3DsMaxLight; } void fn_vSetLightOn (BOOL bOn) { m_bLightOn=bOn; } void fn_vSetModify ( BOOL bModify ) { m_bModify=bModify; } //--- Save notify void fn_vUpDateSectorSection (void); void fn_vNotifySave (void); void fn_vNotifyUnSave (void); void fn_vNotifyRestore (void); void fn_vNotifyRename (void); void fn_vUpdateReference (CPA_SaveObject *pReferencedObject); //--- color -> control edit manager void fn_vSetColor ( GEO_tdxColorValue xR, GEO_tdxColorValue xG, GEO_tdxColorValue xB, GEO_tdxColorValue xA ); void fn_vGetColor ( GEO_tdxColorValue* xR, GEO_tdxColorValue* xG, GEO_tdxColorValue* xB, GEO_tdxColorValue* xA ); //--- intensity void fn_vSetIntensity ( float fIntensity ) { m_fIntensity = fIntensity; } float fn_fGetIntensity (void) { return m_fIntensity; } //--- intensity -> control edit manager void fn_vSetLightIntensity ( float& fIntensity ); //--- alpha / near-far -> control edit manager void fn_vSetLightAlpha ( MTH_tdxReal& xLittleAlpha, MTH_tdxReal& xBigAlpha ); void fn_vSetLightNearFar ( MTH_tdxReal& xNear, MTH_tdxReal& xFar ); //CHINA WFQ (MT) 16/02/98 { void fn_vSetLight_Intensity_Min_Max ( MTH_tdxReal& xIntensity_Min, MTH_tdxReal& xIntensity_Max ); void fn_vSetLight_Inter_Min_Pos ( MTH3D_tdstVector& xInter_Min_Pos); void fn_vSetLight_Inter_Max_Pos ( MTH3D_tdstVector& xInter_Max_Pos); void fn_vSetLight_Exter_Min_Pos ( MTH3D_tdstVector& xExter_Min_Pos); void fn_vSetLight_Exter_Max_Pos ( MTH3D_tdstVector& xExter_Max_Pos); //ENDCHINA WFQ } //--- change radius of lights void fn_vSetMouseControl (MTH3D_tdstVector* pstTranslation, BOOL bModifNearRadius, BOOL bModifFarRadius ); //--- On/Off void fn_vSetOnOff (BOOL bState); BOOL fn_bGetOnOff (void); //ROMTEAM BlendRLI (Ionut Grozea 24/02/98) BOOL fn_bIsPaint(void); BOOL fn_bIsAlphaLight(void); BOOL fn_bIsNoAlphaLight(void); void fn_vSetTypePaint(); void fn_vSetLightForAlpha(); void fn_vSetTypeNormal(); //ENDROMTEAM BlendRLI (Ionut Grozea) //ROMTEAM color lights Ionut Grozea 10-08-1998 void SetMultiColor(); void Set2Colors(); //ENDROMTEAM color lights Ionut Grozea 10-08-1998 //--- On decor void fn_vSetOnDecor (BOOL bState); BOOL fn_bGetOnDecor (void); //---- selection of light void fn_vSelect (void); void fn_vUnSelect (BOOL bDraw=TRUE); //--- draw edit objects void fn_vDrawEditObject (void); //--- light move void fn_vOrientLight ( MTH3D_tdstVector* pstVertex ); //--- Paint sectors void fn_vPaintSector (BOOL bColor=TRUE); //--- Compute sectors ACP_tdxBool fn_bSphericalLightAffectSector(HIE_tdxHandleToSuperObject hSuperSector); void fn_vComputeSector (void); void fn_vComputeSector ( MTH3D_tdstVector* pstVertex ); //--- Update light from .lg2 file void fn_vUpdateLight (BOOL bComputeRLI=TRUE,BOOL bUpdateScreen=TRUE); void *GetEngineStruct() { return GetStruct(); }; //------------------------------- compute motor object void fn_vSetEngineMatrix (BOOL bDraw=TRUE); //--- Referenced light ? BOOL fn_bReferenced (void) { return m_oSectorList.GetCount()>0; } protected : void fn_vSetNearFar ( MTH_tdxReal xNear, MTH_tdxReal xFar ); // color a sector void fn_vColorSector ( CPA_SuperObject* poSuperSector, tdeLocalColor eColor ); // Is pSector see pIsVisibleSector ? BOOL fn_bIsSectorVisible ( CPA_SuperObject *pSector, CPA_SuperObject *pIsVisibleSector); // Check if engine sector limit BOOL fn_bCheckEngineLimit (CPA_SuperObject* poSuperObject); }; extern CPA_List g_ListLight; #endif //__OBJECT_HPP__