Merge default

This commit is contained in:
dfighter1985 2014-08-07 00:03:09 +02:00
commit 04095561cb
35 changed files with 389 additions and 303 deletions

View file

@ -2,7 +2,7 @@
# #
# NeL # NeL
# Authors: Nevrax and the NeL Community # Authors: Nevrax and the NeL Community
# Version: 0.9.0 # Version: 0.9.1
# #
# Notes: # Notes:
# * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path # * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path
@ -48,7 +48,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(RyzomCore CXX C) PROJECT(RyzomCore CXX C)
SET(NL_VERSION_MAJOR 0) SET(NL_VERSION_MAJOR 0)
SET(NL_VERSION_MINOR 9) SET(NL_VERSION_MINOR 9)
SET(NL_VERSION_PATCH 0) SET(NL_VERSION_PATCH 1)
SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}") SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}")
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------

View file

@ -1178,9 +1178,6 @@ private:
CPSMultiMap<uint32, CPSLocatedBindable *>::M TLBMap; CPSMultiMap<uint32, CPSLocatedBindable *>::M TLBMap;
TLBMap _LBMap; TLBMap _LBMap;
float _AutoLODStartDistPercent;
uint8 _AutoLODDegradationExponent;
CPSAttribMaker<NLMISC::CRGBA> *_ColorAttenuationScheme; CPSAttribMaker<NLMISC::CRGBA> *_ColorAttenuationScheme;
NLMISC::CRGBA _GlobalColor; NLMISC::CRGBA _GlobalColor;
NLMISC::CRGBA _GlobalColorLighted; NLMISC::CRGBA _GlobalColorLighted;
@ -1206,6 +1203,11 @@ private:
bool _HiddenAtCurrentFrame : 1; bool _HiddenAtCurrentFrame : 1;
bool _HiddenAtPreviousFrame : 1; bool _HiddenAtPreviousFrame : 1;
// The two following members have been moved after the bitfield to workaround a MSVC 64-bit compiler bug (fixed in VS2013)
// For more info, see: http://connect.microsoft.com/VisualStudio/feedback/details/777184/c-compiler-bug-vtable-pointer-put-at-wrong-offset-in-64-bit-mode
float _AutoLODStartDistPercent;
uint8 _AutoLODDegradationExponent;
static bool _SerialIdentifiers; static bool _SerialIdentifiers;
static bool _ForceDisplayBBox; static bool _ForceDisplayBBox;

View file

@ -178,6 +178,9 @@ private:
// Error message // Error message
std::string _ErrorString; std::string _ErrorString;
// System dependant structure for locale
void* _Locale;
}; };

View file

@ -2803,9 +2803,13 @@ IOcclusionQuery::TOcclusionType COcclusionQueryGL::getOcclusionType()
else else
{ {
GLuint result; GLuint result;
nglGetQueryObjectuivARB(ID, GL_QUERY_RESULT, &result); nglGetQueryObjectuivARB(ID, GL_QUERY_RESULT_AVAILABLE, &result);
OcclusionType = result != 0 ? NotOccluded : Occluded; if (result != GL_FALSE)
VisibleCount = (uint) result; {
nglGetQueryObjectuivARB(ID, GL_QUERY_RESULT, &result);
OcclusionType = result != 0 ? NotOccluded : Occluded;
VisibleCount = (uint) result;
}
} }
} }
#endif #endif

View file

@ -94,7 +94,7 @@ const char *CProgramIndex::Names[NUM_UNIFORMS] =
void IProgram::buildInfo(CSource *source) void IProgram::buildInfo(CSource *source)
{ {
nlassert(!m_Source); // nlassert(!m_Source); // VALID: When deleting driver and creating new one.
m_Source = source; m_Source = source;

View file

@ -753,7 +753,13 @@ bool CInstanceGroup::addToSceneWhenAllShapesLoaded (CScene& scene, IDriver *driv
{ {
_Instances[i]->clipUnlinkFromAll(); _Instances[i]->clipUnlinkFromAll();
for (j = 0; j < _InstancesInfos[i].Clusters.size(); ++j) for (j = 0; j < _InstancesInfos[i].Clusters.size(); ++j)
_ClusterInstances[_InstancesInfos[i].Clusters[j]]->clipAddChild( _Instances[i] ); {
uint32 clusterInst = _InstancesInfos[i].Clusters[j];
if (clusterInst < _ClusterInstances.size())
_ClusterInstances[clusterInst]->clipAddChild( _Instances[i] );
else
nlwarning("IG: BUG: Cluster infos size %u, indexing %u", (uint32)_ClusterInstances.size(), clusterInst);
}
// For the first time we have to set all the instances to NOT move (and not be rebinded) // For the first time we have to set all the instances to NOT move (and not be rebinded)
_Instances[i]->freeze(); _Instances[i]->freeze();
_Instances[i]->setClusterSystem (this); _Instances[i]->setClusterSystem (this);

View file

@ -23,6 +23,11 @@
// Include from libxml2 // Include from libxml2
#include <libxml/xmlerror.h> #include <libxml/xmlerror.h>
#if defined(NL_OS_WINDOWS) && defined(NL_COMP_VC_VERSION) && NL_COMP_VC_VERSION >= 80
#define USE_LOCALE_SPRINTF
#include <locale.h>
#endif
using namespace std; using namespace std;
#ifdef DEBUG_NEW #ifdef DEBUG_NEW
@ -38,11 +43,22 @@ const char SEPARATOR = ' ';
// *************************************************************************** // ***************************************************************************
#ifdef USE_LOCALE_SPRINTF
#define writenumber(src,format,digits) \
char number_as_cstring [digits+1]; \
_sprintf_l( number_as_cstring, format, (_locale_t)_Locale, src ); \
serialSeparatedBufferOut( number_as_cstring );
#else
#define writenumber(src,format,digits) \ #define writenumber(src,format,digits) \
char number_as_cstring [digits+1]; \ char number_as_cstring [digits+1]; \
sprintf( number_as_cstring, format, src ); \ sprintf( number_as_cstring, format, src ); \
serialSeparatedBufferOut( number_as_cstring ); serialSeparatedBufferOut( number_as_cstring );
#endif
// *************************************************************************** // ***************************************************************************
// XML callbacks // XML callbacks
// *************************************************************************** // ***************************************************************************
@ -133,6 +149,13 @@ COXml::COXml () : IStream (false /* Output mode */)
// Push begin // Push begin
_PushBegin = false; _PushBegin = false;
#ifdef USE_LOCALE_SPRINTF
// create C numeric locale
_Locale = _create_locale(LC_NUMERIC, "C");
#else
_Locale = NULL;
#endif
} }
// *************************************************************************** // ***************************************************************************
@ -192,6 +215,10 @@ COXml::~COXml ()
{ {
// Flush document to the internal stream // Flush document to the internal stream
flush (); flush ();
#ifdef USE_LOCALE_SPRINTF
if (_Locale) _free_locale((_locale_t)_Locale);
#endif
} }
// *************************************************************************** // ***************************************************************************

View file

@ -1,40 +1,42 @@
IF(WITH_NEL_TOOLS) IF(WITH_NEL_TOOLS)
IF(WITH_3D)
SUBDIRS(
anim_builder
animation_set_builder
build_clod_bank
build_clodtex
build_coarse_mesh
build_far_bank
build_shadow_skin
build_smallbank
cluster_viewer
file_info
ig_add
ig_elevation
ig_info
ig_lighter
lightmap_optimizer
zone_dependencies
zone_ig_lighter
zone_lighter
zone_welder
shapes_exporter
shape2obj
zone_check_bind
zone_dump
zviewer)
ENDIF()
SUBDIRS( SUBDIRS(
build_coarse_mesh
build_far_bank
build_smallbank
ig_lighter
ig_elevation
lightmap_optimizer
zone_dependencies
zone_ig_lighter
zone_lighter
zone_welder
animation_set_builder
anim_builder
build_clod_bank
build_clodtex
build_interface build_interface
build_shadow_skin
cluster_viewer
file_info
get_neighbors get_neighbors
ig_add
ig_info
shapes_exporter
tga_cut tga_cut
tga_resize tga_resize)
shape2obj ENDIF()
zone_check_bind
zone_dump
zviewer)
ENDIF(WITH_NEL_TOOLS)
# For tools selection of only max plugins # For tools selection of only max plugins
IF(WIN32) IF(WIN32 AND WITH_3D)
IF(MFC_FOUND) IF(MFC_FOUND)
ADD_SUBDIRECTORY(object_viewer) ADD_SUBDIRECTORY(object_viewer)
IF(WITH_NEL_MAXPLUGIN) IF(WITH_NEL_MAXPLUGIN)
@ -44,9 +46,9 @@ IF(WIN32)
ENDIF(MAXSDK_FOUND) ENDIF(MAXSDK_FOUND)
ENDIF(WITH_NEL_MAXPLUGIN) ENDIF(WITH_NEL_MAXPLUGIN)
ENDIF(MFC_FOUND) ENDIF(MFC_FOUND)
ENDIF(WIN32) ENDIF()
IF(WITH_NEL_TOOLS) IF(WITH_NEL_TOOLS AND WITH_3D)
IF(WIN32) IF(WIN32)
# ADD_SUBDIRECTORY(lightmap_optimizer) # ADD_SUBDIRECTORY(lightmap_optimizer)
IF(MFC_FOUND) IF(MFC_FOUND)
@ -70,5 +72,5 @@ IF(WITH_NEL_TOOLS)
#crash_log_analyser #crash_log_analyser
#shapes_exporter #shapes_exporter
ENDIF(WITH_NEL_TOOLS) ENDIF()

View file

@ -113,18 +113,17 @@ void putPixel(uint8 *dst, uint8 *src, bool alphaTransfert)
// *************************************************************************** // ***************************************************************************
bool putIn (NLMISC::CBitmap *pSrc, NLMISC::CBitmap *pDst, sint32 x, sint32 y, bool alphaTransfert=true) bool putIn (NLMISC::CBitmap *pSrc, NLMISC::CBitmap *pDst, sint32 x, sint32 y, bool alphaTransfert=true)
{ {
uint32 a, b;
uint8 *rSrcPix = &pSrc->getPixels()[0]; uint8 *rSrcPix = &pSrc->getPixels()[0];
uint8 *rDstPix = &pDst->getPixels()[0]; uint8 *rDstPix = &pDst->getPixels()[0];
uint wSrc= pSrc->getWidth(); uint wSrc= pSrc->getWidth();
uint hSrc= pSrc->getHeight(); uint hSrc= pSrc->getHeight();
for (b = 0; b < hSrc; ++b) for (uint b = 0; b < hSrc; ++b)
for (a = 0; a < wSrc; ++a) for (uint a = 0; a < wSrc; ++a)
{ {
if (rDstPix[4*((x+a)+(y+b)*pDst->getWidth())+3] != 0) if (rDstPix[4*((x+a)+(y+b)*pDst->getWidth())+3] != 0)
return false; return false;
// write // write
putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rSrcPix+ 4*(a+b*pSrc->getWidth()), alphaTransfert); putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rSrcPix+ 4*(a+b*pSrc->getWidth()), alphaTransfert);
} }
@ -135,9 +134,9 @@ bool putIn (NLMISC::CBitmap *pSrc, NLMISC::CBitmap *pDst, sint32 x, sint32 y, bo
// expand on W // expand on W
if(wSrc<wSrc4) if(wSrc<wSrc4)
{ {
for(a=wSrc;a<wSrc4;a++) for(uint a=wSrc;a<wSrc4;a++)
{ {
for(b=0;b<hSrc4;b++) for(uint b=0;b<hSrc4;b++)
{ {
putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rDstPix + 4*((x+wSrc-1)+(y+b)*pDst->getWidth()), alphaTransfert); putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rDstPix + 4*((x+wSrc-1)+(y+b)*pDst->getWidth()), alphaTransfert);
} }
@ -146,9 +145,9 @@ bool putIn (NLMISC::CBitmap *pSrc, NLMISC::CBitmap *pDst, sint32 x, sint32 y, bo
// expand on H // expand on H
if(hSrc<hSrc4) if(hSrc<hSrc4)
{ {
for(b=hSrc;b<hSrc4;b++) for(uint b=hSrc;b<hSrc4;b++)
{ {
for(a=0;a<wSrc4;a++) for(uint a=0;a<wSrc4;a++)
{ {
putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rDstPix + 4*((x+a)+(y+hSrc-1)*pDst->getWidth()), alphaTransfert); putPixel(rDstPix + 4*((x+a)+(y+b)*pDst->getWidth()), rDstPix + 4*((x+a)+(y+hSrc-1)*pDst->getWidth()), alphaTransfert);
} }
@ -252,30 +251,38 @@ int main(int nNbArg, char **ppArgs)
} }
vector<NLMISC::CBitmap*> AllMaps; vector<NLMISC::CBitmap*> AllMaps;
sint32 i, j; sint32 j;
// Load all maps // Load all maps
sint32 mapSize = (sint32)AllMapNames.size(); sint32 mapSize = (sint32)AllMapNames.size();
AllMaps.resize( mapSize ); AllMaps.resize( mapSize );
for( i = 0; i < mapSize; ++i ) for(sint i = 0; i < mapSize; ++i )
{ {
NLMISC::CBitmap *pBtmp = NULL;
try try
{ {
NLMISC::CBitmap *pBtmp = new NLMISC::CBitmap; pBtmp = new NLMISC::CBitmap;
NLMISC::CIFile inFile; NLMISC::CIFile inFile;
inFile.open( AllMapNames[i] ); if (!inFile.open( AllMapNames[i] )) throw NLMISC::Exception("Unable to open " + AllMapNames[i]);
pBtmp->load(inFile);
uint8 colors = pBtmp->load(inFile);
if (colors != 32) throw NLMISC::Exception(AllMapNames[i] + " is using " + toString(colors) + " bits colors, only 32 bit supported!");
AllMaps[i] = pBtmp; AllMaps[i] = pBtmp;
} }
catch (const NLMISC::Exception &e) catch (const NLMISC::Exception &e)
{ {
if (pBtmp) delete pBtmp;
outString (string("ERROR :") + e.what()); outString (string("ERROR :") + e.what());
return -1; return -1;
} }
} }
// Sort all maps by decreasing size // Sort all maps by decreasing size
for (i = 0; i < mapSize-1; ++i) for (sint i = 0; i < mapSize-1; ++i)
for (j = i+1; j < mapSize; ++j) for (j = i+1; j < mapSize; ++j)
{ {
NLMISC::CBitmap *pBI = AllMaps[i]; NLMISC::CBitmap *pBI = AllMaps[i];
@ -303,7 +310,7 @@ int main(int nNbArg, char **ppArgs)
vector<NLMISC::CUV> UVMin, UVMax; vector<NLMISC::CUV> UVMin, UVMax;
UVMin.resize (mapSize, NLMISC::CUV(0.0f, 0.0f)); UVMin.resize (mapSize, NLMISC::CUV(0.0f, 0.0f));
UVMax.resize (mapSize, NLMISC::CUV(0.0f, 0.0f)); UVMax.resize (mapSize, NLMISC::CUV(0.0f, 0.0f));
for (i = 0; i < mapSize; ++i) for (sint i = 0; i < mapSize; ++i)
{ {
sint32 x, y; sint32 x, y;
while (!tryAllPos(AllMaps[i], &GlobalMask, x, y)) while (!tryAllPos(AllMaps[i], &GlobalMask, x, y))
@ -349,7 +356,7 @@ int main(int nNbArg, char **ppArgs)
} }
// Convert UV from pixel to ratio // Convert UV from pixel to ratio
for (i = 0; i < mapSize; ++i) for (sint i = 0; i < mapSize; ++i)
{ {
UVMin[i].U = UVMin[i].U / (float)GlobalTexture.getWidth(); UVMin[i].U = UVMin[i].U / (float)GlobalTexture.getWidth();
UVMin[i].V = UVMin[i].V / (float)GlobalTexture.getHeight(); UVMin[i].V = UVMin[i].V / (float)GlobalTexture.getHeight();
@ -394,7 +401,7 @@ int main(int nNbArg, char **ppArgs)
FILE *f = fopen (fmtName.c_str(), "wt"); FILE *f = fopen (fmtName.c_str(), "wt");
if (f != NULL) if (f != NULL)
{ {
for (i = 0; i < mapSize; ++i) for (sint i = 0; i < mapSize; ++i)
{ {
// get the string whitout path // get the string whitout path
string fileName= CFile::getFilename(AllMapNames[i]); string fileName= CFile::getFilename(AllMapNames[i]);
@ -442,6 +449,8 @@ int main(int nNbArg, char **ppArgs)
nlwarning("Can't parse %s", bufTmp); nlwarning("Can't parse %s", bufTmp);
continue; continue;
} }
sint i;
sTGAname = toLower(string(tgaName)); sTGAname = toLower(string(tgaName));
string findTGAName; string findTGAName;

View file

@ -1392,9 +1392,9 @@ void CMainFrame::OnViewSetSceneRotation()
if (sceneRotDlg.DoModal() == IDOK) if (sceneRotDlg.DoModal() == IDOK)
{ {
// read value. // read value.
NLMISC::fromString(sceneRotDlg.RotX, _LastSceneRotX); _LastSceneRotX= (float)atof(sceneRotDlg.RotX);
NLMISC::fromString(sceneRotDlg.RotY, _LastSceneRotY); _LastSceneRotY= (float)atof(sceneRotDlg.RotY);
NLMISC::fromString(sceneRotDlg.RotZ, _LastSceneRotZ); _LastSceneRotZ= (float)atof(sceneRotDlg.RotZ);
float rotx= degToRad(_LastSceneRotX); float rotx= degToRad(_LastSceneRotX);
float roty= degToRad(_LastSceneRotY); float roty= degToRad(_LastSceneRotY);
float rotz= degToRad(_LastSceneRotZ); float rotz= degToRad(_LastSceneRotZ);

View file

@ -598,7 +598,11 @@ bool CObjectViewer::initUI (HWND parent)
// initialize NeL context if needed // initialize NeL context if needed
if (!NLMISC::INelContext::isContextInitialised()) if (!NLMISC::INelContext::isContextInitialised())
new NLMISC::CApplicationContext; {
new NLMISC::CApplicationContext();
nldebug("NeL Object Viewer: initUI");
NLMISC::CSheetId::initWithoutSheet();
}
// The fonts manager // The fonts manager
_FontManager.setMaxMemory(2000000); _FontManager.setMaxMemory(2000000);
@ -676,9 +680,12 @@ bool CObjectViewer::initUI (HWND parent)
view->MainFrame = _MainFrame; view->MainFrame = _MainFrame;
_MainFrame->ShowWindow (SW_SHOW); _MainFrame->ShowWindow (SW_SHOW);
RECT viewportRect;
GetClientRect(view->m_hWnd, &viewportRect);
// Init NELU // Init NELU
if (!CNELU::init (640, 480, viewport, 32, true, view->m_hWnd, false, _Direct3d)) if (!CNELU::init (viewportRect.right, viewportRect.bottom, viewport, 32, true, view->m_hWnd, false, _Direct3d))
{ {
return false; return false;
} }

View file

@ -20,6 +20,7 @@
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
extern ClassDesc2* GetCNelExportDesc(); extern ClassDesc2* GetCNelExportDesc();
@ -34,6 +35,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Export: DllMain"); nldebug("NeL Export: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
hInstance = hinstDLL; // Hang on to this DLL's instance handle. hInstance = hinstDLL; // Hang on to this DLL's instance handle.

View file

@ -575,8 +575,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 117 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 3,0,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -591,16 +591,16 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "TECH: \0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "CompanyName", "\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileVersion", "1, 0, 0, 117\0" VALUE "FileVersion", "0.9.1\0"
VALUE "InternalName", "CNelExport\0" VALUE "InternalName", "CNelExport\0"
VALUE "LegalCopyright", "\0" VALUE "LegalCopyright", "\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "CNelExport.dlu\0" VALUE "OriginalFilename", "CNelExport.dlu\0"
VALUE "PrivateBuild", "\0" VALUE "PrivateBuild", "\0"
VALUE "ProductName", "3D Studio MAX\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "3.0.0.0\0" VALUE "ProductVersion", "0.9.1\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
END END
END END

View file

@ -293,8 +293,11 @@ void SLightBuild::convertFromMaxLight (INode *node,TimeValue tvTime)
for (sint i = 0; i < exclusionList.Count(); ++i) for (sint i = 0; i < exclusionList.Count(); ++i)
{ {
INode *exclNode = exclusionList[i]; INode *exclNode = exclusionList[i];
string tmp = exclNode->GetName(); if (exclNode) // Crashfix // FIXME: Why is this NULL?
this->setExclusion.insert(tmp); {
string tmp = exclNode->GetName();
this->setExclusion.insert(tmp);
}
} }
#endif // (MAX_RELEASE < 4000) #endif // (MAX_RELEASE < 4000)

View file

@ -508,14 +508,13 @@ std::string CExportNel::getName (MtlBase& mtl)
// -------------------------------------------------- // --------------------------------------------------
// Get the node name // Get the node name
std::string CExportNel::getName (INode& mtl) std::string CExportNel::getName(INode& node)
{ {
// Return its name // Return its name
TCHAR* name=mtl.GetName(); MCHAR* name = node.GetName();
return std::string (name); return std::string(name);
} }
// -------------------------------------------------- // --------------------------------------------------
// Get the NEL node name // Get the NEL node name

View file

@ -18,64 +18,17 @@
#include "export_nel.h" #include "export_nel.h"
#include "export_appdata.h" #include "export_appdata.h"
#include "nel/3d/skeleton_shape.h" #include "nel/3d/skeleton_shape.h"
#include "iskin.h"
using namespace NLMISC; using namespace NLMISC;
using namespace NL3D; using namespace NL3D;
// *************************************************************************** // ***************************************************************************
#define SKIN_INTERFACE 0x00010000
// ***************************************************************************
#define SKIN_CLASS_ID Class_ID(9815843,87654)
#define PHYSIQUE_CLASS_ID Class_ID(PHYSIQUE_CLASS_ID_A, PHYSIQUE_CLASS_ID_B) #define PHYSIQUE_CLASS_ID Class_ID(PHYSIQUE_CLASS_ID_A, PHYSIQUE_CLASS_ID_B)
// *************************************************************************** // ***************************************************************************
class ISkinContextData
{
public:
virtual int GetNumPoints()=0;
virtual int GetNumAssignedBones(int vertexIdx)=0;
virtual int GetAssignedBone(int vertexIdx, int boneIdx)=0;
virtual float GetBoneWeight(int vertexIdx, int boneIdx)=0;
virtual int GetSubCurveIndex(int vertexIdx, int boneIdx)=0;
virtual int GetSubSegmentIndex(int vertexIdx, int boneIdx)=0;
virtual float GetSubSegmentDistance(int vertexIdx, int boneIdx)=0;
virtual Point3 GetTangent(int vertexIdx, int boneIdx)=0;
virtual Point3 GetOPoint(int vertexIdx, int boneIdx)=0;
virtual void SetWeight(int vertexIdx, int boneIdx, float weight)=0;
virtual void SetWeight(int vertexIdx, INode* bone, float weight)=0;
virtual void SetWeights(int vertexIdx, Tab<int> boneIdx, Tab<float> weights)=0;
virtual void SetWeights(int vertexIdx, INodeTab boneIdx, Tab<float> weights)=0;
};
// ***************************************************************************
class ISkin
{
public:
ISkin() {}
~ISkin() {}
virtual int GetBoneInitTM(INode *pNode, Matrix3 &InitTM, bool bObjOffset = false)=0;
virtual int GetSkinInitTM(INode *pNode, Matrix3 &InitTM, bool bObjOffset = false)=0;
virtual int GetNumBones()=0;
virtual INode *GetBone(int idx)=0;
virtual DWORD GetBoneProperty(int idx)=0;
virtual ISkinContextData *GetContextInterface(INode *pNode)=0;
virtual BOOL AddBone(INode *bone)=0;
virtual BOOL AddBones(INodeTab *bones)=0;
virtual BOOL RemoveBone(INode *bone)=0;
virtual void Invalidate()=0;
};
// ***************************************************************************
void CExportNel::buildSkeletonShape (CSkeletonShape& skeletonShape, INode& node, mapBoneBindPos* mapBindPos, TInodePtrInt& mapId, void CExportNel::buildSkeletonShape (CSkeletonShape& skeletonShape, INode& node, mapBoneBindPos* mapBindPos, TInodePtrInt& mapId,
TimeValue time) TimeValue time)
{ {
@ -410,7 +363,8 @@ void CExportNel::buildSkeleton (std::vector<CBoneBase>& bonesArray, INode& node,
bonesArray.push_back (bone); bonesArray.push_back (bone);
// **** Call on child // **** Call on child
for (int children=0; children<node.NumberOfChildren(); children++) const int numChildren = node.NumberOfChildren();
for (int children=0; children<numChildren; children++)
buildSkeleton (bonesArray, *node.GetChildNode(children), mapBindPos, mapId, nameSet, time, ++idCount, id); buildSkeleton (bonesArray, *node.GetChildNode(children), mapBindPos, mapId, nameSet, time, ++idCount, id);
} }
@ -422,7 +376,7 @@ bool CExportNel::isSkin (INode& node)
bool ok=false; bool ok=false;
// Get the skin modifier // Get the skin modifier
Modifier* skin=getModifier (&node, SKIN_CLASS_ID); Modifier* skin=getModifier (&node, SKIN_CLASSID);
// Found it ? // Found it ?
if (skin) if (skin)
@ -431,7 +385,7 @@ bool CExportNel::isSkin (INode& node)
//if (skin->IsEnabled()) //if (skin->IsEnabled())
{ {
// Get a com_skin2 interface // Get a com_skin2 interface
ISkin *comSkinInterface=(ISkin*)skin->GetInterface (SKIN_INTERFACE); ISkin *comSkinInterface=(ISkin*)skin->GetInterface (I_SKIN);
// Found com_skin2 ? // Found com_skin2 ?
if (comSkinInterface) if (comSkinInterface)
@ -446,7 +400,7 @@ bool CExportNel::isSkin (INode& node)
ok=true; ok=true;
// Release the interface // Release the interface
skin->ReleaseInterface (SKIN_INTERFACE, comSkinInterface); skin->ReleaseInterface (I_SKIN, comSkinInterface);
} }
} }
} }
@ -490,7 +444,7 @@ uint CExportNel::buildSkinning (CMesh::CMeshBuild& buildMesh, const TInodePtrInt
uint ok=NoError; uint ok=NoError;
// Get the skin modifier // Get the skin modifier
Modifier* skin=getModifier (&node, SKIN_CLASS_ID); Modifier* skin=getModifier (&node, SKIN_CLASSID);
// Build a the name array // Build a the name array
buildMesh.BonesNames.resize (skeletonShape.size()); buildMesh.BonesNames.resize (skeletonShape.size());
@ -513,7 +467,7 @@ uint CExportNel::buildSkinning (CMesh::CMeshBuild& buildMesh, const TInodePtrInt
// ********** COMSKIN EXPORT ********** // ********** COMSKIN EXPORT **********
// Get a com_skin2 interface // Get a com_skin2 interface
ISkin *comSkinInterface=(ISkin*)skin->GetInterface (SKIN_INTERFACE); ISkin *comSkinInterface=(ISkin*)skin->GetInterface (I_SKIN);
// Should been controled with isSkin before. // Should been controled with isSkin before.
nlassert (comSkinInterface); nlassert (comSkinInterface);
@ -645,7 +599,7 @@ uint CExportNel::buildSkinning (CMesh::CMeshBuild& buildMesh, const TInodePtrInt
} }
// Release the interface // Release the interface
skin->ReleaseInterface (SKIN_INTERFACE, comSkinInterface); skin->ReleaseInterface (I_SKIN, comSkinInterface);
} }
else else
{ {
@ -881,13 +835,13 @@ INode* CExportNel::getSkeletonRootBone (INode& node)
INode* ret=NULL; INode* ret=NULL;
// Get the skin modifier // Get the skin modifier
Modifier* skin=getModifier (&node, SKIN_CLASS_ID); Modifier* skin=getModifier (&node, SKIN_CLASSID);
// Found it ? // Found it ?
if (skin) if (skin)
{ {
// Get a com_skin2 interface // Get a com_skin2 interface
ISkin *comSkinInterface=(ISkin*)skin->GetInterface (SKIN_INTERFACE); ISkin *comSkinInterface=(ISkin*)skin->GetInterface (I_SKIN);
// Found com_skin2 ? // Found com_skin2 ?
if (comSkinInterface) if (comSkinInterface)
@ -921,7 +875,7 @@ INode* CExportNel::getSkeletonRootBone (INode& node)
} }
// Release the interface // Release the interface
skin->ReleaseInterface (SKIN_INTERFACE, comSkinInterface); skin->ReleaseInterface (I_SKIN, comSkinInterface);
} }
} }
else else
@ -961,40 +915,47 @@ INode* CExportNel::getSkeletonRootBone (INode& node)
// Get a vertex interface // Get a vertex interface
IPhyVertexExport *vertexInterface=localData->GetVertexInterface (vtx); IPhyVertexExport *vertexInterface=localData->GetVertexInterface (vtx);
// Check if it is a rigid vertex or a blended vertex if (vertexInterface)
int type=vertexInterface->GetVertexType ();
if (type==RIGID_TYPE)
{ {
// this is a rigid vertex // Check if it is a rigid vertex or a blended vertex
IPhyRigidVertex *rigidInterface=(IPhyRigidVertex*)vertexInterface; int type=vertexInterface->GetVertexType ();
if (type==RIGID_TYPE)
// Get the bone
INode *newBone=rigidInterface->GetNode();
// Get the root of the hierarchy
ret=getRoot (newBone);
found=true;
break;
}
else
{
// It must be a blendable vertex
nlassert (type==RIGID_BLENDED_TYPE);
IPhyBlendedRigidVertex *blendedInterface=(IPhyBlendedRigidVertex*)vertexInterface;
// For each bones
uint bone;
uint count=(uint)blendedInterface->GetNumberNodes ();
for (bone=0; bone<count; bone++)
{ {
// Get the bone pointer // this is a rigid vertex
INode *newBone=blendedInterface->GetNode(bone); IPhyRigidVertex *rigidInterface=(IPhyRigidVertex*)vertexInterface;
// Get the bone
INode *newBone=rigidInterface->GetNode();
// Get the root of the hierarchy // Get the root of the hierarchy
ret=getRoot (newBone); ret=getRoot (newBone);
found=true; found=true;
break; break;
} }
else
{
// It must be a blendable vertex
nlassert (type==RIGID_BLENDED_TYPE);
IPhyBlendedRigidVertex *blendedInterface=(IPhyBlendedRigidVertex*)vertexInterface;
// For each bones
uint bone;
uint count=(uint)blendedInterface->GetNumberNodes ();
for (bone=0; bone<count; bone++)
{
// Get the bone pointer
INode *newBone=blendedInterface->GetNode(bone);
// Get the root of the hierarchy
ret=getRoot (newBone);
found=true;
break;
}
}
}
else
{
nlwarning("Physique vertex interface NULL");
} }
// Release vertex interfaces // Release vertex interfaces
@ -1030,13 +991,13 @@ void CExportNel::addSkeletonBindPos (INode& skinedNode, mapBoneBindPos& boneBind
uint ok=NoError; uint ok=NoError;
// Get the skin modifier // Get the skin modifier
Modifier* skin=getModifier (&skinedNode, SKIN_CLASS_ID); Modifier* skin=getModifier (&skinedNode, SKIN_CLASSID);
// Found it ? // Found it ?
if (skin) if (skin)
{ {
// Get a com_skin2 interface // Get a com_skin2 interface
ISkin *comSkinInterface=(ISkin*)skin->GetInterface (SKIN_INTERFACE); ISkin *comSkinInterface=(ISkin*)skin->GetInterface (I_SKIN);
// Should been controled with isSkin before. // Should been controled with isSkin before.
nlassert (comSkinInterface); nlassert (comSkinInterface);
@ -1082,7 +1043,7 @@ void CExportNel::addSkeletonBindPos (INode& skinedNode, mapBoneBindPos& boneBind
} }
// Release the interface // Release the interface
skin->ReleaseInterface (SKIN_INTERFACE, comSkinInterface); skin->ReleaseInterface (I_SKIN, comSkinInterface);
} }
} }
else else
@ -1267,7 +1228,7 @@ void CExportNel::addSkeletonBindPos (INode& skinedNode, mapBoneBindPos& boneBind
} }
// Release the interface // Release the interface
skin->ReleaseInterface (SKIN_INTERFACE, physiqueInterface); skin->ReleaseInterface (I_SKIN, physiqueInterface);
} }
} }
} }
@ -1279,7 +1240,7 @@ void CExportNel::addSkeletonBindPos (INode& skinedNode, mapBoneBindPos& boneBind
void CExportNel::enableSkinModifier (INode& node, bool enable) void CExportNel::enableSkinModifier (INode& node, bool enable)
{ {
// Get the skin modifier // Get the skin modifier
Modifier* skin=getModifier (&node, SKIN_CLASS_ID); Modifier* skin=getModifier (&node, SKIN_CLASSID);
// Found it ? // Found it ?
if (skin) if (skin)

View file

@ -21,6 +21,7 @@
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
extern ClassDesc2* GetPO2RPODesc(); extern ClassDesc2* GetPO2RPODesc();
extern ClassDesc* GetRPODesc(); extern ClassDesc* GetRPODesc();
@ -44,6 +45,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Export: DllMain"); nldebug("NeL Export: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
if(fdwReason == DLL_PROCESS_ATTACH) if(fdwReason == DLL_PROCESS_ATTACH)

View file

@ -85,8 +85,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,0 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 0,6,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -101,14 +101,14 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "http://www.opennel.org/" VALUE "Comments", "http://www.ryzomcore.org/"
VALUE "FileDescription", "PatchMesh to RykolPatchMesh" VALUE "FileDescription", "PatchMesh to RykolPatchMesh"
VALUE "FileVersion", "0.6.0" VALUE "FileVersion", "0.9.1"
VALUE "InternalName", "PatchMesh to RykolPatchMesh" VALUE "InternalName", "PatchMesh to RykolPatchMesh"
VALUE "LegalCopyright", "Copyright, 2000 Nevrax Ltd." VALUE "LegalCopyright", "Copyright, 2000 Nevrax Ltd."
VALUE "OriginalFilename", "nel_convert_patch.dlm" VALUE "OriginalFilename", "nel_convert_patch.dlm"
VALUE "ProductName", "NeL Patch Converter" VALUE "ProductName", "NeL Patch Converter"
VALUE "ProductVersion", "0.6.0" VALUE "ProductVersion", "0.9.1"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View file

@ -514,8 +514,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,50 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 3,0,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -530,15 +530,16 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "CompanyName", "Nevrax Ltd." VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "FileDescription", "Standard modifiers (plugin)" VALUE "CompanyName", "Ryzom Core"
VALUE "FileVersion", "1, 0, 0, 50" VALUE "FileDescription", "NeL Patch Edit"
VALUE "FileVersion", "0.9.1"
VALUE "InternalName", "neleditpatch" VALUE "InternalName", "neleditpatch"
VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc." VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc."
VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF." VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF."
VALUE "OriginalFilename", "neleditpatch.dlm" VALUE "OriginalFilename", "neleditpatch.dlm"
VALUE "ProductName", "3D Studio MAX" VALUE "ProductName", "Ryzom Core"
VALUE "ProductVersion", "3.0.0.0" VALUE "ProductVersion", "0.9.1"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View file

@ -18,6 +18,7 @@
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
HINSTANCE hInstance; HINSTANCE hInstance;
int controlsInit = FALSE; int controlsInit = FALSE;
@ -32,6 +33,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Patch Edit: DllMain"); nldebug("NeL Patch Edit: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
if (fdwReason == DLL_PROCESS_ATTACH) if (fdwReason == DLL_PROCESS_ATTACH)

View file

@ -4,6 +4,7 @@
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
HINSTANCE hInstance; HINSTANCE hInstance;
int controlsInit = FALSE; int controlsInit = FALSE;
@ -18,6 +19,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Patch Paint: DllMain"); nldebug("NeL Patch Paint: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
hInstance = hinstDLL; hInstance = hinstDLL;

View file

@ -96,8 +96,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 51 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 3,0,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -112,17 +112,18 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "Comments", "TECH: cyril.corvazier\0" VALUE "Comments", "TECH: cyril.corvazier\0"
VALUE "CompanyName", "Nevrax Ltd\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileDescription", "Standard modifiers (plugin)\0" VALUE "FileDescription", "NeL Patch Paint\0"
VALUE "FileVersion", "1, 0, 0, 51\0" VALUE "FileVersion", "0.9.1\0"
VALUE "InternalName", "mods\0" VALUE "InternalName", "mods\0"
VALUE "LegalCopyright", "Copyright © 1998 Nevrax Ltd\0" VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nelpatchpaint.dlm\0" VALUE "OriginalFilename", "nelpatchpaint.dlm\0"
VALUE "PrivateBuild", "\0" VALUE "PrivateBuild", "\0"
VALUE "ProductName", "3D Studio MAX\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "3.0.0.0\0" VALUE "ProductVersion", "0.9.1\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
END END
END END

View file

@ -1,6 +1,7 @@
#include "vertex_tree_paint.h" #include "vertex_tree_paint.h"
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
HINSTANCE hInstance; HINSTANCE hInstance;
@ -12,6 +13,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Vertex Tree Paint: DllMain"); nldebug("NeL Vertex Tree Paint: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
hInstance = hinstDLL; // Hang on to this DLL's instance handle. hInstance = hinstDLL; // Hang on to this DLL's instance handle.

View file

@ -125,8 +125,8 @@ IDC_DROPPER_CURSOR CURSOR DISCARDABLE "dropcurs.cur"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,1,0,0 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 3,1,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -141,16 +141,17 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "TECH: Christer Janson\0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.1 plugin sample\0"
VALUE "CompanyName", "Kinetix, a division of Autodesk, Inc.\0" VALUE "Comments", "TECH: \0"
VALUE "FileDescription", "Vertex Color Paint (plugin)\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileVersion", "3.1.0.0\0" VALUE "FileDescription", "Vertex Tree Paint\0"
VALUE "InternalName", "VertexPaint\0" VALUE "FileVersion", "0.9.1\0"
VALUE "LegalCopyright", "Copyright © 1998 Autodesk Inc.\0" VALUE "InternalName", "VertexTreePaint\0"
VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc.\0"
VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF.\0" VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF.\0"
VALUE "OriginalFilename", "nel_vertex_tree_paint.dlm\0" VALUE "OriginalFilename", "nel_vertex_tree_paint.dlm\0"
VALUE "ProductName", "3D Studio MAX\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "3.1.0.0\0" VALUE "ProductVersion", "0.9.1\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View file

@ -545,7 +545,7 @@ plugin material NelMaterial
rollout nelBasicParameters "NeL Basic Parameters" rolledUp:false rollout nelBasicParameters "NeL Basic Parameters" rolledUp:false
( (
Label lblNlbpA "NeL Material" align:#center across:3 Label lblNlbpA "NeL Material" align:#center across:3
Label lblNlbpB "http://dev.ryzom.com/" align:#center Label lblNlbpB "http://www.ryzomcore.org/" align:#center
CheckBox cbTwoSided "2-Sided" checked:false align:#right CheckBox cbTwoSided "2-Sided" checked:false align:#right
group "Standard Lighting" group "Standard Lighting"
@ -595,7 +595,7 @@ plugin material NelMaterial
cpSelfIllumColor.visible = bUseSelfIllumColor cpSelfIllumColor.visible = bUseSelfIllumColor
) )
else else
( (
bTwoSided = cbTwoSided.checked bTwoSided = cbTwoSided.checked
cAmbient = cpAmbient.color cAmbient = cpAmbient.color
cDiffuse = cpDiffuse.color cDiffuse = cpDiffuse.color
@ -607,6 +607,9 @@ plugin material NelMaterial
pSelfIllumAmount = spSelfIllumAmount.value pSelfIllumAmount = spSelfIllumAmount.value
bUseSelfIllumColor = cbUseSelfIllumColor.checked bUseSelfIllumColor = cbUseSelfIllumColor.checked
spSelfIllumAmount.visible = not cbUseSelfIllumColor.checked
cpSelfIllumColor.visible = cbUseSelfIllumColor.checked
delegate.twoSided = bTwoSided delegate.twoSided = bTwoSided
delegate.ambient = cAmbient delegate.ambient = cAmbient
delegate.diffuse = cDiffuse delegate.diffuse = cDiffuse
@ -2211,6 +2214,18 @@ plugin material NelMaterial
on create do on create do
( (
-- Load from Standard
bTwoSided = delegate.twoSided
cAmbient = delegate.ambient
cDiffuse = delegate.diffuse
pOpacity = delegate.opacity
cSpecular = delegate.specular
pSpecularLevel = delegate.specularLevel
pGlossiness = delegate.glossiness
cSelfIllumColor = delegate.selfIllumColor
pSelfIllumAmount = delegate.selfIllumAmount
bUseSelfIllumColor = delegate.useSelfIllumColor
-- Single shader -- Single shader
loadShader ShaderSingleTexture loadShader ShaderSingleTexture
) )

View file

@ -21,6 +21,7 @@
#include "../nel_3dsmax_shared/nel_3dsmax_shared.h" #include "../nel_3dsmax_shared/nel_3dsmax_shared.h"
#include <vector> #include <vector>
#include <maxversion.h> #include <maxversion.h>
#include "nel/misc/sheet_id.h"
extern ClassDesc2* GetTile_utilityDesc(); extern ClassDesc2* GetTile_utilityDesc();
extern ClassDesc* GetRGBAddDesc(); extern ClassDesc* GetRGBAddDesc();
@ -41,6 +42,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,ULONG fdwReason,LPVOID lpvReserved)
{ {
new NLMISC::CLibraryContext(GetSharedNelContext()); new NLMISC::CLibraryContext(GetSharedNelContext());
nldebug("NeL Tile Utility: DllMain"); nldebug("NeL Tile Utility: DllMain");
NLMISC::CSheetId::initWithoutSheet();
} }
hInstance = hinstDLL; // Hang on to this DLL's instance handle. hInstance = hinstDLL; // Hang on to this DLL's instance handle.

View file

@ -124,8 +124,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 56 FILEVERSION 0, 9, 1, 0
PRODUCTVERSION 3,0,0,0 PRODUCTVERSION 0, 9, 1, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -140,13 +140,14 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "CompanyName", "\0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "FileVersion", "1, 0, 0, 56\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileVersion", "0.9.1\0"
VALUE "InternalName", "Tile_utility\0" VALUE "InternalName", "Tile_utility\0"
VALUE "LegalCopyright", "\0" VALUE "LegalCopyright", "\0"
VALUE "OriginalFilename", "Tile_utility.dlu\0" VALUE "OriginalFilename", "Tile_utility.dlu\0"
VALUE "ProductName", "3D Studio MAX\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "3.0.0.0\0" VALUE "ProductVersion", "0.9.1\0"
VALUE "FileDescription", "Create material for tiles\0" VALUE "FileDescription", "Create material for tiles\0"
VALUE "Comments", "TECH: \0" VALUE "Comments", "TECH: \0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"

View file

@ -6,9 +6,7 @@ IF(WITH_NEL_TOOLS)
ENDIF(WITH_NEL_TOOLS) ENDIF(WITH_NEL_TOOLS)
# Max plugins are under the 3d directory as well. # Max plugins are under the 3d directory as well.
IF(WITH_3D) ADD_SUBDIRECTORY(3d)
ADD_SUBDIRECTORY(3d)
ENDIF(WITH_3D)
# Don't add other subdirectories if only max plugins are selected. # Don't add other subdirectories if only max plugins are selected.
IF(WITH_NEL_TOOLS) IF(WITH_NEL_TOOLS)

View file

@ -282,6 +282,26 @@ def findFilesNoSubdir(log, dir_where, file_ext):
printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull) printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull)
return result return result
def findFilesNoSubdirFiltered(log, dir_where, file_ext, filter):
if len(filter) == 0:
return findFilesNoSubdir(log, dir_where, file_ext)
result = [ ]
files = os.listdir(dir_where)
len_file_ext = len(file_ext)
for fileName in files:
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
fileFull = dir_where + "/" + fileName
if os.path.isfile(fileFull):
if fileName[-len_file_ext:].lower() == file_ext.lower():
fileNameLower = fileName.lower()
for filterWord in filter:
if filterWord in fileNameLower:
result += [ fileName ]
break
elif not os.path.isdir(fileFull):
printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull)
return result
def findFile(log, dir_where, file_name): def findFile(log, dir_where, file_name):
files = os.listdir(dir_where) files = os.listdir(dir_where)
for fileName in files: for fileName in files:
@ -323,6 +343,31 @@ def needUpdateDirByLowercaseTagLog(log, dir_source, ext_source, dir_dest, ext_de
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles))) printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
return 0 return 0
def needUpdateDirByTagLogFiltered(log, dir_source, ext_source, dir_dest, ext_dest, filter):
updateCount = 0
skipCount = 0
lenSrcExt = len(ext_source)
sourceFiles = findFilesNoSubdirFiltered(log, dir_source, ext_source, filter)
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
for file in sourceFiles:
sourceFile = dir_source + "/" + file
tagFile = dir_dest + "/" + file[0:-lenSrcExt] + ext_dest
if os.path.isfile(tagFile):
sourceTime = os.stat(sourceFile).st_mtime
tagTime = os.stat(tagFile).st_mtime
if (sourceTime > tagTime):
updateCount = updateCount + 1
else:
skipCount = skipCount + 1
else:
updateCount = updateCount + 1
if updateCount > 0:
printLog(log, "UPDATE " + str(updateCount) + " / " + str(len(sourceFiles)) + "; SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
return 1
else:
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
return 0
def needUpdateDirByTagLog(log, dir_source, ext_source, dir_dest, ext_dest): def needUpdateDirByTagLog(log, dir_source, ext_source, dir_dest, ext_dest):
updateCount = 0 updateCount = 0
skipCount = 0 skipCount = 0

View file

@ -62,7 +62,7 @@ if LigoExportLand == "" or LigoExportOnePass == 1:
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemCmbExportDirectory) mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemCmbExportDirectory)
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0]) mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0])
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemTagExportDirectory) mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemTagExportDirectory)
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory, ".max", ExportBuildDirectory + "/" + LigoEcosystemTagExportDirectory, ".max.tag")): if (needUpdateDirByTagLogFiltered(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory, ".max", ExportBuildDirectory + "/" + LigoEcosystemTagExportDirectory, ".max.tag", [ "zonematerial", "zonetransition", "zonespecial" ])):
printLog(log, "WRITE " + ligoIniPath) printLog(log, "WRITE " + ligoIniPath)
ligoIni = open(ligoIniPath, "w") ligoIni = open(ligoIniPath, "w")
ligoIni.write("[LigoConfig]\n") ligoIni.write("[LigoConfig]\n")

View file

@ -233,6 +233,15 @@ fn exportCollisionsFromZone outputNelDir filename =
if (isToBeExportedCollision m) == true then if (isToBeExportedCollision m) == true then
selectmore m selectmore m
) )
for node in objects where classOf node == XRefObject do
(
sourceObject = node.GetSourceObject false
if (superclassOf sourceObject == GeometryClass) then
(
if (isToBeExportedCollision node) == true then
selectmore node
)
)
-- Export the collision -- Export the collision
if (NelExportCollision ($selection as array) outputNelDir) == false then if (NelExportCollision ($selection as array) outputNelDir) == false then
@ -311,10 +320,10 @@ fn exportInstanceGroupFromZone inputFile outputPath igName transitionZone cellSi
-- Scan all the ig in this project -- Scan all the ig in this project
nlerror("Scan all the ig in this project") nlerror("Scan all the ig in this project")
for node in geometry do for node in objects do
( (
ig = getIg node ig = getIg node
nlerror("geometry node") nlerror("object node")
if ( (ig != undefined) and (ig != "") and ( (igName == "") or (ig == igName) ) ) then if ( (ig != undefined) and (ig != "") and ( (igName == "") or (ig == igName) ) ) then
( (
nlerror("Found something with an IG name") nlerror("Found something with an IG name")
@ -347,71 +356,6 @@ fn exportInstanceGroupFromZone inputFile outputPath igName transitionZone cellSi
) )
) )
for node in lights do
(
ig = getIg node
if ( (ig != undefined) and (ig != "") and ( (igName == "") or ( ig == igName) ) ) then
(
-- Transition ?
if ( ig == IgName) then
(
-- Transform the object
node.transform = buildTransitionMatrixObj node.transform transitionZone cellSize
)
-- Found ?
found = false
-- Already found ?
for j = 1 to ig_array.count do
(
if (ig_array[j]==ig) then
(
found = true
)
)
-- Found ?
if (found == false) then
(
append ig_array ig
)
)
)
for node in helpers do
(
ig = getIg node
if ( (ig != undefined) and (ig != "") and ( (igName == "") or (ig == igName) ) ) then
(
-- Transition ?
if (ig == IgName) then
(
-- Transform the object
node.transform = buildTransitionMatrixObj node.transform transitionZone cellSize
)
-- Found ?
found = false
-- Already found ?
for j = 1 to ig_array.count do
(
if (ig_array[j]==ig) then
(
found = true
)
)
-- Found ?
if (found == false) then
(
append ig_array ig
)
)
)
-- Have some ig ? -- Have some ig ?
if (ig_array.count != 0) then if (ig_array.count != 0) then
( (
@ -429,6 +373,29 @@ fn exportInstanceGroupFromZone inputFile outputPath igName transitionZone cellSi
-- Select none -- Select none
max select none max select none
for node in objects where classOf node == XRefObject do
(
if ((getIg node) == ig_array[ig]) then
(
sourceObject = node.GetSourceObject false
if (classOf sourceObject == XRefObject) then
(
nlerror("FAIL XREF STILL XREF " + node.name)
)
else if (superclassOf sourceObject == GeometryClass) then
(
selectmore node
)
else if (superclassOf sourceObject == Helper) then
(
selectmore node
)
else if (superclassOf sourceObject == Light) then
(
selectmore node
)
)
)
-- Select all node in this ig -- Select all node in this ig
for node in geometry do for node in geometry do
( (
@ -508,8 +475,8 @@ try
for curFileName in MaxFilesList do for curFileName in MaxFilesList do
( (
-- Free memory and file handles -- Free memory and file handles
gc () -- gc ()
resetMAXFile #noprompt -- resetMAXFile #noprompt
tokenArray = filterString (getFilenameFile curFileName) "-" tokenArray = filterString (getFilenameFile curFileName) "-"
@ -528,6 +495,7 @@ try
nlerror ("Scanning file "+curFileName+" ...") nlerror ("Scanning file "+curFileName+" ...")
mergeMaxFile curFileName quiet:true mergeMaxFile curFileName quiet:true
objXRefMgr.UpdateAllRecords()
-- Unhide category -- Unhide category
unhidecategory() unhidecategory()
@ -622,6 +590,8 @@ try
) )
resetMAXFile #noprompt resetMAXFile #noprompt
gc ()
resetMAXFile #noprompt
) )
else else
( (
@ -635,10 +605,10 @@ try
for curFileName in MaxFilesList do for curFileName in MaxFilesList do
( (
-- Free memory and file handles -- Free memory and file handles
gc () -- gc ()
-- Reset 3dsmax -- Reset 3dsmax
resetMAXFile #noprompt -- resetMAXFile #noprompt
tokenArray = filterString (getFilenameFile curFileName) "-" tokenArray = filterString (getFilenameFile curFileName) "-"
if (tokenArray.count == 4) and (tokenArray[1] == "zonetransition") then if (tokenArray.count == 4) and (tokenArray[1] == "zonetransition") then
@ -672,6 +642,7 @@ try
nlerror ("Scanning file "+curFileName+" ...") nlerror ("Scanning file "+curFileName+" ...")
mergeMaxFile curFileName quiet:true mergeMaxFile curFileName quiet:true
objXRefMgr.UpdateAllRecords()
-- Unhide category -- Unhide category
unhidecategory() unhidecategory()
@ -852,6 +823,8 @@ try
) )
resetMAXFile #noprompt resetMAXFile #noprompt
gc ()
resetMAXFile #noprompt
) )
else else
( (
@ -865,8 +838,8 @@ try
for curFileName in MaxFilesList do for curFileName in MaxFilesList do
( (
-- Free memory and file handles -- Free memory and file handles
gc () -- gc ()
resetMAXFile #noprompt -- resetMAXFile #noprompt
tokenArray = filterString (getFilenameFile curFileName) "-" tokenArray = filterString (getFilenameFile curFileName) "-"
if (tokenArray.count == 2) and (tokenArray[1] == "zonespecial") then if (tokenArray.count == 2) and (tokenArray[1] == "zonespecial") then
@ -884,6 +857,7 @@ try
nlerror ("Scanning file "+curFileName+" ...") nlerror ("Scanning file "+curFileName+" ...")
mergeMaxFile curFileName quiet:true mergeMaxFile curFileName quiet:true
objXRefMgr.UpdateAllRecords()
-- Unhide category -- Unhide category
unhidecategory() unhidecategory()
@ -971,6 +945,8 @@ try
) )
resetMAXFile #noprompt resetMAXFile #noprompt
gc ()
resetMAXFile #noprompt
) )
else else
( (

View file

@ -1 +1,9 @@
SUBDIRS(build_ig_boxes build_indoor_rbank build_rbank) IF(WITH_3D)
ADD_SUBDIRECTORY(build_ig_boxes)
IF(WITH_LIGO)
ADD_SUBDIRECTORY(build_rbank)
ENDIF()
ENDIF()
ADD_SUBDIRECTORY(build_indoor_rbank)

View file

@ -688,22 +688,27 @@ void updateWeather()
} }
#endif #endif
// FIXME: temporary fix for teleportation crash
// Update new sky // Update new sky
if (ContinentMngr.cur() && Driver->getPolygonMode() == UDriver::Filled && Filter3D[FilterSky]) s_SkyMode = NoSky;
if (ContinentMngr.cur() && !ContinentMngr.cur()->Indoor)
{ {
CSky &sky = ContinentMngr.cur()->CurrentSky; if(Driver->getPolygonMode() == UDriver::Filled)
if (!ContinentMngr.cur()->Indoor && sky.getScene())
{ {
s_SkyMode = NewSky; if (Filter3D[FilterSky])
sky.getScene()->animate(TimeInSec-FirstTimeInSec); {
// Setup the sky camera CSky &sky = ContinentMngr.cur()->CurrentSky;
preRenderNewSky(); if (sky.getScene())
} {
else s_SkyMode = NewSky;
{ sky.getScene()->animate(TimeInSec-FirstTimeInSec);
s_SkyMode = OldSky; // Setup the sky camera
preRenderNewSky();
}
else
{
s_SkyMode = OldSky;
}
}
} }
} }
} }

View file

@ -2895,13 +2895,13 @@ uint32 CGameItem::maxDurability() const
// tools // tools
// SHEARS = pick for forage // SHEARS = pick for forage
case ITEM_TYPE::SHEARS: return (uint32)CWeaponCraftParameters::ForageToolDurability; case ITEM_TYPE::SHEARS: d = CWeaponCraftParameters::ForageToolDurability; break;
case ITEM_TYPE::AmmoTool: return (uint32)CWeaponCraftParameters::AmmoCraftingToolDurability; case ITEM_TYPE::AmmoTool: d = CWeaponCraftParameters::AmmoCraftingToolDurability; break;
case ITEM_TYPE::ArmorTool: return (uint32)CWeaponCraftParameters::ArmorCraftingToolDurability; case ITEM_TYPE::ArmorTool: d = CWeaponCraftParameters::ArmorCraftingToolDurability; break;
case ITEM_TYPE::JewelryTool: return (uint32)CWeaponCraftParameters::JewelryCraftingToolDurability; case ITEM_TYPE::JewelryTool: d = CWeaponCraftParameters::JewelryCraftingToolDurability; break;
case ITEM_TYPE::MeleeWeaponTool:return (uint32)CWeaponCraftParameters::MeleeWeaponCraftingToolDurability; case ITEM_TYPE::MeleeWeaponTool: d = CWeaponCraftParameters::MeleeWeaponCraftingToolDurability; break;
case ITEM_TYPE::RangeWeaponTool:return (uint32)CWeaponCraftParameters::RangeWeaponCraftingToolDurability; case ITEM_TYPE::RangeWeaponTool: d = CWeaponCraftParameters::RangeWeaponCraftingToolDurability; break;
case ITEM_TYPE::ToolMaker: return (uint32)CWeaponCraftParameters::ToolCraftingToolDurability; case ITEM_TYPE::ToolMaker: d = CWeaponCraftParameters::ToolCraftingToolDurability; break;
default: default:
return 0; return 0;

View file

@ -14,7 +14,7 @@
* @link http://cakephp.org CakePHP(tm) Project * @link http://cakephp.org CakePHP(tm) Project
* @package cake * @package cake
* @subpackage cake.cake.libs.model.datasources.dbo * @subpackage cake.cake.libs.model.datasources.dbo
* @since CakePHP(tm) v 0.9.0 * @since CakePHP(tm) v 0.9.1
* @license MIT License (http://www.opensource.org/licenses/mit-license.php) * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/ */