Merge with default

--HG--
branch : gsoc2012-fabien
hg/feature/gsoc2012-fabien
kaetemi 11 years ago
commit dd91970e9e

@ -3,3 +3,10 @@ a409552f83cb55a5c20f867fd7bcae1d0083d01a ryzomcore_0_8_0
0000000000000000000000000000000000000000 ryzomcore_0_8_0
0000000000000000000000000000000000000000 ryzomcore_0_8_0
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 ryzomcore_0_8_0
2e439cca8c3746df8ea64e1aab2d4d2ab9ca95d8 latest-default-graft
2e439cca8c3746df8ea64e1aab2d4d2ab9ca95d8 latest-default-graft
e4680cd1f1ce24747c4db73eeb4b107f6f6c45d4 latest-default-graft
e4680cd1f1ce24747c4db73eeb4b107f6f6c45d4 latest-default-graft
8162b598e9e233ce0886d3b8b41151f12a7bff01 latest-default-graft
8162b598e9e233ce0886d3b8b41151f12a7bff01 latest-default-graft
5f0b297fb908985504cef899469bfca9a9f9816c latest-default-graft

@ -71,11 +71,14 @@ SET(WINSDKENV_DIR $ENV{WINSDK_DIR})
MACRO(FIND_WINSDK_VERSION_HEADERS)
IF(WINSDK_DIR AND NOT WINSDK_VERSION)
# Search version in headers
IF(EXISTS ${WINSDK_DIR}/include/Msi.h)
SET(_MSI_FILE ${WINSDK_DIR}/include/Msi.h)
ENDIF(EXISTS ${WINSDK_DIR}/include/Msi.h)
FIND_FILE(_MSI_FILE Msi.h
PATHS
${WINSDK_DIR}/Include/um
${WINSDK_DIR}/Include
)
IF(_MSI_FILE)
# Look for Windows SDK 8.0
FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN8")
@ -88,11 +91,11 @@ MACRO(FIND_WINSDK_VERSION_HEADERS)
FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN7")
IF(_CONTENT)
IF(EXISTS ${WINSDK_DIR}/include/winsdkver.h)
SET(_WINSDKVER_FILE ${WINSDK_DIR}/include/winsdkver.h)
ELSEIF(EXISTS ${WINSDK_DIR}/include/WinSDKVer.h)
SET(_WINSDKVER_FILE ${WINSDK_DIR}/include/WinSDKVer.h)
ENDIF(EXISTS ${WINSDK_DIR}/include/winsdkver.h)
FIND_FILE(_WINSDKVER_FILE winsdkver.h WinSDKVer.h
PATHS
${WINSDK_DIR}/Include/um
${WINSDK_DIR}/Include
)
IF(_WINSDKVER_FILE)
# Load WinSDKVer.h content
@ -162,9 +165,13 @@ MACRO(USE_CURRENT_WINSDK)
SET(WINSDK_VERSION_FULL "")
# Use WINSDK environment variable
IF(WINSDKENV_DIR AND EXISTS ${WINSDKENV_DIR}/include/Windows.h)
SET(WINSDK_DIR ${WINSDKENV_DIR})
ENDIF(WINSDKENV_DIR AND EXISTS ${WINSDKENV_DIR}/include/Windows.h)
IF(WINSDKENV_DIR)
FIND_PATH(WINSDK_DIR Windows.h
HINTS
${WINSDKENV_DIR}/Include/um
${WINSDKENV_DIR}/Include
)
ENDIF(WINSDKENV_DIR)
# Use INCLUDE environment variable
IF(NOT WINSDK_DIR AND WINSDKCURRENT_VERSION_INCLUDE)
@ -173,8 +180,8 @@ MACRO(USE_CURRENT_WINSDK)
# Look for Windows.h because there are several paths
IF(EXISTS ${_INCLUDE}/Windows.h)
STRING(REGEX REPLACE "/(include|INCLUDE|Include)" "" WINSDK_DIR ${_INCLUDE})
MESSAGE(STATUS "Found Windows SDK environment variable in ${WINSDK_DIR}")
STRING(REGEX REPLACE "/(include|INCLUDE|Include)(.*)" "" WINSDK_DIR ${_INCLUDE})
MESSAGE(STATUS "Found Windows SDK from include environment variable in ${WINSDK_DIR}")
BREAK()
ENDIF(EXISTS ${_INCLUDE}/Windows.h)
ENDFOREACH(_INCLUDE)

@ -236,8 +236,6 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS)
OPTION(WITH_COVERAGE "With Code Coverage Support" OFF)
OPTION(WITH_PCH "With Precompiled Headers" ON )
OPTION(FINAL_VERSION "Build in Final Version mode" ON )
OPTION(WITH_PERFHUD "Build with NVIDIA PerfHUD support" OFF )
OPTION(WITH_PATCH_SUPPORT "Build with in-game Patch Support" OFF )
# Default to static building on Windows.
IF(WIN32)
@ -325,6 +323,7 @@ MACRO(NL_SETUP_NEL_DEFAULT_OPTIONS)
OPTION(WITH_LIBOVR "With LibOVR support" OFF)
OPTION(WITH_LIBVR "With LibVR support" OFF)
OPTION(WITH_PERFHUD "With NVIDIA PerfHUD support" OFF)
ENDMACRO(NL_SETUP_NEL_DEFAULT_OPTIONS)
MACRO(NL_SETUP_NELNS_DEFAULT_OPTIONS)
@ -343,6 +342,7 @@ MACRO(NL_SETUP_RYZOM_DEFAULT_OPTIONS)
OPTION(WITH_RYZOM_TOOLS "Build Ryzom Core Tools" ON )
OPTION(WITH_RYZOM_SERVER "Build Ryzom Core Services" ON )
OPTION(WITH_RYZOM_SOUND "Enable Ryzom Core Sound" ON )
OPTION(WITH_RYZOM_PATCH "Enable Ryzom in-game patch support" OFF)
###
# Optional support
@ -889,7 +889,7 @@ MACRO(NL_SETUP_BUILD)
SET(NL_RELEASE_CFLAGS "${NL_RELEASE_CFLAGS} -g")
ELSE(WITH_SYMBOLS)
IF(APPLE)
SET(NL_RELEASE_LINKFLAGS "-Wl,-dead_strip -Wl,-x ${NL_RELEASE_LINKFLAGS}")
SET(NL_RELEASE_LINKFLAGS "-Wl,-dead_strip ${NL_RELEASE_LINKFLAGS}")
ELSE(APPLE)
SET(NL_RELEASE_LINKFLAGS "-Wl,-s ${NL_RELEASE_LINKFLAGS}")
ENDIF(APPLE)

@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright (c) 2013 The Khronos Group Inc.
** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
** Khronos $Revision: 23855 $ on $Date: 2013-11-02 22:54:48 -0700 (Sat, 02 Nov 2013) $
** Khronos $Revision: 26007 $ on $Date: 2014-03-19 01:28:09 -0700 (Wed, 19 Mar 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@ -53,7 +53,7 @@ extern "C" {
#define GLAPI extern
#endif
#define GL_GLEXT_VERSION 20131102
#define GL_GLEXT_VERSION 20140319
/* Generated C header for:
* API: gl
@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui
GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
#endif
#endif /* GL_VERSION_3_2 */
@ -2144,6 +2144,10 @@ GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data)
#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
@ -2432,6 +2436,7 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum
#define GL_VERTEX_BINDING_STRIDE 0x82D8
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
#define GL_VERTEX_BINDING_BUFFER 0x8F4F
#define GL_DISPLAY_LIST 0x82E7
typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
@ -4836,6 +4841,20 @@ GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
#endif
#endif /* GL_AMD_name_gen_delete */
#ifndef GL_AMD_occlusion_query_event
#define GL_AMD_occlusion_query_event 1
#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
#endif
#endif /* GL_AMD_occlusion_query_event */
#ifndef GL_AMD_performance_monitor
#define GL_AMD_performance_monitor 1
#define GL_COUNTER_TYPE_AMD 0x8BC0
@ -6163,7 +6182,7 @@ typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintp
typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
@ -6419,7 +6438,7 @@ GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, G
GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
@ -7062,6 +7081,10 @@ GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *strin
#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
#endif /* GL_EXT_separate_specular_color */
#ifndef GL_EXT_shader_image_load_formatted
#define GL_EXT_shader_image_load_formatted 1
#endif /* GL_EXT_shader_image_load_formatted */
#ifndef GL_EXT_shader_image_load_store
#define GL_EXT_shader_image_load_store 1
#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
@ -8108,6 +8131,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void
#endif
#endif /* GL_INTEL_parallel_arrays */
#ifndef GL_INTEL_performance_query
#define GL_INTEL_performance_query 1
#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
#define GL_PERFQUERY_WAIT_INTEL 0x83FB
#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
#endif
#endif /* GL_INTEL_performance_query */
#ifndef GL_MESAX_texture_stack
#define GL_MESAX_texture_stack 1
#define GL_TEXTURE_1D_STACK_MESAX 0x8759
@ -8202,6 +8271,15 @@ GLAPI void APIENTRY glEndConditionalRenderNVX (void);
#endif
#endif /* GL_NVX_conditional_render */
#ifndef GL_NVX_gpu_memory_info
#define GL_NVX_gpu_memory_info 1
#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
#endif /* GL_NVX_gpu_memory_info */
#ifndef GL_NV_bindless_multi_draw_indirect
#define GL_NV_bindless_multi_draw_indirect 1
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
@ -8248,6 +8326,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
#define GL_NV_blend_equation_advanced 1
#define GL_BLEND_OVERLAP_NV 0x9281
#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
#define GL_BLUE_NV 0x1905
#define GL_COLORBURN_NV 0x929A
#define GL_COLORDODGE_NV 0x9299
#define GL_CONJOINT_NV 0x9284
@ -8261,6 +8340,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
#define GL_DST_OUT_NV 0x928D
#define GL_DST_OVER_NV 0x9289
#define GL_EXCLUSION_NV 0x92A0
#define GL_GREEN_NV 0x1904
#define GL_HARDLIGHT_NV 0x929B
#define GL_HARDMIX_NV 0x92A9
#define GL_HSL_COLOR_NV 0x92AF
@ -8282,6 +8362,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
#define GL_PLUS_CLAMPED_NV 0x92B1
#define GL_PLUS_DARKER_NV 0x9292
#define GL_PLUS_NV 0x9291
#define GL_RED_NV 0x1903
#define GL_SCREEN_NV 0x9295
#define GL_SOFTLIGHT_NV 0x929C
#define GL_SRC_ATOP_NV 0x928E
@ -8291,6 +8372,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
#define GL_SRC_OVER_NV 0x9288
#define GL_UNCORRELATED_NV 0x9282
#define GL_VIVIDLIGHT_NV 0x92A6
#define GL_XOR_NV 0x1506
typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
#ifdef GL_GLEXT_PROTOTYPES
@ -9350,6 +9432,17 @@ GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLs
#define GL_NV_shader_storage_buffer_object 1
#endif /* GL_NV_shader_storage_buffer_object */
#ifndef GL_NV_shader_thread_group
#define GL_NV_shader_thread_group 1
#define GL_WARP_SIZE_NV 0x9339
#define GL_WARPS_PER_SM_NV 0x933A
#define GL_SM_COUNT_NV 0x933B
#endif /* GL_NV_shader_thread_group */
#ifndef GL_NV_shader_thread_shuffle
#define GL_NV_shader_thread_shuffle 1
#endif /* GL_NV_shader_thread_shuffle */
#ifndef GL_NV_tessellation_program5
#define GL_NV_tessellation_program5 1
#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
@ -9625,7 +9718,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void
typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
@ -9636,7 +9729,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd
GLAPI void APIENTRY glVDPAUFiniNV (void);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);

@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright (c) 2013 The Khronos Group Inc.
** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@ -33,10 +33,10 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
** Khronos $Revision: 23730 $ on $Date: 2013-10-28 15:16:34 -0700 (Mon, 28 Oct 2013) $
** Khronos $Revision: 25923 $ on $Date: 2014-03-17 03:54:56 -0700 (Mon, 17 Mar 2014) $
*/
#define GLX_GLXEXT_VERSION 20131028
#define GLX_GLXEXT_VERSION 20140317
/* Generated C header for:
* API: glx
@ -49,6 +49,7 @@ extern "C" {
#ifndef GLX_VERSION_1_3
#define GLX_VERSION_1_3 1
typedef XID GLXContextID;
typedef struct __GLXFBConfigRec *GLXFBConfig;
typedef XID GLXWindow;
typedef XID GLXPbuffer;
@ -272,7 +273,6 @@ __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
#ifndef GLX_EXT_import_context
#define GLX_EXT_import_context 1
typedef XID GLXContextID;
#define GLX_SHARE_CONTEXT_EXT 0x800A
#define GLX_VISUAL_ID_EXT 0x800B
#define GLX_SCREEN_EXT 0x800C
@ -407,6 +407,32 @@ GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixm
#endif
#endif /* GLX_MESA_pixmap_colormap */
#ifndef GLX_MESA_query_renderer
#define GLX_MESA_query_renderer 1
#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
#define GLX_RENDERER_VERSION_MESA 0x8185
#define GLX_RENDERER_ACCELERATED_MESA 0x8186
#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
#define GLX_RENDERER_ID_MESA 0x818E
typedef Bool ( *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value);
typedef const char *( *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
typedef Bool ( *PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
typedef const char *( *PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute);
#ifdef GLX_GLXEXT_PROTOTYPES
Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int *value);
const char *glXQueryCurrentRendererStringMESA (int attribute);
Bool glXQueryRendererIntegerMESA (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
const char *glXQueryRendererStringMESA (Display *dpy, int screen, int renderer, int attribute);
#endif
#endif /* GLX_MESA_query_renderer */
#ifndef GLX_MESA_release_buffers
#define GLX_MESA_release_buffers 1
typedef Bool ( *PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
@ -433,6 +459,14 @@ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLe
#endif
#endif /* GLX_NV_copy_image */
#ifndef GLX_NV_delay_before_swap
#define GLX_NV_delay_before_swap 1
typedef Bool ( *PFNGLXDELAYBEFORESWAPNVPROC) (Display *dpy, GLXDrawable drawable, GLfloat seconds);
#ifdef GLX_GLXEXT_PROTOTYPES
Bool glXDelayBeforeSwapNV (Display *dpy, GLXDrawable drawable, GLfloat seconds);
#endif
#endif /* GLX_NV_delay_before_swap */
#ifndef GLX_NV_float_buffer
#define GLX_NV_float_buffer 1
#define GLX_FLOAT_COMPONENTS_NV 0x20B0

@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright (c) 2013 The Khronos Group Inc.
** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
** Khronos $Revision: 23730 $ on $Date: 2013-10-28 15:16:34 -0700 (Mon, 28 Oct 2013) $
** Khronos $Revision: 25923 $ on $Date: 2014-03-17 03:54:56 -0700 (Mon, 17 Mar 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@ -41,7 +41,7 @@ extern "C" {
#include <windows.h>
#endif
#define WGL_WGLEXT_VERSION 20131028
#define WGL_WGLEXT_VERSION 20140317
/* Generated C header for:
* API: wgl

File diff suppressed because it is too large Load Diff

@ -109,6 +109,17 @@ struct CGlExtensions
bool OESDrawTexture;
bool OESMapBuffer;
// extensions to get memory info
// GL_NVX_gpu_memory_info
bool NVXGPUMemoryInfo;
// GL_ATI_meminfo
bool ATIMeminfo;
// WGL_AMD_gpu_association
bool WGLAMDGPUAssociation;
public:
/// \name Disable Hardware feature. False by default. setuped by IDriver
@ -151,7 +162,6 @@ public:
ATIVertexArrayObject= false;
ATIEnvMapBumpMap = false;
ATIFragmentShader = false;
ATIVertexArrayObject = false;
ATIMapObjectBuffer = false;
ATIVertexAttribArrayObject = false;
EXTVertexShader= false;
@ -176,6 +186,10 @@ public:
OESDrawTexture = false;
OESMapBuffer = false;
NVXGPUMemoryInfo = false;
ATIMeminfo = false;
WGLAMDGPUAssociation = false;
/// \name Disable Hardware feature. False by default. setuped by IDriver
DisableHardwareVertexProgram= false;
DisableHardwarePixelProgram= false;
@ -225,12 +239,15 @@ public:
result += NVOcclusionQuery ? "NVOcclusionQuery " : "";
result += NVStateVARWithoutFlush ? "NVStateVARWithoutFlush " : "";
result += ARBMultisample ? "ARBMultisample " : "";
result += NVXGPUMemoryInfo ? "NVXGPUMemoryInfo " : "";
result += ATIMeminfo ? "ATIMeminfo " : "";
#ifdef NL_OS_WINDOWS
result += "\n WindowsGL: ";
result += WGLARBPBuffer ? "WGLARBPBuffer " : "";
result += WGLARBPixelFormat ? "WGLARBPixelFormat " : "";
result += WGLEXTSwapControl ? "WGLEXTSwapControl " : "";
result += WGLAMDGPUAssociation ? "WGLAMDGPUAssociation " : "";
#elif defined(NL_OS_MAC)
#elif defined(NL_OS_UNIX)
result += "\n GLX: ";
@ -294,230 +311,228 @@ void registerGlExtensions(CGlExtensions &ext);
// OES_mapbuffer.
//===============
extern NEL_PFNGLMAPBUFFEROESPROC nglMapBufferOES;
extern NEL_PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES;
extern NEL_PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES;
extern NEL_PFNGLBUFFERSUBDATAPROC nglBufferSubData;
extern PFNGLMAPBUFFEROESPROC nglMapBufferOES;
extern PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES;
extern PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES;
extern PFNGLDRAWTEXFOESPROC nglDrawTexfOES;
// GL_OES_framebuffer_object
extern NEL_PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES;
extern NEL_PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES;
extern NEL_PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES;
extern NEL_PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES;
extern NEL_PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES;
extern NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES;
extern NEL_PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES;
extern NEL_PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES;
extern NEL_PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES;
extern NEL_PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES;
extern NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES;
extern NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES;
extern NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES;
extern NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES;
extern NEL_PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES;
extern PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES;
extern PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES;
extern PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES;
extern PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES;
extern PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES;
extern PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES;
extern PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES;
extern PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES;
extern PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES;
extern PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES;
extern PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES;
extern PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES;
extern PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES;
extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES;
extern PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES;
// GL_OES_texture_cube_map
extern NEL_PFNGLTEXGENFOESPROC nglTexGenfOES;
extern NEL_PFNGLTEXGENFVOESPROC nglTexGenfvOES;
extern NEL_PFNGLTEXGENIOESPROC nglTexGeniOES;
extern NEL_PFNGLTEXGENIVOESPROC nglTexGenivOES;
extern NEL_PFNGLTEXGENXOESPROC nglTexGenxOES;
extern NEL_PFNGLTEXGENXVOESPROC nglTexGenxvOES;
extern NEL_PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES;
extern NEL_PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES;
extern NEL_PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES;
extern PFNGLTEXGENFOESPROC nglTexGenfOES;
extern PFNGLTEXGENFVOESPROC nglTexGenfvOES;
extern PFNGLTEXGENIOESPROC nglTexGeniOES;
extern PFNGLTEXGENIVOESPROC nglTexGenivOES;
extern PFNGLTEXGENXOESPROC nglTexGenxOES;
extern PFNGLTEXGENXVOESPROC nglTexGenxvOES;
extern PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES;
extern PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES;
extern PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES;
#else
// ARB_multitexture
//=================
extern NEL_PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB;
extern NEL_PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB;
extern NEL_PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB;
extern NEL_PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB;
extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
extern NEL_PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB;
extern NEL_PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB;
extern NEL_PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB;
extern NEL_PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB;
extern NEL_PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB;
extern NEL_PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB;
extern NEL_PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB;
extern NEL_PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB;
extern NEL_PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB;
extern NEL_PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB;
extern NEL_PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB;
extern NEL_PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB;
extern NEL_PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB;
extern NEL_PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB;
extern NEL_PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB;
extern NEL_PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB;
extern NEL_PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB;
extern NEL_PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB;
extern NEL_PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB;
extern NEL_PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB;
extern NEL_PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB;
extern NEL_PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB;
extern NEL_PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB;
extern NEL_PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB;
extern NEL_PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB;
extern NEL_PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB;
extern NEL_PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB;
extern NEL_PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB;
extern NEL_PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB;
extern PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB;
extern PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB;
extern PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB;
extern PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB;
extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
extern PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB;
extern PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB;
extern PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB;
extern PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB;
extern PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB;
extern PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB;
extern PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB;
extern PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB;
extern PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB;
extern PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB;
extern PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB;
extern PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB;
extern PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB;
extern PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB;
extern PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB;
extern PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB;
extern PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB;
extern PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB;
extern PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB;
extern PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB;
extern PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB;
extern PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB;
extern PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB;
extern PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB;
extern PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB;
extern PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB;
extern PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB;
extern PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB;
extern PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB;
// ARB_TextureCompression.
//========================
extern NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB;
extern NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB;
extern NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB;
extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB;
extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB;
extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB;
extern NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB;
extern PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB;
extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB;
extern PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB;
extern PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB;
extern PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB;
extern PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB;
extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB;
// VertexArrayRangeNV.
//====================
extern NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV;
extern NEL_PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV;
extern PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV;
extern PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV;
#ifdef NL_OS_WINDOWS
extern PFNWGLALLOCATEMEMORYNVPROC nwglAllocateMemoryNV;
extern PFNWGLFREEMEMORYNVPROC nwglFreeMemoryNV;
#elif defined(NL_OS_UNIX) && !defined(NL_OS_MAC)
extern NEL_PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV;
extern NEL_PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV;
extern PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV;
extern PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV;
#endif
// FenceNV.
//====================
extern NEL_PFNGLDELETEFENCESNVPROC nglDeleteFencesNV;
extern NEL_PFNGLGENFENCESNVPROC nglGenFencesNV;
extern NEL_PFNGLISFENCENVPROC nglIsFenceNV;
extern NEL_PFNGLTESTFENCENVPROC nglTestFenceNV;
extern NEL_PFNGLGETFENCEIVNVPROC nglGetFenceivNV;
extern NEL_PFNGLFINISHFENCENVPROC nglFinishFenceNV;
extern NEL_PFNGLSETFENCENVPROC nglSetFenceNV;
extern PFNGLDELETEFENCESNVPROC nglDeleteFencesNV;
extern PFNGLGENFENCESNVPROC nglGenFencesNV;
extern PFNGLISFENCENVPROC nglIsFenceNV;
extern PFNGLTESTFENCENVPROC nglTestFenceNV;
extern PFNGLGETFENCEIVNVPROC nglGetFenceivNV;
extern PFNGLFINISHFENCENVPROC nglFinishFenceNV;
extern PFNGLSETFENCENVPROC nglSetFenceNV;
// VertexWeighting.
//==================
extern NEL_PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT;
extern NEL_PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT;
extern NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT;
extern PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT;
extern PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT;
extern PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT;
// VertexProgramExtension.
//========================
extern NEL_PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV;
extern NEL_PFNGLBINDPROGRAMNVPROC nglBindProgramNV;
extern NEL_PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV;
extern NEL_PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV;
extern NEL_PFNGLGENPROGRAMSNVPROC nglGenProgramsNV;
extern NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV;
extern NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV;
extern NEL_PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV;
extern NEL_PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV;
extern NEL_PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV;
extern NEL_PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV;
extern NEL_PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV;
extern NEL_PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV;
extern NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV;
extern NEL_PFNGLISPROGRAMNVPROC nglIsProgramNV;
extern NEL_PFNGLLOADPROGRAMNVPROC nglLoadProgramNV;
extern NEL_PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV;
extern NEL_PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV;
extern NEL_PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV;
extern NEL_PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV;
extern NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV;
extern NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV;
extern NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV;
extern NEL_PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV;
extern NEL_PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV;
extern NEL_PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV;
extern NEL_PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV;
extern NEL_PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV;
extern NEL_PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV;
extern NEL_PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV;
extern NEL_PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV;
extern NEL_PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV;
extern NEL_PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV;
extern NEL_PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV;
extern NEL_PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV;
extern NEL_PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV;
extern NEL_PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV;
extern NEL_PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV;
extern NEL_PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV;
extern NEL_PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV;
extern NEL_PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV;
extern NEL_PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV;
extern NEL_PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV;
extern NEL_PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV;
extern NEL_PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV;
extern NEL_PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV;
extern NEL_PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV;
extern NEL_PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV;
extern NEL_PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV;
extern NEL_PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV;
extern NEL_PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV;
extern NEL_PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV;
extern NEL_PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV;
extern NEL_PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV;
extern NEL_PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV;
extern NEL_PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV;
extern NEL_PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV;
extern NEL_PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV;
extern NEL_PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV;
extern NEL_PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV;
extern NEL_PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV;
extern NEL_PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV;
extern NEL_PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV;
extern PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV;
extern PFNGLBINDPROGRAMNVPROC nglBindProgramNV;
extern PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV;
extern PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV;
extern PFNGLGENPROGRAMSNVPROC nglGenProgramsNV;
extern PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV;
extern PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV;
extern PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV;
extern PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV;
extern PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV;
extern PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV;
extern PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV;
extern PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV;
extern PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV;
extern PFNGLISPROGRAMNVPROC nglIsProgramNV;
extern PFNGLLOADPROGRAMNVPROC nglLoadProgramNV;
extern PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV;
extern PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV;
extern PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV;
extern PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV;
extern PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV;
extern PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV;
extern PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV;
extern PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV;
extern PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV;
extern PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV;
extern PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV;
extern PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV;
extern PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV;
extern PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV;
extern PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV;
extern PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV;
extern PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV;
extern PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV;
extern PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV;
extern PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV;
extern PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV;
extern PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV;
extern PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV;
extern PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV;
extern PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV;
extern PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV;
extern PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV;
extern PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV;
extern PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV;
extern PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV;
extern PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV;
extern PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV;
extern PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV;
extern PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV;
extern PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV;
extern PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV;
extern PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV;
extern PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV;
extern PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV;
extern PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV;
extern PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV;
extern PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV;
extern PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV;
extern PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV;
extern PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV;
extern PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV;
extern PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV;
// VertexShaderExtension.
//========================
extern NEL_PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT;
extern NEL_PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT;
extern NEL_PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT;
extern NEL_PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT;
extern NEL_PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT;
extern NEL_PFNGLSHADEROP1EXTPROC nglShaderOp1EXT;
extern NEL_PFNGLSHADEROP2EXTPROC nglShaderOp2EXT;
extern NEL_PFNGLSHADEROP3EXTPROC nglShaderOp3EXT;
extern NEL_PFNGLSWIZZLEEXTPROC nglSwizzleEXT;
extern NEL_PFNGLWRITEMASKEXTPROC nglWriteMaskEXT;
extern NEL_PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT;
extern NEL_PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT;
extern NEL_PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT;
extern NEL_PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT;
extern NEL_PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT;
extern NEL_PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT;
extern NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT;
extern NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT;
extern NEL_PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT;
extern NEL_PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT;
extern NEL_PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT;
extern NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT;
extern NEL_PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT;
extern NEL_PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT;
extern NEL_PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT;
extern NEL_PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT;
extern NEL_PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT;
extern NEL_PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT;
extern NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT;
extern NEL_PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT;
extern NEL_PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT;
extern NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT;
extern NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT;
extern NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT;
extern PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT;
extern PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT;
extern PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT;
extern PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT;
extern PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT;
extern PFNGLSHADEROP1EXTPROC nglShaderOp1EXT;
extern PFNGLSHADEROP2EXTPROC nglShaderOp2EXT;
extern PFNGLSHADEROP3EXTPROC nglShaderOp3EXT;
extern PFNGLSWIZZLEEXTPROC nglSwizzleEXT;
extern PFNGLWRITEMASKEXTPROC nglWriteMaskEXT;
extern PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT;
extern PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT;
extern PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT;
extern PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT;
extern PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT;
extern PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT;
extern PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT;
extern PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT;
extern PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT;
extern PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT;
extern PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT;
extern PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT;
extern PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT;
extern PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT;
extern PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT;
extern PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT;
extern PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT;
extern PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT;
extern PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT;
extern PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT;
extern PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT;
extern PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT;
extern PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT;
extern PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT;
// ATI_envmap_bumpmap extension
@ -530,100 +545,100 @@ extern PFNGLGETTEXBUMPPARAMETERFVATIPROC nglGetTexBumpParameterfvATI;
// SecondaryColor extension
//========================
extern NEL_PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT;
extern NEL_PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT;
extern NEL_PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT;
extern NEL_PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT;
extern NEL_PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT;
extern NEL_PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT;
extern NEL_PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT;
extern NEL_PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT;
extern NEL_PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT;
extern NEL_PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT;
extern NEL_PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT;
extern NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT;
extern NEL_PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT;
extern NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT;
extern NEL_PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT;
extern NEL_PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT;
extern NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT;
extern PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT;
extern PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT;
extern PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT;
extern PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT;
extern PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT;
extern PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT;
extern PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT;
extern PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT;
extern PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT;
extern PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT;
extern PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT;
extern PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT;
extern PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT;
extern PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT;
extern PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT;
extern PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT;
extern PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT;
// BlendColor extension
//========================
extern NEL_PFNGLBLENDCOLOREXTPROC nglBlendColorEXT;
extern PFNGLBLENDCOLOREXTPROC nglBlendColorEXT;
// GL_ATI_vertex_array_object extension
//========================
extern NEL_PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI;
extern NEL_PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI;
extern NEL_PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI;
extern NEL_PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI;
extern NEL_PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI;
extern NEL_PFNGLDELETEOBJECTBUFFERATIPROC nglDeleteObjectBufferATI;
extern NEL_PFNGLARRAYOBJECTATIPROC nglArrayObjectATI;
extern NEL_PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI;
extern NEL_PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI;
extern NEL_PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI;
extern NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI;
extern NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI;
extern PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI;
extern PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI;
extern PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI;
extern PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI;
extern PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI;
extern PFNGLFREEOBJECTBUFFERATIPROC nglFreeObjectBufferATI;
extern PFNGLARRAYOBJECTATIPROC nglArrayObjectATI;
extern PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI;
extern PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI;
extern PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI;
extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI;
extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI;
// GL_ATI_map_object_buffer
//===================================
extern NEL_PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI;
extern NEL_PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI;
extern PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI;
extern PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI;
// GL_ATI_fragment_shader extension
//===================================
extern NEL_PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI;
extern NEL_PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI;
extern NEL_PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI;
extern NEL_PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI;
extern NEL_PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI;
extern NEL_PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI;
extern NEL_PFNGLSAMPLEMAPATIPROC nglSampleMapATI;
extern NEL_PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI;
extern NEL_PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI;
extern NEL_PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI;
extern NEL_PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI;
extern NEL_PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI;
extern NEL_PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI;
extern NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI;
extern PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI;
extern PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI;
extern PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI;
extern PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI;
extern PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI;
extern PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI;
extern PFNGLSAMPLEMAPATIPROC nglSampleMapATI;
extern PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI;
extern PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI;
extern PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI;
extern PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI;
extern PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI;
extern PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI;
extern PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI;
// GL_ATI_vertex_attrib_array_object
//==================================
extern NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI;
extern NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI;
extern NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI;
extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI;
extern PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI;
extern PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI;
// GL_ARB_fragment_shader_extension
//==================================
extern NEL_PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB;
extern NEL_PFNGLBINDPROGRAMARBPROC nglBindProgramARB;
extern NEL_PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB;
extern NEL_PFNGLGENPROGRAMSARBPROC nglGenProgramsARB;
extern NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB;
extern NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB;
extern NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB;
extern NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB;
extern NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB;
extern NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB;
extern NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB;
extern NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB;
extern NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB;
extern NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB;
extern NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB;
extern NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB;
extern NEL_PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB;
extern NEL_PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB;
extern NEL_PFNGLISPROGRAMARBPROC nglIsProgramARB;
extern PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB;
extern PFNGLBINDPROGRAMARBPROC nglBindProgramARB;
extern PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB;
extern PFNGLGENPROGRAMSARBPROC nglGenProgramsARB;
extern PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB;
extern PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB;
extern PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB;
extern PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB;
extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB;
extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB;
extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB;
extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB;
extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB;
extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB;
extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB;
extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB;
extern PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB;
extern PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB;
extern PFNGLISPROGRAMARBPROC nglIsProgramARB;
// GL_ARB_vertex_buffer_object
//==================================
@ -708,13 +723,13 @@ extern PFNGLISPROGRAMARBPROC nglIsProgramARB;
// GL_NV_occlusion_query
//==================================
extern NEL_PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV;
extern NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV;
extern NEL_PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV;
extern NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV;
extern NEL_PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV;
extern NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV;
extern NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV;
extern PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV;
extern PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV;
extern PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV;
extern PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV;
extern PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV;
extern PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV;
extern PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV;
@ -745,44 +760,58 @@ extern PFNWGLGETSWAPINTERVALEXTPROC nwglGetSwapIntervalEXT;
// WGL_ARB_extensions_string
extern PFNWGLGETEXTENSIONSSTRINGARBPROC nwglGetExtensionsStringARB;
// WGL_AMD_gpu_association
//========================
extern PFNWGLGETGPUIDSAMDPROC nwglGetGPUIDsAMD;
extern PFNWGLGETGPUINFOAMDPROC nwglGetGPUInfoAMD;
extern PFNWGLGETCONTEXTGPUIDAMDPROC nwglGetContextGPUIDAMD;
extern PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC nwglCreateAssociatedContextAMD;
extern PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC nwglCreateAssociatedContextAttribsAMD;
extern PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC nwglDeleteAssociatedContextAMD;
extern PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurrentAMD;
extern PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD;
extern PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD;
#elif defined(NL_OS_MAC)
#elif defined(NL_OS_UNIX)
// Swap control extensions
//===========================
extern NEL_PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT;
extern PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT;
extern PFNGLXSWAPINTERVALSGIPROC nglXSwapIntervalSGI;
extern NEL_PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA;
extern NEL_PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA;
extern PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA;
extern PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA;
#endif
// GL_EXT_framebuffer_object
extern NEL_PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT;
extern NEL_PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT;
extern NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT;
extern NEL_PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT;
extern NEL_PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT;
extern NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT;
extern NEL_PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT;
extern NEL_PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT;
extern NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT;
extern NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT;
extern NEL_PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT;
extern NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT;
extern NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT;
extern NEL_PFNGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT;
extern PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT;
extern PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT;
extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT;
extern PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT;
extern PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT;
extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT;
extern PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT;
extern PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT;
extern PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT;
extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT;
extern PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT;
extern PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT;
extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT;
extern PFNGLGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT;
// GL_EXT_framebuffer_blit
extern NEL_PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT;
extern PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT;
// GL_EXT_framebuffer_multisample
extern NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT;
extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT;
// GL_ARB_multisample
extern NEL_PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB;
extern PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB;
#endif // USE_OPENGLES

@ -25,44 +25,8 @@ extern "C" {
#endif
#ifdef USE_OPENGLES
// OES_mapbuffer
//==============
typedef void* (APIENTRY * NEL_PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
typedef GLboolean (APIENTRY * NEL_PFNGLUNMAPBUFFEROESPROC) (GLenum target);
typedef void (APIENTRY * NEL_PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void** params);
typedef void (APIENTRY * NEL_PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
// GL_OES_framebuffer_object
//==================================
typedef GLboolean (APIENTRY * NEL_PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer);
typedef void (APIENTRY * NEL_PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer);
typedef void (APIENTRY * NEL_PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers);
typedef void (APIENTRY * NEL_PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers);
typedef void (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (APIENTRY * NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params);
typedef GLboolean (APIENTRY * NEL_PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer);
typedef void (APIENTRY * NEL_PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer);
typedef void (APIENTRY * NEL_PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers);
typedef void (APIENTRY * NEL_PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers);
typedef GLenum (APIENTRY * NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target);
typedef void (APIENTRY * NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void (APIENTRY * NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (APIENTRY * NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
typedef void (APIENTRY * NEL_PFNGLGENERATEMIPMAPOESPROC) (GLenum target);
// GL_OES_texture_cube_map
//==================================
typedef void (APIENTRY * NEL_PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param);
typedef void (APIENTRY * NEL_PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param);
typedef void (APIENTRY * NEL_PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params);
typedef void (APIENTRY * NEL_PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
typedef void (APIENTRY * NEL_PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
typedef void (APIENTRY * NEL_PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
// use same defines for OpenGL and OpenGL ES to simplify the code
#define GL_MULTISAMPLE_ARB GL_MULTISAMPLE
#define GL_TEXTURE_CUBE_MAP_ARB GL_TEXTURE_CUBE_MAP_OES
#define GL_NONE 0
@ -86,346 +50,6 @@ typedef void (APIENTRY * NEL_PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pnam
#else
// ***************************************************************************
// ***************************************************************************
// The NEL Functions Typedefs.
// Must do it for compatibilities with futures version of gl.h
// eg: version 1.2 does not define PFNGLACTIVETEXTUREARBPROC. Hence, do it now, with our special name
// ***************************************************************************
// ***************************************************************************
#define WGL_COVERAGE_SAMPLES_NV 0x2042
#define WGL_COLOR_SAMPLES_NV 0x20B9
// ARB_multitexture
//=================
typedef void (APIENTRY * NEL_PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
typedef void (APIENTRY * NEL_PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
// ARB_TextureCompression.
//========================
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY * NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
// VertexArrayRangeNV.
//====================
typedef void (APIENTRY * NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
typedef void (APIENTRY * NEL_PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid *pointer);
// FenceNV.
//====================
typedef void (APIENTRY * NEL_PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
typedef void (APIENTRY * NEL_PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
typedef GLboolean (APIENTRY * NEL_PFNGLISFENCENVPROC) (GLuint fence);
typedef GLboolean (APIENTRY * NEL_PFNGLTESTFENCENVPROC) (GLuint fence);
typedef void (APIENTRY * NEL_PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLFINISHFENCENVPROC) (GLuint fence);
typedef void (APIENTRY * NEL_PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
// VertexWeighting.
//==================
typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
// VertexProgramExtension.
//========================
typedef GLboolean (APIENTRY * NEL_PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
typedef void (APIENTRY * NEL_PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
typedef void (APIENTRY * NEL_PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
typedef void (APIENTRY * NEL_PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
typedef void (APIENTRY * NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
typedef void (APIENTRY * NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
typedef void (APIENTRY * NEL_PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
typedef GLboolean (APIENTRY * NEL_PFNGLISPROGRAMNVPROC) (GLuint id);
typedef void (APIENTRY * NEL_PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
typedef void (APIENTRY * NEL_PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
// VertexShaderExtension (EXT)
//============================
typedef void (APIENTRY * NEL_PFNGLBEGINVERTEXSHADEREXTPROC) ( void );
typedef void (APIENTRY * NEL_PFNGLENDVERTEXSHADEREXTPROC) ( void );
typedef void (APIENTRY * NEL_PFNGLBINDVERTEXSHADEREXTPROC) ( GLuint id );
typedef GLuint (APIENTRY * NEL_PFNGLGENVERTEXSHADERSEXTPROC) ( GLuint range );
typedef void (APIENTRY * NEL_PFNGLDELETEVERTEXSHADEREXTPROC) ( GLuint id );
typedef void (APIENTRY * NEL_PFNGLSHADEROP1EXTPROC) ( GLenum op, GLuint res, GLuint arg1 );
typedef void (APIENTRY * NEL_PFNGLSHADEROP2EXTPROC) ( GLenum op, GLuint res, GLuint arg1, GLuint arg2 );
typedef void (APIENTRY * NEL_PFNGLSHADEROP3EXTPROC) ( GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3 );
typedef void (APIENTRY * NEL_PFNGLSWIZZLEEXTPROC) ( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW );
typedef void (APIENTRY * NEL_PFNGLWRITEMASKEXTPROC) ( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW );
typedef void (APIENTRY * NEL_PFNGLINSERTCOMPONENTEXTPROC) ( GLuint res, GLuint src, GLuint num );
typedef void (APIENTRY * NEL_PFNGLEXTRACTCOMPONENTEXTPROC) ( GLuint res, GLuint src, GLuint num );
typedef GLuint (APIENTRY * NEL_PFNGLGENSYMBOLSEXTPROC) ( GLenum datatype, GLenum storagetype, GLenum range, GLuint components ) ;
typedef void (APIENTRY * NEL_PFNGLSETINVARIANTEXTPROC) ( GLuint id, GLenum type, void *addr );
typedef void (APIENTRY * NEL_PFNGLSETLOCALCONSTANTEXTPROC) ( GLuint id, GLenum type, void *addr );
typedef void (APIENTRY * NEL_PFNGLVARIANTPOINTEREXTPROC) ( GLuint id, GLenum type, GLuint stride, void *addr );
typedef void (APIENTRY * NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) ( GLuint id);
typedef void (APIENTRY * NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) ( GLuint id);
typedef GLuint (APIENTRY * NEL_PFNGLBINDLIGHTPARAMETEREXTPROC) ( GLenum light, GLenum value);
typedef GLuint (APIENTRY * NEL_PFNGLBINDMATERIALPARAMETEREXTPROC) ( GLenum face, GLenum value);
typedef GLuint (APIENTRY * NEL_PFNGLBINDTEXGENPARAMETEREXTPROC) ( GLenum unit, GLenum coord, GLenum value);
typedef GLuint (APIENTRY * NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) ( GLenum unit, GLenum value);
typedef GLuint (APIENTRY * NEL_PFNGLBINDPARAMETEREXTPROC) ( GLenum value);
typedef GLboolean (APIENTRY * NEL_PFNGLISVARIANTENABLEDEXTPROC) ( GLuint id, GLenum cap);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTPOINTERVEXTPROC) ( GLuint id, GLenum value, void **data);
typedef void (APIENTRY * NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data);
typedef void (APIENTRY * NEL_PFNGLGETINVARIANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data);
typedef void (APIENTRY * NEL_PFNGLGETINVARIANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data);
typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data);
typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data);
typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data);
// SecondaryColor extension
//========================
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer);
// BlendColor extension
//========================
typedef void (APIENTRY * NEL_PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
// GL_ATI_vertex_array_object extension
//========================
typedef GLuint (APIENTRY * NEL_PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
typedef GLboolean (APIENTRY * NEL_PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
typedef void (APIENTRY * NEL_PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
typedef void (APIENTRY * NEL_PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer);
typedef void (APIENTRY * NEL_PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
typedef void (APIENTRY * NEL_PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
typedef void (APIENTRY * NEL_PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
typedef void (APIENTRY * NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
// GL_ATI_fragment_shader extension
//==================================
typedef GLuint (APIENTRY *NEL_PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range);
typedef GLvoid (APIENTRY *NEL_PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id);
typedef GLvoid (APIENTRY *NEL_PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id);
typedef GLvoid (APIENTRY *NEL_PFNGLBEGINFRAGMENTSHADERATIPROC)();
typedef GLvoid (APIENTRY *NEL_PFNGLENDFRAGMENTSHADERATIPROC)();
typedef GLvoid (APIENTRY *NEL_PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle);
typedef GLvoid (APIENTRY *NEL_PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle);
typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
GLuint dstMod, GLuint arg1, GLuint arg1Rep,
GLuint arg1Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
GLuint dstMod, GLuint arg1, GLuint arg1Rep,
GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
GLuint arg2Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
GLuint dstMod, GLuint arg1, GLuint arg1Rep,
GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
GLuint arg3Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
GLuint arg2, GLuint arg2Rep, GLuint arg2Mod,
GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
typedef GLvoid (APIENTRY *NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value);
// GL_ATI_map_object_buffer
//==================================
typedef void *(APIENTRY * NEL_PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer);
typedef void (APIENTRY * NEL_PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer);
// GL_ATI_vertex_attrib_array_object
//==================================
typedef GLvoid (APIENTRY * NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
typedef GLvoid (APIENTRY * NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat *params);
typedef GLvoid (APIENTRY * NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint *params);
// GL_ARB_fragment_program
//==================================
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len,const GLvoid *string);
typedef GLvoid (APIENTRY *NEL_PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program);
typedef GLvoid (APIENTRY *NEL_PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs);
typedef GLvoid (APIENTRY *NEL_PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, int *params);
typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, GLvoid *string);
typedef GLboolean (APIENTRY *NEL_PFNGLISPROGRAMARBPROC)(GLuint program);
typedef GLboolean (APIENTRY * NEL_PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
typedef GLboolean (APIENTRY * NEL_PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
typedef GLenum (APIENTRY * NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum pname);
typedef GLvoid (APIENTRY * NEL_PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
typedef GLvoid (APIENTRY * NEL_PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef GLvoid (APIENTRY * NEL_PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
typedef GLvoid (APIENTRY * NEL_PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef GLvoid (APIENTRY * NEL_PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
typedef GLvoid (APIENTRY * NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
typedef GLvoid (APIENTRY * NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
typedef GLvoid (APIENTRY * NEL_PFNGENERATEMIPMAPEXTPROC) (GLenum target);
typedef GLvoid (APIENTRY * NEL_PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
#ifndef NL_GL_NV_occlusion_query
#define NL_GL_NV_occlusion_query 1
typedef GLvoid (APIENTRY * NEL_PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
typedef GLvoid (APIENTRY * NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
typedef GLboolean (APIENTRY * NEL_PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
typedef GLvoid (APIENTRY * NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
typedef GLvoid (APIENTRY * NEL_PFNGLENDOCCLUSIONQUERYNVPROC) ();
typedef GLvoid (APIENTRY * NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
typedef GLvoid (APIENTRY * NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
#endif /* GL_NV_occlusion_query */
#ifndef NL_GL_ARB_multisample
#define NL_GL_ARB_multisample 1
typedef GLvoid (APIENTRY * NEL_PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
#endif
#if defined(NL_OS_MAC)
// Mac GL extensions
@ -433,18 +57,6 @@ typedef GLvoid (APIENTRY * NEL_PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, G
#elif defined(NL_OS_UNIX)
// GLX extensions
#ifndef NL_GLX_EXT_swap_control
#define NL_GLX_EXT_swap_control 1
#ifndef GLX_EXT_swap_control
#define GLX_SWAP_INTERVAL_EXT 0x20F1
#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
#endif
typedef GLint (APIENTRY * NEL_PFNGLXSWAPINTERVALEXTPROC) (Display *dpy, GLXDrawable drawable, GLint interval);
#endif // NL_GLX_EXT_swap_control
#ifndef NL_GLX_MESA_swap_control
#define NL_GLX_MESA_swap_control 1

@ -1809,7 +1809,7 @@ void CDriverGL::fenceOnCurVBHardIfNeeded(IVertexBufferHardGL *newVBHard)
#ifndef USE_OPENGLES
// If old is not a VBHard, or if not a NVidia VBHard, no-op.
if( _CurrentVertexBufferHard==NULL || !_CurrentVertexBufferHard->VBType == IVertexBufferHardGL::NVidiaVB)
if( _CurrentVertexBufferHard==NULL || _CurrentVertexBufferHard->VBType != IVertexBufferHardGL::NVidiaVB)
return;
// if we do not activate the same (NB: newVBHard==NULL if not a VBHard).

@ -551,7 +551,7 @@ void CVertexArrayRangeATI::free()
_HeapMemory.reset();
// Free special memory.
nglDeleteObjectBufferATI(_VertexObjectId);
nglFreeObjectBufferATI(_VertexObjectId);
_Allocated= false;
_VertexArraySize= 0;
@ -839,7 +839,7 @@ bool CVertexArrayRangeMapObjectATI::allocate(uint32 size, CVertexBuffer::TPrefer
if (vertexObjectId)
{
// free the object
nglDeleteObjectBufferATI(vertexObjectId);
nglFreeObjectBufferATI(vertexObjectId);
//
_SizeAllocated = size;
_VBType = vbType;
@ -924,7 +924,7 @@ CVertexBufferHardGLMapObjectATI::CVertexBufferHardGLMapObjectATI(CDriverGL *drv,
CVertexBufferHardGLMapObjectATI::~CVertexBufferHardGLMapObjectATI()
{
H_AUTO_OGL(CVertexBufferHardGLMapObjectATI_CVertexBufferHardGLMapObjectATIDtor)
if (_VertexObjectId) nglDeleteObjectBufferATI(_VertexObjectId);
if (_VertexObjectId) nglFreeObjectBufferATI(_VertexObjectId);
#ifdef NL_DEBUG
if (_VertexPtr)
{
@ -1114,7 +1114,7 @@ void CVertexArrayRangeMapObjectATI::updateLostBuffers()
{
nlassert((*it)->_VertexObjectId);
nlassert(nglIsObjectBufferATI((*it)->_VertexObjectId));
nglDeleteObjectBufferATI((*it)->_VertexObjectId);
nglFreeObjectBufferATI((*it)->_VertexObjectId);
(*it)->_VertexObjectId = 0;
(*it)->VB->setLocation(CVertexBuffer::NotResident);
}

@ -14,6 +14,9 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef STDOPENGL_H
#define STDOPENGL_H
#include "nel/misc/types_nl.h"
#include <cstdlib>
@ -67,5 +70,33 @@
#include "nel/misc/mem_stream.h"
#include "nel/misc/time_nl.h"
#include "nel/misc/command.h"
#include "nel/misc/matrix.h"
#include "nel/misc/smart_ptr.h"
#include "nel/misc/rgba.h"
#include "nel/misc/event_emitter.h"
#include "nel/misc/bit_set.h"
#include "nel/misc/hierarchical_timer.h"
#include "nel/misc/bitmap.h"
#include "nel/misc/heap_memory.h"
#include "nel/misc/event_emitter_multi.h"
#include "nel/misc/time_nl.h"
#include "nel/misc/rect.h"
#include "nel/misc/mouse_device.h"
#include "nel/misc/dynloadlib.h"
#include "nel/misc/file.h"
#include "nel/3d/driver.h"
#include "nel/3d/material.h"
#include "nel/3d/vertex_buffer.h"
#include "nel/3d/ptr_set.h"
#include "nel/3d/texture_cube.h"
#include "nel/3d/vertex_program_parse.h"
#include "nel/3d/viewport.h"
#include "nel/3d/scissor.h"
#include "nel/3d/light.h"
#include "nel/3d/occlusion_query.h"
#include "nel/3d/u_driver.h"
#include "nel/3d/light.h"
#include "nel/3d/index_buffer.h"
#endif

@ -4094,7 +4094,8 @@ namespace NLGUI
void CGroupHTML::requestTerminated(HTRequest * request )
{
// this callback is being called for every request terminated
if( request == _LibWWW->Request ){
if (request == _LibWWW->Request)
{
// set the browser as complete
_Browsing = false;
updateRefreshButton();

@ -31,10 +31,10 @@
#include "nel/misc/mutex.h"
#include "nel/misc/report.h"
#include "nel/misc/system_utils.h"
#include "nel/misc/variable.h"
#include "nel/misc/debug.h"
#ifdef NL_OS_WINDOWS
// these defines is for IsDebuggerPresent(). it'll not compile on windows 95
// just comment this and the IsDebuggerPresent to compile on windows 95
@ -57,6 +57,8 @@ using namespace std;
namespace NLMISC
{
CVariable<bool> StdDisplayerColor("nel", "StdDisplayerColor", "Enable colors in std displayer", true, 0, true);
static const char *LogTypeToString[][8] = {
{ "", "ERR", "WRN", "INF", "DBG", "STT", "AST", "UKN" },
{ "", "Error", "Warning", "Information", "Debug", "Statistic", "Assert", "Unknown" },
@ -139,9 +141,20 @@ void CStdDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *mess
bool needSpace = false;
//stringstream ss;
string str;
#ifdef NL_OS_UNIX
bool colorSet = false;
#endif
if (args.LogType != CLog::LOG_NO)
{
#ifdef NL_OS_UNIX
if (StdDisplayerColor.get())
{
if (args.LogType == CLog::LOG_ERROR || args.LogType == CLog::LOG_ASSERT) { str += "\e[0;30m\e[41m"; colorSet = true; } // black text, red background
else if (args.LogType == CLog::LOG_WARNING) { str += "\e[0;91m"; colorSet = true; } // bright red text
else if (args.LogType == CLog::LOG_DEBUG) { str += "\e[0;34m"; colorSet = true; } // blue text
}
#endif
//ss << logTypeToString(args.LogType);
str += logTypeToString(args.LogType);
needSpace = true;
@ -218,6 +231,13 @@ void CStdDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *mess
}
#endif // NL_OS_WINDOWS
#ifdef NL_OS_UNIX
if (colorSet)
{
str += "\e[0m";
}
#endif
// Printf ?
if (consoleMode)
{

@ -323,6 +323,23 @@ bool CI18N::parseLabel(ucstring::const_iterator &it, ucstring::const_iterator &l
ucstring::const_iterator rewind = it;
label.erase();
// first char must be A-Za-z@_
if (it != last &&
(
(*it >= '0' && *it <= '9')
|| (*it >= 'A' && *it <= 'Z')
|| (*it >= 'a' && *it <= 'z')
|| (*it == '_')
|| (*it == '@')
)
)
label.push_back(char(*it++));
else
{
it = rewind;
return false;
}
// other char must be [0-9A-Za-z@_]*
while (it != last &&
(

@ -242,11 +242,15 @@ void CSourceXAudio2::updateState()
if (!_AdpcmUtility->getSourceData())
{
_SoundDriver->getXAudio2()->CommitChanges(_OperationSet);
if (!_BufferStreaming)
{
// nldebug(NLSOUND_XAUDIO2_PREFIX "Stop");
if (FAILED(_SourceVoice->Stop(0)))
nlwarning(NLSOUND_XAUDIO2_PREFIX "FAILED Stop");
_IsPlaying = false;
}
}
}
else
{
XAUDIO2_VOICE_STATE voice_state;
@ -254,17 +258,23 @@ void CSourceXAudio2::updateState()
if (!voice_state.BuffersQueued)
{
_SoundDriver->getXAudio2()->CommitChanges(_OperationSet);
if (!_BufferStreaming)
{
// nldebug(NLSOUND_XAUDIO2_PREFIX "Stop");
if (FAILED(_SourceVoice->Stop(0)))
nlwarning(NLSOUND_XAUDIO2_PREFIX "FAILED Stop");
_IsPlaying = false;
}
}
}
}
}
/// (Internal) Submit a buffer to the XAudio2 source voice.
void CSourceXAudio2::submitBuffer(CBufferXAudio2 *ibuffer)
{
// nldebug(NLSOUND_XAUDIO2_PREFIX "submitBuffer %u", (uint32)(void *)this);
nlassert(_SourceVoice);
nlassert(ibuffer->getFormat() == _Format
&& ibuffer->getChannels() == _Channels
@ -278,9 +288,9 @@ void CSourceXAudio2::submitBuffer(CBufferXAudio2 *ibuffer)
{
XAUDIO2_BUFFER buffer;
buffer.AudioBytes = ibuffer->getSize();
buffer.Flags = _IsLooping || _BufferStreaming ? 0 : XAUDIO2_END_OF_STREAM;
buffer.Flags = (_IsLooping || _BufferStreaming) ? 0 : XAUDIO2_END_OF_STREAM;
buffer.LoopBegin = 0;
buffer.LoopCount = _IsLooping ? XAUDIO2_LOOP_INFINITE : 0;
buffer.LoopCount = (_IsLooping && !_BufferStreaming) ? XAUDIO2_LOOP_INFINITE : 0;
buffer.LoopLength = 0;
buffer.pAudioData = const_cast<BYTE *>(ibuffer->getData());
buffer.pContext = ibuffer;
@ -336,7 +346,25 @@ void CSourceXAudio2::setupVoiceSends()
void CSourceXAudio2::setStreaming(bool streaming)
{
nlassert(!_IsPlaying);
// nldebug(NLSOUND_XAUDIO2_PREFIX "setStreaming %i", (uint32)streaming);
if (_SourceVoice)
{
XAUDIO2_VOICE_STATE voice_state;
_SourceVoice->GetState(&voice_state);
if (!voice_state.BuffersQueued)
{
nlwarning(NLSOUND_XAUDIO2_PREFIX "Switched streaming mode while buffer still queued!?! Flush");
_SoundDriver->getXAudio2()->CommitChanges(_OperationSet);
if (FAILED(_SourceVoice->FlushSourceBuffers()))
nlwarning(NLSOUND_XAUDIO2_PREFIX "FAILED FlushSourceBuffers");
}
}
_BufferStreaming = streaming;
// nldebug(NLSOUND_XAUDIO2_PREFIX "setStreaming done %i", (uint32)streaming);
}
/// Set the buffer that will be played (no streaming)
@ -344,6 +372,8 @@ void CSourceXAudio2::setStaticBuffer(IBuffer *buffer)
{
nlassert(!_BufferStreaming);
// nldebug(NLSOUND_XAUDIO2_PREFIX "setStaticBuffer");
// if (buffer) // nldebug(NLSOUND_XAUDIO2_PREFIX "setStaticBuffer %s", _SoundDriver->getStringMapper()->unmap(buffer->getName()).c_str());
// else // nldebug(NLSOUND_XAUDIO2_PREFIX "setStaticBuffer NULL");
@ -364,32 +394,20 @@ IBuffer *CSourceXAudio2::getStaticBuffer()
/// Should be called by a thread which checks countStreamingBuffers every 100ms.
void CSourceXAudio2::submitStreamingBuffer(IBuffer *buffer)
{
// nldebug(NLSOUND_XAUDIO2_PREFIX "submitStreamingBuffer");
nlassert(_BufferStreaming);
// allow to change the format if not playing
if (!_IsPlaying)
{
IBuffer::TBufferFormat bufferFormat;
uint8 channels;
uint8 bitsPerSample;
uint32 frequency;
buffer->getFormat(bufferFormat, channels, bitsPerSample, frequency);
// allow to change the format if not playing
if (!_IsPlaying)
{
if (!_SourceVoice)
{
// if no source yet, prepare the format
preparePlay(bufferFormat, channels, bitsPerSample, frequency);
}
else
{
XAUDIO2_VOICE_STATE voice_state;
_SourceVoice->GetState(&voice_state);
// if no buffers queued, prepare the format
if (!voice_state.BuffersQueued)
{
preparePlay(bufferFormat, channels, bitsPerSample, frequency);
}
}
}
submitBuffer(static_cast<CBufferXAudio2 *>(buffer));
}
@ -414,9 +432,10 @@ uint CSourceXAudio2::countStreamingBuffers() const
/// Set looping on/off for future playbacks (default: off)
void CSourceXAudio2::setLooping(bool l)
{
// nldebug(NLSOUND_XAUDIO2_PREFIX "setLooping %u", (uint32)l);
nlassert(!_BufferStreaming);
// nldebug(NLSOUND_XAUDIO2_PREFIX "setLooping %u", (uint32)l);
if (_IsLooping != l)
{
_IsLooping = l;
@ -455,7 +474,7 @@ void CSourceXAudio2::setLooping(bool l)
_SourceVoice->GetState(&voice_state);
if (voice_state.BuffersQueued)
{
nlwarning(NLSOUND_XAUDIO2_PREFIX "not playing but buffer already queued???");
nlwarning(NLSOUND_XAUDIO2_PREFIX "Not playing but buffer already queued while switching loop mode!?! Flush and requeue");
if (FAILED(_SourceVoice->FlushSourceBuffers()))
nlwarning(NLSOUND_XAUDIO2_PREFIX "FAILED FlushSourceBuffers");
// queue buffer with correct looping parameters
@ -603,6 +622,7 @@ bool CSourceXAudio2::play()
// preparePlay already called,
// stop already called before going into buffer streaming
nlassert(!_IsPlaying);
nlassert(_SourceVoice);
_PlayStart = CTime::getLocalTime();
if (SUCCEEDED(_SourceVoice->Start(0))) _IsPlaying = true;
else nlwarning(NLSOUND_XAUDIO2_PREFIX "FAILED Play (_BufferStreaming)");

@ -57,15 +57,15 @@ ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)

@ -40,6 +40,20 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_disp_sheet_id.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -38,6 +38,19 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_example.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -44,9 +44,24 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)
IF(WITH_PCH)
ADD_NATIVE_PRECOMPILED_HEADER(ovqt_plugin_georges_editor ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp)
ENDIF(WITH_PCH)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -82,4 +82,18 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_gui_editor)
ADD_DEFINITIONS(-DGUI_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_gui_editor LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_gui_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_gui_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_gui_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_gui_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_gui_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -55,5 +55,20 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor)
ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -36,6 +36,20 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_log.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -46,6 +46,21 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_mission_compiler.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -196,6 +196,21 @@ IF(WITH_PCH)
ADD_NATIVE_PRECOMPILED_HEADER(ovqt_plugin_object_viewer ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp)
ENDIF(WITH_PCH)
INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_object_viewer.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -29,6 +29,20 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_sheet_builder.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -48,6 +48,19 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_translation_manager.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -65,6 +65,19 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_world_editor)
ADD_DEFINITIONS(-DWORLD_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_world_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_world_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_world_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_world_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_world_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_world_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -42,6 +42,20 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
IF(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ELSE(WIN32)
IF(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ELSE(WITH_INSTALL_LIBRARIES)
INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
ENDIF(WITH_INSTALL_LIBRARIES)
ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_zone_painter.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)

@ -86,31 +86,31 @@ if not args.noconf:
try:
ExportBuildDirectory
except NameError:
ExportBuildDirectory = "W:/export"
ExportBuildDirectory = "T:/export"
try:
InstallDirectory
except NameError:
InstallDirectory = "W:/install"
InstallDirectory = "T:/install"
try:
ClientDevDirectory
except NameError:
ClientDevDirectory = "W:/client_dev"
ClientDevDirectory = "T:/client_dev"
try:
ClientPatchDirectory
except NameError:
ClientPatchDirectory = "W:/client_patch"
ClientPatchDirectory = "T:/client_patch"
try:
ClientInstallDirectory
except NameError:
ClientInstallDirectory = "W:/client_install"
ClientInstallDirectory = "T:/client_install"
try:
ShardInstallDirectory
except NameError:
ShardInstallDirectory = "W:/shard"
ShardInstallDirectory = "T:/shard"
try:
WorldEditInstallDirectory
except NameError:
WorldEditInstallDirectory = "W:/worldedit"
WorldEditInstallDirectory = "T:/worldedit"
try:
LeveldesignDirectory
except NameError:
@ -134,7 +134,7 @@ if not args.noconf:
try:
DataShardDirectory
except NameError:
DataShardDirectory = "R:/code/ryzom/common/data_shard"
DataShardDirectory = "R:/code/ryzom/server/data_shard"
try:
DataCommonDirectory
except NameError:
@ -159,6 +159,26 @@ if not args.noconf:
WindowsExeDllCfgDirectories
except NameError:
WindowsExeDllCfgDirectories = [ 'C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/redist/x86', 'D:/libraries/external/bin', 'R:/build/dev/bin/Release', 'R:/code/ryzom/client', 'R:/code/nel/lib', 'R:/code/ryzom/bin', 'R:/code/ryzom/tools/client/client_config/bin' ]
try:
LinuxServiceExecutableDirectory
except NameError:
LinuxServiceExecutableDirectory = "S:/devls_x64/bin"
try:
LinuxClientExecutableDirectory
except NameError:
LinuxClientExecutableDirectory = "S:/devl_x64/bin"
try:
PatchmanCfgAdminDirectory
except NameError:
PatchmanCfgAdminDirectory = "R:/code/ryzom/server/patchman_cfg/admin_install"
try:
PatchmanCfgDefaultDirectory
except NameError:
PatchmanCfgDefaultDirectory = "R:/code/ryzom/server/patchman_cfg/default"
try:
PatchmanBridgeServerDirectory
except NameError:
PatchmanBridgeServerDirectory = "T:/bridge_server"
try:
MaxAvailable
except NameError:
@ -171,7 +191,11 @@ if not args.noconf:
MaxUserDirectory
except NameError:
import os
try:
MaxUserDirectory = os.path.normpath(os.environ["LOCALAPPDATA"] + "/Autodesk/3dsMax/2010 - 32bit/enu")
except KeyError:
MaxAvailable = 0
MaxUserDirectory = "C:/Users/Kaetemi/AppData/Local/Autodesk/3dsMax/2010 - 32bit/enu"
try:
MaxExecutable
except NameError:
@ -188,37 +212,42 @@ if not args.noconf:
printLog(log, "Use -- if you need to insert an empty value.")
printLog(log, "")
BuildQuality = int(askVar(log, "Build Quality", str(BuildQuality)))
ToolDirectories[0] = askVar(log, "Primary Tool Directory", ToolDirectories[0]).replace("\\", "/")
ToolDirectories[1] = askVar(log, "Secondary Tool Directory", ToolDirectories[1]).replace("\\", "/")
ToolDirectories[0] = askVar(log, "[IN] Primary Tool Directory", ToolDirectories[0]).replace("\\", "/")
ToolDirectories[1] = askVar(log, "[IN] Secondary Tool Directory", ToolDirectories[1]).replace("\\", "/")
ToolSuffix = askVar(log, "Tool Suffix", ToolSuffix)
ScriptDirectory = askVar(log, "Script Directory", os.getcwd().replace("\\", "/")).replace("\\", "/")
WorkspaceDirectory = askVar(log, "Workspace Directory", WorkspaceDirectory).replace("\\", "/")
DatabaseDirectory = askVar(log, "Database Directory", DatabaseDirectory).replace("\\", "/")
ExportBuildDirectory = askVar(log, "Export Build Directory", ExportBuildDirectory).replace("\\", "/")
InstallDirectory = askVar(log, "Install Directory", InstallDirectory).replace("\\", "/")
ClientDevDirectory = askVar(log, "Client Dev Directory", ClientDevDirectory).replace("\\", "/")
ClientPatchDirectory = askVar(log, "Client Patch Directory", ClientPatchDirectory).replace("\\", "/")
ClientInstallDirectory = askVar(log, "Client Install Directory", ClientInstallDirectory).replace("\\", "/")
ShardInstallDirectory = askVar(log, "Shard Data Install Directory", ShardInstallDirectory).replace("\\", "/")
WorldEditInstallDirectory = askVar(log, "World Edit Data Install Directory", WorldEditInstallDirectory).replace("\\", "/")
LeveldesignDirectory = askVar(log, "Leveldesign Directory", LeveldesignDirectory).replace("\\", "/")
LeveldesignDfnDirectory = askVar(log, "Leveldesign DFN Directory", LeveldesignDfnDirectory).replace("\\", "/")
LeveldesignWorldDirectory = askVar(log, "Leveldesign World Directory", LeveldesignWorldDirectory).replace("\\", "/")
PrimitivesDirectory = askVar(log, "Primitives Directory", PrimitivesDirectory).replace("\\", "/")
GamedevDirectory = askVar(log, "Gamedev Directory", GamedevDirectory).replace("\\", "/")
DataShardDirectory = askVar(log, "Data Shard Directory", DataShardDirectory).replace("\\", "/")
DataCommonDirectory = askVar(log, "Data Common Directory", DataCommonDirectory).replace("\\", "/")
TranslationDirectory = askVar(log, "Translation Directory", TranslationDirectory).replace("\\", "/")
LeveldesignDataShardDirectory = askVar(log, "Leveldesign Data Shard Directory", LeveldesignDataShardDirectory).replace("\\", "/")
LeveldesignDataCommonDirectory = askVar(log, "Leveldesign Data Common Directory", LeveldesignDataCommonDirectory).replace("\\", "/")
WorldEditorFilesDirectory = askVar(log, "World Editor Files Directory", WorldEditorFilesDirectory).replace("\\", "/")
WindowsExeDllCfgDirectories[0] = askVar(log, "Primary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[0]).replace("\\", "/")
WindowsExeDllCfgDirectories[1] = askVar(log, "Secondary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[1]).replace("\\", "/")
WindowsExeDllCfgDirectories[2] = askVar(log, "Tertiary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[2]).replace("\\", "/")
WindowsExeDllCfgDirectories[3] = askVar(log, "Quaternary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[3]).replace("\\", "/")
WindowsExeDllCfgDirectories[4] = askVar(log, "Quinary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[4]).replace("\\", "/")
WindowsExeDllCfgDirectories[5] = askVar(log, "Senary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[5]).replace("\\", "/")
WindowsExeDllCfgDirectories[6] = askVar(log, "Septenary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[6]).replace("\\", "/")
ScriptDirectory = askVar(log, "[IN] Script Directory", os.getcwd().replace("\\", "/")).replace("\\", "/")
WorkspaceDirectory = askVar(log, "[IN] Workspace Directory", WorkspaceDirectory).replace("\\", "/")
DatabaseDirectory = askVar(log, "[IN] Database Directory", DatabaseDirectory).replace("\\", "/")
ExportBuildDirectory = askVar(log, "[OUT] Export Build Directory", ExportBuildDirectory).replace("\\", "/")
InstallDirectory = askVar(log, "[OUT] Install Directory", InstallDirectory).replace("\\", "/")
ClientDevDirectory = askVar(log, "[OUT] Client Dev Directory", ClientDevDirectory).replace("\\", "/")
ClientPatchDirectory = askVar(log, "[OUT] Client Patch Directory", ClientPatchDirectory).replace("\\", "/")
ClientInstallDirectory = askVar(log, "[OUT] Client Install Directory", ClientInstallDirectory).replace("\\", "/")
ShardInstallDirectory = askVar(log, "[OUT] Shard Data Install Directory", ShardInstallDirectory).replace("\\", "/")
WorldEditInstallDirectory = askVar(log, "[OUT] World Edit Data Install Directory", WorldEditInstallDirectory).replace("\\", "/")
LeveldesignDirectory = askVar(log, "[IN] Leveldesign Directory", LeveldesignDirectory).replace("\\", "/")
LeveldesignDfnDirectory = askVar(log, "[IN] Leveldesign DFN Directory", LeveldesignDfnDirectory).replace("\\", "/")
LeveldesignWorldDirectory = askVar(log, "[IN] Leveldesign World Directory", LeveldesignWorldDirectory).replace("\\", "/")
PrimitivesDirectory = askVar(log, "[IN] Primitives Directory", PrimitivesDirectory).replace("\\", "/")
GamedevDirectory = askVar(log, "[IN] Gamedev Directory", GamedevDirectory).replace("\\", "/")
DataShardDirectory = askVar(log, "[IN] Data Shard Directory", DataShardDirectory).replace("\\", "/")
DataCommonDirectory = askVar(log, "[IN] Data Common Directory", DataCommonDirectory).replace("\\", "/")
TranslationDirectory = askVar(log, "[IN] Translation Directory", TranslationDirectory).replace("\\", "/")
LeveldesignDataShardDirectory = askVar(log, "[IN] Leveldesign Data Shard Directory", LeveldesignDataShardDirectory).replace("\\", "/")
LeveldesignDataCommonDirectory = askVar(log, "[IN] Leveldesign Data Common Directory", LeveldesignDataCommonDirectory).replace("\\", "/")
WorldEditorFilesDirectory = askVar(log, "[IN] World Editor Files Directory", WorldEditorFilesDirectory).replace("\\", "/")
WindowsExeDllCfgDirectories[0] = askVar(log, "[IN] Primary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[0]).replace("\\", "/")
WindowsExeDllCfgDirectories[1] = askVar(log, "[IN] Secondary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[1]).replace("\\", "/")
WindowsExeDllCfgDirectories[2] = askVar(log, "[IN] Tertiary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[2]).replace("\\", "/")
WindowsExeDllCfgDirectories[3] = askVar(log, "[IN] Quaternary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[3]).replace("\\", "/")
WindowsExeDllCfgDirectories[4] = askVar(log, "[IN] Quinary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[4]).replace("\\", "/")
WindowsExeDllCfgDirectories[5] = askVar(log, "[IN] Senary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[5]).replace("\\", "/")
WindowsExeDllCfgDirectories[6] = askVar(log, "[IN] Septenary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[6]).replace("\\", "/")
LinuxServiceExecutableDirectory = askVar(log, "[IN] Linux Service Executable Directory", LinuxServiceExecutableDirectory).replace("\\", "/")
LinuxClientExecutableDirectory = askVar(log, "[IN] Linux Client Executable Directory", LinuxClientExecutableDirectory).replace("\\", "/")
PatchmanCfgAdminDirectory = askVar(log, "[IN] Patchman Cfg Admin Directory", PatchmanCfgAdminDirectory).replace("\\", "/")
PatchmanCfgDefaultDirectory = askVar(log, "[IN] Patchman Cfg Default Directory", PatchmanCfgDefaultDirectory).replace("\\", "/")
PatchmanBridgeServerDirectory = askVar(log, "[OUT] Patchman Bridge Server Patch Directory", PatchmanBridgeServerDirectory).replace("\\", "/")
MaxAvailable = int(askVar(log, "3dsMax Available", str(MaxAvailable)))
if MaxAvailable:
MaxDirectory = askVar(log, "3dsMax Directory", MaxDirectory).replace("\\", "/")
@ -299,6 +328,11 @@ if not args.noconf:
sf.write("DataCommonDirectory = \"" + str(DataCommonDirectory) + "\"\n")
sf.write("DataShardDirectory = \"" + str(DataShardDirectory) + "\"\n")
sf.write("WindowsExeDllCfgDirectories = " + str(WindowsExeDllCfgDirectories) + "\n")
sf.write("LinuxServiceExecutableDirectory = \"" + str(LinuxServiceExecutableDirectory) + "\"\n")
sf.write("LinuxClientExecutableDirectory = \"" + str(LinuxClientExecutableDirectory) + "\"\n")
sf.write("PatchmanCfgAdminDirectory = \"" + str(PatchmanCfgAdminDirectory) + "\"\n")
sf.write("PatchmanCfgDefaultDirectory = \"" + str(PatchmanCfgDefaultDirectory) + "\"\n")
sf.write("PatchmanBridgeServerDirectory = \"" + str(PatchmanBridgeServerDirectory) + "\"\n")
sf.write("\n")
sf.write("# 3dsMax directives\n")
sf.write("MaxAvailable = " + str(MaxAvailable) + "\n")

@ -1,19 +0,0 @@
TITLE 1_export.py
1_export.py
TITLE 2_build.py
2_build.py
TITLE 3_install.py
3_install.py
TITLE 4_worldedit_data.py
4_worldedit_data.py
TITLE 5_client_dev.py
5_client_dev.py
TITLE 6_client_patch.py
6_client_patch.py -bo
TITLE 7_client_install.py
7_client_install.py
TITLE 8_shard_data.py
8_shard_data.py
PAUSE

@ -0,0 +1,13 @@
title Ryzom Core: 1_export.py
1_export.py
title Ryzom Core: 2_build.py
2_build.py
title Ryzom Core: 3_install.py
3_install.py
title Ryzom Core: a1_worldedit_data.py
a1_worldedit_data.py
title Ryzom Core: b1_client_dev.py
b1_client_dev.py
title Ryzom Core: b2_shard_data.py
b2_shard_data.py
title Ryzom Core: Ready

@ -1,6 +1,6 @@
#!/usr/bin/python
#
# \file 5_client_dev.py
# \file b1_client_dev.py
# \brief Install to client dev
# \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi)
@ -69,7 +69,7 @@ for category in InstallClientData:
printLog(log, "")
log.close()
if os.path.isfile("5_client_dev.log"):
os.remove("5_client_dev.log")
if os.path.isfile("b1_client_dev.log"):
os.remove("b1_client_dev.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_dev.log")
shutil.move("log.log", "5_client_dev.log")
shutil.move("log.log", "b1_client_dev.log")

@ -0,0 +1,93 @@
#!/usr/bin/python
#
# \file b2_shard_data.py
# \brief Install shard data
# \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install shard data
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from tools import *
sys.path.append(WorkspaceDirectory)
from projects import *
# Log error
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install shard data")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
for dir in InstallShardDataDirectories:
printLog(log, "SHARD PACKAGE " + dir)
mkPath(log, ShardInstallDirectory + "/" + dir)
printLog(log, "FROM " + dir)
mkPath(log, InstallDirectory + "/" + dir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir)
for package in InstallShardDataFiles:
dstDir = package[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir)
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, package[1])
for multiDir in InstallShardDataMultiDirectories:
dstDir = multiDir[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir)
for srcDir in multiDir[1]:
printLog(log, "FROM " + srcDir)
mkPath(log, InstallDirectory + "/" + srcDir)
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
for multiDir in InstallShardDataPrimitivesDirectories:
dstDir = multiDir[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir)
for srcDir in multiDir[1]:
printLog(log, "FROM PRIMITIVES " + srcDir)
mkPath(log, PrimitivesDirectory + "/" + srcDir)
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
copyFilesNoTreeIfNeeded(log, PrimitivesDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
for execDir in InstallShardDataExecutables:
dstDir = execDir[0]
mkPath(log, LinuxServiceExecutableDirectory)
mkPath(log, PatchmanCfgDefaultDirectory)
mkPath(log, InstallDirectory)
mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir)
copyFileIfNeeded(log, LinuxServiceExecutableDirectory + "/" + execDir[1][1], ShardInstallDirectory + "/" + dstDir + "/" + execDir[1][0])
copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardInstallDirectory + "/" + dstDir, execDir[2])
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, execDir[3])
printLog(log, "")
log.close()
if os.path.isfile("b2_shard_data.log"):
os.remove("b2_shard_data.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_data.log")
shutil.move("log.log", "b2_shard_data.log")

@ -0,0 +1,109 @@
#!/usr/bin/python
#
# \file c1_shard_patch.py
# \brief Create a new patch for the patchman bridge
# \date 2014-02-20 00:27GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Create a new patch for the patchman bridge
#
# NeL - MMORPG Framework <http://www.ryzomcore.org/>
# Copyright (C) 2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util, tarfile
sys.path.append("configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from tools import *
sys.path.append(WorkspaceDirectory)
from projects import *
# Log error
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Create a new patch for the patchman bridge")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# List the directories that will be used
archiveDirectories = [ ]
for dir in InstallShardDataDirectories:
if not dir in archiveDirectories:
archiveDirectories += [ dir ]
for package in InstallShardDataFiles:
dstDir = package[0]
if not dstDir in archiveDirectories:
archiveDirectories += [ dstDir ]
for multiDir in InstallShardDataMultiDirectories:
dstDir = multiDir[0]
if not dstDir in archiveDirectories:
archiveDirectories += [ dstDir ]
for multiDir in InstallShardDataPrimitivesDirectories:
dstDir = multiDir[0]
if not dstDir in archiveDirectories:
archiveDirectories += [ dstDir ]
for execDir in InstallShardDataExecutables:
dstDir = execDir[0]
if not dstDir in archiveDirectories:
archiveDirectories += [ dstDir ]
printLog(log, ">>> Archive new admin_install.tgz <<<")
mkPath(log, PatchmanBridgeServerDirectory)
adminInstallTgz = PatchmanBridgeServerDirectory + "/admin_install.tgz"
patchmanExecutable = LinuxServiceExecutableDirectory + "/ryzom_patchman_service"
if needUpdateDirNoSubdirFile(log, PatchmanCfgAdminDirectory + "/bin", adminInstallTgz) or needUpdateDirNoSubdirFile(log, PatchmanCfgAdminDirectory + "/patchman", adminInstallTgz) or needUpdate(log, patchmanExecutable, adminInstallTgz):
printLog(log, "WRITE " + adminInstallTgz)
if os.path.isfile(adminInstallTgz):
os.remove(adminInstallTgz)
tar = tarfile.open(adminInstallTgz, "w:gz")
tar.add(PatchmanCfgAdminDirectory + "/bin", arcname = "bin")
tar.add(PatchmanCfgAdminDirectory + "/patchman", arcname = "patchman")
tar.add(patchmanExecutable, arcname = "patchman/ryzom_patchman_service")
tar.close()
else:
printLog(log, "SKIP " + adminInstallTgz)
printLog(log, "")
printLog(log, ">>> Create new version <<<")
newVersion = 1
vstr = str(newVersion).zfill(6)
vpath = PatchmanBridgeServerDirectory + "/" + vstr
while os.path.exists(vpath):
newVersion = newVersion + 1
vstr = str(newVersion).zfill(6)
vpath = PatchmanBridgeServerDirectory + "/" + vstr
mkPath(log, vpath)
for dir in archiveDirectories:
mkPath(log, ShardInstallDirectory + "/" + dir)
tgzPath = vpath + "/" + dir + ".tgz"
printLog(log, "WRITE " + tgzPath)
tar = tarfile.open(tgzPath, "w:gz")
tar.add(ShardInstallDirectory + "/" + dir, arcname = dir)
tar.close()
printLog(log, "")
log.close()
if os.path.isfile("c1_shard_patch.log"):
os.remove("c1_shard_patch.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_patch.log")
shutil.move("log.log", "c1_shard_patch.log")

@ -85,6 +85,7 @@ IgElevationTool = "ig_elevation"
IgAddTool = "ig_add"
BuildClodBankTool = "build_clod_bank"
SheetsPackerTool = "sheets_packer"
SheetsPackerShardTool = "sheets_packer_shard"
BnpMakeTool = "bnp_make"
AiBuildWmapTool = "ai_build_wmap"
TgaCutTool = "tga_cut"

@ -1,6 +1,6 @@
#!/usr/bin/python
#
# \file 6_client_patch.py
# \file d1_client_patch.py
# \brief Install to client patch
# \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi)
@ -151,7 +151,7 @@ else:
log.close()
if os.path.isfile("6_client_patch.log"):
os.remove("6_client_patch.log")
if os.path.isfile("d1_client_patch.log"):
os.remove("d1_client_patch.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_patch.log")
shutil.move("log.log", "6_client_patch.log")
shutil.move("log.log", "d1_client_patch.log")

@ -1,6 +1,6 @@
#!/usr/bin/python
#
# \file 7_client_install.py
# \file d2_client_install.py
# \brief Install to client install
# \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi)
@ -77,7 +77,7 @@ for category in InstallClientData:
printLog(log, "")
log.close()
if os.path.isfile("7_client_install.log"):
os.remove("7_client_install.log")
if os.path.isfile("d2_client_install.log"):
os.remove("d2_client_install.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_install.log")
shutil.move("log.log", "7_client_install.log")
shutil.move("log.log", "d2_client_install.log")

@ -0,0 +1,7 @@
title Ryzom Core: 3_install.py (EXECUTABLES)
3_install.py -ipj common/gamedev common/exedll common/cfg
title Ryzom Core: b1_client_dev.py
b1_client_dev.py
title Ryzom Core: b2_shard_data.py
b2_shard_data.py
title Ryzom Core: Ready

@ -1,31 +0,0 @@
#!/usr/bin/python
#
# \file export_build_install.py
# \brief Run all processes
# \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Run all processes
#
# NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
#
import shutil, subprocess
subprocess.call([ "python", "3_install.py" ])
subprocess.call([ "python", "5_client_dev.py" ])

@ -1,31 +0,0 @@
#!/usr/bin/python
#
# \file export_build_install.py
# \brief Run all processes
# \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Run all processes
#
# NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
#
import shutil, subprocess
subprocess.call([ "python", "3_install.py" ])
subprocess.call([ "python", "8_shard_data.py" ])

@ -1,4 +1,9 @@
title Ryzom Core: 1_export.py (INTERFACE)
1_export.py -ipj common/gamedev common/data_common common/exedll common/cfg common/interface common/sfx common/fonts common/outgame
title Ryzom Core: 2_build.py (INTERFACE)
2_build.py -ipj common/gamedev common/data_common common/exedll common/cfg common/interface common/sfx common/fonts common/outgame
title Ryzom Core: 3_install.py (INTERFACE)
3_install.py -ipj common/gamedev common/data_common common/exedll common/cfg common/interface common/sfx common/fonts common/outgame
5_client_dev.py
title Ryzom Core: b1_client_dev.py
b1_client_dev.py
title Ryzom Core: Ready

@ -1,5 +1,11 @@
1_export.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg
2_build.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg
3_install.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg
5_client_dev.py
8_shard_data.py
title Ryzom Core: 1_export.py (LEVELDESIGN)
1_export.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg shard/data_shard shard/data_language shard/data_leveldesign shard/data_game_share
title Ryzom Core: 2_build.py (LEVELDESIGN)
2_build.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg shard/data_shard shard/data_language shard/data_leveldesign shard/data_game_share
title Ryzom Core: 3_install.py (LEVELDESIGN)
3_install.py -ipj common/gamedev common/data_common common/data_shard common/leveldesign common/exedll common/cfg shard/data_shard shard/data_language shard/data_leveldesign shard/data_game_share
title Ryzom Core: b1_client_dev.py (LEVELDESIGN)
b1_client_dev.py
title Ryzom Core: b2_shard_data.py (LEVELDESIGN)
b2_shard_data.py
title Ryzom Core: Ready

@ -54,7 +54,7 @@ if MakeSheetId == "":
else:
mkPath(log, LeveldesignDirectory)
mkPath(log, LeveldesignWorldDirectory)
subprocess.call([ MakeSheetId, "-o" + LeveldesignDirectory + "/game_elem/sheet_id.bin", LeveldesignDirectory + "/game_elem", LeveldesignDirectory + "/game_element", LeveldesignWorldDirectory, DataShardDirectory + "mirror_sheets" ])
subprocess.call([ MakeSheetId, "-o" + LeveldesignDirectory + "/game_elem/sheet_id.bin", LeveldesignDirectory + "/game_elem", LeveldesignDirectory + "/game_element", LeveldesignWorldDirectory, DataShardDirectory + "/mirror_sheets" ]) # FIXME: Hardcoded path mirror_sheets
printLog(log, "")
log.close()

@ -0,0 +1,67 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief Setup sheets
# \date 2014-02-19 22:39GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup shard sheets
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup shard sheets")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
mkPath(log, LeveldesignDirectory)
mkPath(log, LeveldesignDfnDirectory)
mkPath(log, ExportBuildDirectory + "/" + VisualSlotTabBuildDirectory)
mkPath(log, DataShardDirectory + "/mirror_sheets") # FIXME: Hardcoded path mirror_sheets
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + SheetsShardBuildDirectory)
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + SheetsShardInstallDirectory)
log.close()
# end of file

@ -0,0 +1,49 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export sheets
# \date 2014-02-19 22:39GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export shard sheets
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Export shard sheets")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
log.close()
# end of file

@ -0,0 +1,67 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build sheets
# \date 2014-02-19 22:39GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build shard sheets
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Build sheets")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Find tools
SheetsPackerShard = findTool(log, ToolDirectories, SheetsPackerShardTool, ToolSuffix)
printLog(log, "")
# For each sheets directory
printLog(log, ">>> Build shard sheets <<<")
if SheetsPackerShard == "":
toolLogFail(log, SheetsPackerShardTool, ToolSuffix)
else:
mkPath(log, LeveldesignDirectory)
mkPath(log, LeveldesignDfnDirectory)
mkPath(log, ExportBuildDirectory + "/" + VisualSlotTabBuildDirectory)
mkPath(log, DataShardDirectory + "/mirror_sheets") # FIXME: Hardcoded path mirror_sheets
mkPath(log, ExportBuildDirectory + "/" + SheetsShardBuildDirectory)
# sheets_packer_shard <leveldesign> <dfn> <datasets> <tab> <build_packed_sheets>
subprocess.call([ SheetsPackerShard, LeveldesignDirectory, LeveldesignDfnDirectory, DataShardDirectory + "/mirror_sheets", ExportBuildDirectory + "/" + VisualSlotTabBuildDirectory, ExportBuildDirectory + "/" + SheetsShardBuildDirectory ])
printLog(log, "")
log.close()
# end of file

@ -1,14 +1,14 @@
#!/usr/bin/python
#
# \file 8_shard_data.py
# \brief Install shard data
# \date 2009-02-18 16:19GMT
# \file 3_install.py
# \brief Install sheets
# \date 2014-02-19 22:39GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install shard data
# Install shard sheets
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
# Copyright (C) 2010-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -25,40 +25,33 @@
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration")
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
sys.path.append(WorkspaceDirectory)
from projects import *
# Log error
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install shard data")
printLog(log, "--- Install shard sheets")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
for dir in InstallShardDataDirectories:
printLog(log, "SHARD DIRECTORY " + dir)
mkPath(log, InstallDirectory + "/" + dir)
mkPath(log, ShardInstallDirectory + "/" + dir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir)
for dir in InstallShardDataCollisionsDirectories:
printLog(log, "SHARD COLLISIONS " + dir)
mkPath(log, InstallDirectory + "/" + dir)
mkPath(log, ShardInstallDirectory + "/" + InstallShardDataCollisionsDirectory + "/" + dir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + InstallShardDataCollisionsDirectory + "/" + dir)
printLog(log, "")
installPath = InstallDirectory + "/" + SheetsShardInstallDirectory
mkPath(log, installPath)
printLog(log, ">>> Install sheets <<<")
mkPath(log, ExportBuildDirectory + "/" + SheetsShardBuildDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + SheetsShardBuildDirectory, installPath, ".packed_sheets")
printLog(log, "")
log.close()
if os.path.isfile("8_shard_data.log"):
os.remove("8_shard_data.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_install.log")
shutil.move("log.log", "8_shard_data.log")
# end of file

@ -0,0 +1,54 @@
#!/usr/bin/python
#
# \author Lukasz Kolasa (Maczuga)
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration")
from scripts import *
from buildsite import *
from tools import *
os.chdir(TranslationDirectory)
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Clean string diff")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
try:
subprocess.call([ TranslationTools, "clean_string_diff" ])
except Exception, e:
printLog(log, "<" + processName + "> " + str(e))
printLog(log, "")
log.close()
if os.path.isfile("e1_clean_string_diff.log"):
os.remove("e1_clean_string_diff.log")
shutil.copy("log.log", "e1_clean_string_diff_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
shutil.move("log.log", "e1_clean_string_diff.log")
raw_input("PRESS ANY KEY TO EXIT")

@ -0,0 +1,54 @@
#!/usr/bin/python
#
# \author Lukasz Kolasa (Maczuga)
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration")
from scripts import *
from buildsite import *
from tools import *
os.chdir(TranslationDirectory)
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Clean words diff")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
try:
subprocess.call([ TranslationTools, "clean_words_diff" ])
except Exception, e:
printLog(log, "<" + processName + "> " + str(e))
printLog(log, "")
log.close()
if os.path.isfile("e2_clean_words_diff.log"):
os.remove("e2_clean_words_diff.log")
shutil.copy("log.log", "e2_clean_words_diff_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
shutil.move("log.log", "e2_clean_words_diff.log")
raw_input("PRESS ANY KEY TO EXIT")

@ -0,0 +1,54 @@
#!/usr/bin/python
#
# \author Lukasz Kolasa (Maczuga)
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration")
from scripts import *
from buildsite import *
from tools import *
os.chdir(TranslationDirectory)
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Clean clause diff")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
try:
subprocess.call([ TranslationTools, "clean_clause_diff" ])
except Exception, e:
printLog(log, "<" + processName + "> " + str(e))
printLog(log, "")
log.close()
if os.path.isfile("e3_clean_clause_diff.log"):
os.remove("e3_clean_clause_diff.log")
shutil.copy("log.log", "e3_clean_clause_diff_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
shutil.move("log.log", "e3_clean_clause_diff.log")
raw_input("PRESS ANY KEY TO EXIT")

@ -0,0 +1,54 @@
#!/usr/bin/python
#
# \author Lukasz Kolasa (Maczuga)
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration")
from scripts import *
from buildsite import *
from tools import *
os.chdir(TranslationDirectory)
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Clean phrase diff")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
try:
subprocess.call([ TranslationTools, "clean_phrase_diff" ])
except Exception, e:
printLog(log, "<" + processName + "> " + str(e))
printLog(log, "")
log.close()
if os.path.isfile("e4_clean_phrase_diff.log"):
os.remove("e4_clean_phrase_diff.log")
shutil.copy("log.log", "e4_clean_phrase_diff_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
shutil.move("log.log", "e4_clean_phrase_diff.log")
raw_input("PRESS ANY KEY TO EXIT")

@ -47,6 +47,10 @@ try:
subprocess.call([ TranslationTools, "merge_words_diff" ])
subprocess.call([ TranslationTools, "make_string_diff" ])
subprocess.call([ TranslationTools, "merge_string_diff" ])
subprocess.call([ TranslationTools, "clean_string_diff" ])
subprocess.call([ TranslationTools, "clean_words_diff" ])
subprocess.call([ TranslationTools, "clean_clause_diff" ])
subprocess.call([ TranslationTools, "clean_phrase_diff" ])
subprocess.call([ TranslationTools, "make_worksheet_diff", "bot_names.txt" ])
subprocess.call([ TranslationTools, "merge_worksheet_diff", "bot_names.txt" ])
except Exception, e:

@ -31,7 +31,7 @@ log = open("log.log", "w")
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Make and merge work")
printLog(log, "--- Make, merge and clean work")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
@ -72,10 +72,19 @@ except Exception, e:
printLog(log, ">>> Mark diffs as translated <<<")
diffFiles = os.listdir("diff")
for diffFile in diffFiles:
if "_wk_diff_" in diffFile:
if "wk_diff_" in diffFile:
printLog(log, "DIFF " + "diff/" + diffFile)
subprocess.call([ TranslationTools, "crop_lines", "diff/" + diffFile, "3" ])
#printLog(log, ">>> Clean diff <<<")
#try:
# subprocess.call([ TranslationTools, "clean_string_diff" ])
# subprocess.call([ TranslationTools, "clean_phrase_diff" ])
# subprocess.call([ TranslationTools, "clean_clause_diff" ])
# subprocess.call([ TranslationTools, "clean_words_diff" ])
#except Exception, e:
# printLog(log, "<" + processName + "> " + str(e))
#printLog(log, "")
printLog(log, ">>> Merge diff <<<")
try:

@ -5,10 +5,14 @@ ADD_SUBDIRECTORY(client_sheets)
IF(WITH_RYZOM_CLIENT)
# These are Windows/MFC apps
SET(SEVENZIP_LIBRARY "ryzom_sevenzip")
SET(SEVENZIP_LIBRARY "ryzom_sevenzip")
ADD_SUBDIRECTORY(seven_zip)
IF(WITH_RYZOM_PATCH)
ADD_DEFINITIONS(-DRZ_USE_PATCH)
ENDIF(WITH_RYZOM_PATCH)
FILE(GLOB CFG ../*.cfg ../*.cfg.in)
FILE(GLOB SRC *.cpp *.h motion/*.cpp motion/*.h client.rc)
FILE(GLOB SRC_INTERFACE interface_v3/*.h interface_v3/*.cpp)

@ -2291,6 +2291,21 @@ void CCharacterCL::endAnimTransition()
// If the next mode in the automaton != Current Mode
if(_CurrentState->NextMode != _Mode)
{
// Undo previous behaviour
switch(_Mode)
{
case MBEHAV::DEATH:
// Restore collisions.
if(_Primitive)
{
// TODO: Without this dynamic cast
if(dynamic_cast<CPlayerCL *>(this))
_Primitive->setOcclusionMask(MaskColPlayer);
else
_Primitive->setOcclusionMask(MaskColNpc);
}
break;
}
if(ClientCfg.UsePACSForAll && _Primitive)
_Primitive->setCollisionMask(MaskColNone);
//// AJOUT ////

@ -536,15 +536,17 @@ int main(int argc, char **argv)
strcpy(filename, argv[0]);
// ignore signal SIGPIPE generated by libwww
signal(SIGPIPE, sigHandler);
// Delete the .sh file because it s not useful anymore
if (NLMISC::CFile::fileExists("updt_nl.sh"))
NLMISC::CFile::deleteFile("updt_nl.sh");
#endif
// initialize patch manager and set the ryzom full path, before it's used
CPatchManager *pPM = CPatchManager::getInstance();
pPM->setRyzomFilename(NLMISC::CFile::getFilename(filename));
pPM->setRyzomFilename(filename);
/////////////////////////////////
// Initialize the application. //

@ -425,16 +425,16 @@ CClientConfig::CClientConfig()
MouseOverFX = "sfx_selection_mouseover.ps";
SelectionFXSize = 0.8f;
// only force patching under Windows by default
#if WITH_PATCH_SUPPORT
#if RZ_USE_PATCH
PatchWanted = true;
#else
#else
PatchWanted = false;
#endif
PatchUrl = "";
PatchletUrl = "";
PatchVersion = "";
PatchServer = "";
#endif
PatchUrl.clear();
PatchletUrl.clear();
PatchVersion.clear();
PatchServer.clear();
WebIgMainDomain = "atys.ryzom.com";
WebIgTrustedDomains.push_back(WebIgMainDomain);

@ -977,7 +977,8 @@ void CFarTP::requestReturnToPreviousSession(TSessionId rejectedSessionId)
void CFarTP::requestReconnection()
{
_ReselectingChar = true;
requestFarTPToSession(TSessionId(std::numeric_limits<uint16>::max()), std::numeric_limits<uint8>::max(), CFarTP::JoinMainland, false);
if (!requestFarTPToSession(TSessionId(std::numeric_limits<uint16>::max()), std::numeric_limits<uint8>::max(), CFarTP::JoinMainland, false))
_ReselectingChar = false;
}

@ -473,7 +473,7 @@ void CGameContextMenu::update()
// Action possible only if the client is not already busy and the selection is able to do this with you..
_TextFollow->setActive(
selection &&
(! selection->slot() == UserEntity->slot()) &&
(selection->slot() != UserEntity->slot()) &&
(!selection->isForageSource()) &&
(selection->isDead()==false) &&
(((availablePrograms & (1 << BOTCHATTYPE::DontFollow)) == 0)));
@ -484,7 +484,7 @@ void CGameContextMenu::update()
if(_TextAssist)
{
// Action possible only if the client is not already busy and the selection is able to do this with you..
_TextAssist->setActive(!R2::getEditor().isDMing() && selection && (! selection->slot() == UserEntity->slot()) && (!selection->isForageSource()) && (selection->isDead()==false));
_TextAssist->setActive(!R2::getEditor().isDMing() && selection && (selection->slot() != UserEntity->slot()) && (!selection->isForageSource()) && (selection->isDead()==false));
// See also below for mount/packer
}

@ -829,13 +829,6 @@ void prelogInit()
CLoginProgressPostThread::getInstance().init(ClientCfg.ConfigFile);
// tmp for patcher debug
extern void tmpFlagMainlandPatchCategories(NLMISC::CConfigFile &cf);
extern void tmpFlagRemovedPatchCategories(NLMISC::CConfigFile &cf);
tmpFlagMainlandPatchCategories(ClientCfg.ConfigFile);
tmpFlagRemovedPatchCategories(ClientCfg.ConfigFile);
// check "BuildName" in ClientCfg
//nlassert(!ClientCfg.BuildName.empty()); // TMP comment by nico do not commit

@ -15,7 +15,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CL_BOT_CHAT_PAGE_RING_SESSIONS_H
#define CL_BOT_CHAT_PAGE_RING_SSSIONS_H
#define CL_BOT_CHAT_PAGE_RING_SESSIONS_H
#include "bot_chat_page.h"
#include "../entity_cl.h"

@ -21,8 +21,6 @@
// Memory
#include <memory>
#include "game_share/ryzom_version.h"
#include "nel/misc/i_xml.h"
#include "nel/misc/o_xml.h"
#include "nel/misc/algo.h"
@ -131,29 +129,7 @@ using namespace NLGUI;
#include "parser_modules.h"
#include "../global.h"
#ifdef HAVE_REVISION_H
#include "revision.h"
#endif
#if defined(HAVE_X86_64)
#define RYZOM_ARCH "x64"
#elif defined(HAVE_X86)
#define RYZOM_ARCH "x86"
#elif defined(HAVE_ARM)
#define RYZOM_ARCH "arm"
#else
#define RYZOM_ARCH "unknow"
#endif
#if defined(NL_OS_WINDOWS)
#define RYZOM_SYSTEM "windows"
#elif defined(NL_OS_MAC)
#define RYZOM_SYSTEM "mac"
#elif defined(NL_OS_UNIX)
#define RYZOM_SYSTEM "unix"
#else
#define RYZOM_SYSTEM "unkown"
#endif
#include "user_agent.h"
using namespace NLMISC;
@ -489,18 +465,10 @@ CInterfaceManager::CInterfaceManager()
CViewTextID::setTextProvider( &SMTextProvider );
CViewTextFormated::setFormatter( &RyzomTextFormatter );
char buffer[256];
#ifdef REVISION
sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH);
#else
sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH);
#endif
CGroupHTML::options.trustedDomains = ClientCfg.WebIgTrustedDomains;
CGroupHTML::options.languageCode = ClientCfg.getHtmlLanguageCode();
CGroupHTML::options.appName = "Ryzom";
CGroupHTML::options.appVersion = buffer;
CGroupHTML::options.appVersion = getUserAgent();
NLGUI::CDBManager::getInstance()->resizeBanks( NB_CDB_BANKS );
interfaceLinkUpdater = new CInterfaceLink::CInterfaceLinkUpdater();

@ -16,7 +16,7 @@
#ifndef IF_OPTIONS_RZ
#define IP_OPTIONS_RZ
#define IF_OPTIONS_RZ
#include "nel/gui/interface_options.h"

@ -18,16 +18,14 @@
// Includes
//
#include "stdpch.h"
#include <sys/stat.h>
#ifdef NL_OS_WINDOWS
//windows doesnt have unistd.h
#else
#ifndef NL_OS_WINDOWS
#include <unistd.h>
#endif
#include "stdpch.h"
#include <memory>
#include <errno.h>
@ -36,8 +34,8 @@
#ifdef USE_CURL
#include <curl/curl.h>
#endif
#include <zlib.h>
#include <zlib.h>
#include "nel/misc/debug.h"
#include "nel/misc/path.h"
@ -46,10 +44,10 @@
#include "nel/misc/big_file.h"
#include "nel/misc/i18n.h"
#define NL_USE_SEVENZIP 1
#define RZ_USE_SEVENZIP 1
// 7 zip includes
#ifdef NL_USE_SEVENZIP
#ifdef RZ_USE_SEVENZIP
#include "seven_zip/7zCrc.h"
#include "seven_zip/7zIn.h"
#include "seven_zip/7zExtract.h"
@ -70,7 +68,7 @@
#endif
#ifdef NL_OS_WINDOWS
#include <direct.h>
#include <direct.h>
#endif
//
@ -81,35 +79,6 @@
static std::vector<std::string> ForceMainlandPatchCategories;
static std::vector<std::string> ForceRemovePatchCategories;
// TMP for debug : force some category in the patch to be flagged as 'mainland' until
// the actual file is updated
void tmpFlagMainlandPatchCategories(NLMISC::CConfigFile &cf)
{
NLMISC::CConfigFile::CVar *catList = cf.getVarPtr("ForceMainlandPatchCategories");
if (catList)
{
for (uint k = 0; k < catList->size(); ++k)
{
ForceMainlandPatchCategories.push_back(catList->asString(k));
}
}
}
// TMP for debug : force some category in the patch to be flagged as 'mainland' until
// the actual file is updated
void tmpFlagRemovedPatchCategories(NLMISC::CConfigFile &cf)
{
NLMISC::CConfigFile::CVar *catList = cf.getVarPtr("RemovePatchCategories");
if (catList)
{
for (uint k = 0; k < catList->size(); ++k)
{
ForceRemovePatchCategories.push_back(catList->asString(k));
}
}
}
using namespace std;
using namespace NLMISC;
@ -118,11 +87,12 @@ extern string VersionName;
extern string R2ServerVersion;
#ifdef __CLIENT_INSTALL_EXE__
extern std::string TheTmpInstallDirectory;
extern std::string ClientLauncherUrl;
extern std::string TheTmpInstallDirectory;
extern std::string ClientLauncherUrl;
#else
std::string TheTmpInstallDirectory ="patch/client_install";
std::string TheTmpInstallDirectory = "patch/client_install";
#endif
// ****************************************************************************
// ****************************************************************************
// ****************************************************************************
@ -141,7 +111,7 @@ struct EPatchDownloadException : public Exception
CPatchManager *CPatchManager::_Instance = NULL;
#ifdef NL_USE_SEVENZIP
#ifdef RZ_USE_SEVENZIP
/// Input stream class for 7zip archive
class CNel7ZipInStream : public _ISzInStream
{
@ -199,7 +169,11 @@ CPatchManager::CPatchManager() : State("t_state"), DataScanState("t_data_scan_st
{
DescFilename = "ryzom_xxxxx.idx";
#ifdef NL_OS_WINDOWS
UpdateBatchFilename = "updt_nl.bat";
#else
UpdateBatchFilename = "updt_nl.sh";
#endif
// use current directory by default
setClientRootPath("./");
@ -221,6 +195,13 @@ CPatchManager::CPatchManager() : State("t_state"), DataScanState("t_data_scan_st
_AsyncDownloader = NULL;
_StateListener = NULL;
_StartRyzomAtEnd = true;
#ifdef NL_OS_UNIX
// don't use cfg, exe and dll from Windows version
ForceRemovePatchCategories.clear();
ForceRemovePatchCategories.push_back("main_exedll");
ForceRemovePatchCategories.push_back("main_cfg");
#endif
}
// ****************************************************************************
@ -279,16 +260,20 @@ void CPatchManager::init(const std::vector<std::string>& patchURIs, const std::s
try
{
CConfigFile *cf;
#ifdef RY_BG_DOWNLOADER
#ifdef RY_BG_DOWNLOADER
cf = &theApp.ConfigFile;
#else
#else
cf = &ClientCfg.ConfigFile;
#endif
#endif
std::string appName = "ryzom_live";
if (cf->getVarPtr("Application"))
{
appName = cf->getVar("Application").asString(0);
}
std::string versionFileName = appName + ".version";
getServerFile(versionFileName);
@ -300,13 +285,14 @@ void CPatchManager::init(const std::vector<std::string>& patchURIs, const std::s
versionFile.getline(buffer, 1024);
CSString line(buffer);
#ifdef NL_DEBUG
#ifdef NL_DEBUG
CConfigFile::CVar *forceVersion = cf->getVarPtr("ForceVersion");
if (forceVersion != NULL)
{
line = forceVersion->asString();
}
#endif
#endif
ServerVersion = line.firstWord(true);
VersionName = line.firstWord(true);
@ -314,7 +300,7 @@ void CPatchManager::init(const std::vector<std::string>& patchURIs, const std::s
// force the R2ServerVersion
R2ServerVersion = ServerVersion;
#ifdef __CLIENT_INSTALL_EXE__
#ifdef __CLIENT_INSTALL_EXE__
{
//The install program load a the url of the mini web site in the patch directory
@ -352,7 +338,7 @@ void CPatchManager::init(const std::vector<std::string>& patchURIs, const std::s
}
}
}
#endif
#endif
}
catch (...)
{
@ -422,6 +408,7 @@ void CPatchManager::startCheckThread(bool includeBackgroundPatch)
nlassert (thread != NULL);
thread->start ();
}
// ****************************************************************************
bool CPatchManager::isCheckThreadEnded(bool &ok)
{
@ -746,7 +733,6 @@ void CPatchManager::deleteBatchFile()
// ****************************************************************************
void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool wantRyzomRestart, bool useBatchFile)
{
uint nblab = 0;
FILE *fp = NULL;
@ -760,14 +746,13 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
string err = toString("Can't open file '%s' for writing: code=%d %s (error code 29)", UpdateBatchFilename.c_str(), errno, strerror(errno));
throw Exception (err);
}
//use bat if windows if not use sh
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
fprintf(fp, "@echo off\n");
#elif NL_OS_MAC
//mac patcher doesn't work yet
#else
fprintf(fp, "#!/bin/sh\npwd\n");
#endif
#else
fprintf(fp, "#!/bin/sh\n");
#endif
}
// Unpack files with category ExtractPath non empty
@ -799,6 +784,7 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
throw;
}
if (!result)
{
//:TODO: handle exception?
@ -818,19 +804,17 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
string SrcPath = ClientPatchPath;
string DstPath = rCat.getUnpackTo();
NLMISC::CFile::createDirectoryTree(DstPath);
// this file must be moved
// this file must be moved
if (useBatchFile)
{
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
SrcPath = CPath::standardizeDosPath(SrcPath);
DstPath = CPath::standardizeDosPath(DstPath);
#elif NL_OS_MAC
//no patcher on mac yet
#else
#else
SrcPath = CPath::standardizePath(SrcPath);
DstPath = CPath::standardizePath(DstPath);
#endif
#endif
}
std::string SrcName = SrcPath + vFilenames[fff];
@ -838,21 +822,17 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
if (useBatchFile)
{
//write windows .bat format else write sh format
#ifdef NL_OS_WINDOWS
// write windows .bat format else write sh format
#ifdef NL_OS_WINDOWS
fprintf(fp, ":loop%u\n", nblab);
fprintf(fp, "attrib -r -a -s -h %s\n", DstName.c_str());
fprintf(fp, "del %s\n", DstName.c_str());
fprintf(fp, "if exist %s goto loop%u\n", DstName.c_str(), nblab);
fprintf(fp, "move %s %s\n", SrcName.c_str(), DstPath.c_str());
#elif NL_OS_MAC
//no patcher on osx
#else
fprintf(fp, "chmod 777 %s\n", DstName.c_str());
#else
fprintf(fp, "rm -rf %s\n", DstName.c_str());
fprintf(fp, "mv %s %s\n", SrcName.c_str(), DstPath.c_str());
#endif
#endif
}
else
{
@ -869,26 +849,25 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
// Finalize batch file
if (NLMISC::CFile::isExists("patch") && NLMISC::CFile::isDirectory("patch"))
{
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
if (useBatchFile)
{
fprintf(fp, ":looppatch\n");
}
#endif
#endif
vector<string> vFileList;
CPath::getPathContent ("patch", false, false, true, vFileList, NULL, false);
for(uint32 i = 0; i < vFileList.size(); ++i)
{
if (useBatchFile)
{
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
fprintf(fp, "del %s\n", CPath::standardizeDosPath(vFileList[i]).c_str());
#elif NL_OS_MAC
//no patcher on MAC yet
#else
#else
fprintf(fp, "rm -f %s\n", CPath::standardizePath(vFileList[i]).c_str());
#endif
#endif
}
else
{
@ -898,14 +877,12 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
if (useBatchFile)
{
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
fprintf(fp, "rd /Q /S patch\n");
fprintf(fp, "if exist patch goto looppatch\n");
#elif NL_OS_MAC
//no patcher on mac yet
#else
#else
fprintf(fp, "rm -rf patch\n");
#endif
#endif
}
else
{
@ -917,11 +894,11 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool
{
if (wantRyzomRestart)
{
#ifdef NL_OS_WINDOWS
#ifdef NL_OS_WINDOWS
fprintf(fp, "start %s %%1 %%2 %%3\n", RyzomFilename.c_str());
#else
fprintf(fp, "/opt/tita/%s $1 $2 $3\n", RyzomFilename.c_str());
#endif
#else
fprintf(fp, "%s $1 $2 $3\n", RyzomFilename.c_str());
#endif
}
bool writeError = ferror(fp) != 0;
@ -996,9 +973,11 @@ void CPatchManager::executeBatchFile()
#else
// Start the child process.
bool r2Mode = false;
#ifndef RY_BG_DOWNLOADER
#ifndef RY_BG_DOWNLOADER
r2Mode = ClientCfg.R2Mode;
#endif
#endif
string strCmdLine;
strCmdLine = "./" + UpdateBatchFilename;
@ -1006,21 +985,25 @@ void CPatchManager::executeBatchFile()
chmod(strCmdLine.c_str(), S_IRWXU);
if (r2Mode)
{
if (execl(strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str()) == -1)
if (execl(strCmdLine.c_str(), strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), (char *) NULL) == -1)
{
int errsv = errno;
nlerror("Execl Error: %d %s", errsv, strCmdLine.c_str(), (char *) NULL);
} else {
}
else
{
nlinfo("Ran batch file r2Mode Success");
}
}
else
{
if (execl(strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), LoginShardId, (char *) NULL) == -1)
if (execl(strCmdLine.c_str(), strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), toString(LoginShardId).c_str(), (char *) NULL) == -1)
{
int errsv = errno;
nlerror("Execl r2mode Error: %d %s", errsv, strCmdLine.c_str());
} else {
}
else
{
nlinfo("Ran batch file Success");
}
}
@ -1340,7 +1323,7 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de
DownloadInProgress = true;
try
{
#ifdef USE_CURL
#ifdef USE_CURL
ucstring s = CI18N::get("uiDLWithCurl") + " " + dest;
setState(true, s);
@ -1395,7 +1378,7 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de
fclose(fp);
curl_global_cleanup();
CurrentFile = "";
CurrentFile.clear();
if (diskFull)
{
@ -1437,9 +1420,9 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de
throw EPatchDownloadException (NLMISC::toString("curl download failed: (ec %d %d)", res, r));
}
#else
#else
throw Exception("USE_CURL is not defined, no curl method");
#endif
#endif
}
catch(...)
{
@ -2153,10 +2136,8 @@ void CPatchManager::getCorruptedFileInfo(const SFileToPatch &ftp, ucstring &sTra
bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::string &destFileName)
{
#ifdef NL_USE_SEVENZIP
nlinfo("Uncompressing 7zip archive '%s' to '%s'",
sevenZipFile.c_str(),
destFileName.c_str());
#ifdef RZ_USE_SEVENZIP
nlinfo("Uncompressing 7zip archive '%s' to '%s'", sevenZipFile.c_str(), destFileName.c_str());
// init seven zip
ISzAlloc allocImp;
@ -2245,7 +2226,7 @@ bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::strin
bool CPatchManager::unpackLZMA(const std::string &lzmaFile, const std::string &destFileName)
{
#ifdef NL_USE_SEVENZIP
#ifdef RZ_USE_SEVENZIP
nldebug("unpackLZMA : decompression the lzma file '%s' into output file '%s", lzmaFile.c_str(), destFileName.c_str());
CIFile inStream(lzmaFile);
uint32 inSize = inStream.getFileSize();
@ -2357,10 +2338,24 @@ void CCheckThread::run ()
return;
}
sint32 nServerVersion;
sint32 nServerVersion, nClientVersion;
fromString(sServerVersion, nServerVersion);
fromString(sClientVersion, nClientVersion);
#ifdef NL_OS_UNIX
string sClientNewVersion = ClientCfg.BuildName;
sint32 nClientNewVersion;
fromString(sClientNewVersion, nClientNewVersion);
// servers files are not compatible with current client, use last client version
if (nClientNewVersion && nServerVersion > nClientNewVersion)
{
nServerVersion = nClientNewVersion;
}
#endif
if (sClientVersion != sServerVersion)
if (nClientVersion != nServerVersion)
{
// first, try in the version subdirectory
try

@ -206,14 +206,14 @@ CDynamicMapClient(eid, clientGateway, luaState)
void CDynamicMapClientEventForwarder::nodeErased(const std::string& instanceId, const std::string& attrName, sint32 position)
{
//H_AUTO(R2_CDynamicMapClientEventForwarder_nodeErased)
if (!getEditor().getMode() == CEditor::EditionMode) return;
if (getEditor().getMode() != CEditor::EditionMode) return;
getEditor().nodeErased(instanceId, attrName, position);
}
void CDynamicMapClientEventForwarder::nodeSet(const std::string& instanceId, const std::string& attrName, CObject* value)
{
//H_AUTO(R2_CDynamicMapClientEventForwarder_nodeSet)
if (!getEditor().getMode() == CEditor::EditionMode) return;
if (getEditor().getMode() != CEditor::EditionMode) return;
getEditor().nodeSet(instanceId, attrName, value);
}
@ -221,7 +221,7 @@ void CDynamicMapClientEventForwarder::nodeInserted(const std::string& instanceId
const std::string& key, CObject* value)
{
//H_AUTO(R2_CDynamicMapClientEventForwarder_nodeInserted)
if (!getEditor().getMode() == CEditor::EditionMode) return;
if (getEditor().getMode() != CEditor::EditionMode) return;
getEditor().nodeInserted(instanceId, attrName, position, key, value);
}
@ -230,14 +230,14 @@ void CDynamicMapClientEventForwarder::nodeMoved(
const std::string& destInstanceId, const std::string& destAttrName, sint32 destPosition)
{
//H_AUTO(R2_CDynamicMapClientEventForwarder_nodeMoved)
if (!getEditor().getMode() == CEditor::EditionMode) return;
if (getEditor().getMode() != CEditor::EditionMode) return;
getEditor().nodeMoved(instanceId, attrName, position, destInstanceId, destAttrName, destPosition);
}
void CDynamicMapClientEventForwarder::scenarioUpdated(CObject* highLevel, bool willTP, uint32 initialActIndex)
{
//H_AUTO(R2_CDynamicMapClientEventForwarder_scenarioUpdated)
if (!getEditor().getMode() == CEditor::EditionMode) return;
if (getEditor().getMode() != CEditor::EditionMode) return;
getEditor().scenarioUpdated(highLevel, willTP, initialActIndex);
}

@ -144,12 +144,14 @@ CStreamableIG::~CStreamableIG()
#ifdef NL_DEBUG
//nlinfo("Loading : %s", Name.c_str());
#endif
std::vector<bool> waitForIg;
waitForIg.resize(_IGs.size());
for(uint k = 0; k < _IGs.size(); ++k)
{
#ifdef NL_DEBUG
//nlinfo("Loading ig %s", _IGs[k].Name.c_str());
#endif
progress.progress((float)k/(float)_IGs.size());
progress.progress((float)k/((float)_IGs.size()*2.f));
if (!_IGs[k].IG)
{
@ -161,19 +163,15 @@ CStreamableIG::~CStreamableIG()
//nlinfo("start blocking load");
// blocking load
// block after queueing all
_Callback.Owner = this;
_Scene->createInstanceGroupAndAddToSceneAsync(_IGs[k].Name + ".ig", &_IGs[k].IG, _IGs[k].Pos, _IGs[k].Rot, season, &_Callback);
_IGs[k].Loading = true;
}
//nlinfo("wait for end of blockin load");
// blocking call
while (!_IGs[k].IG)
{
NLMISC::nlSleep(0);
// wait till loaded...
_Scene->updateWaitingInstances(1000); /* set a high value to upload texture at a fast rate */
}
_IGs[k].Loading = false;
waitForIg[k] = true;
}
else
{
@ -181,6 +179,25 @@ CStreamableIG::~CStreamableIG()
{
_IGs[k].Loading = false;
}
waitForIg[k] = false;
}
}
for(uint k = 0; k < _IGs.size(); ++k)
{
progress.progress(((float)k + (float)_IGs.size())/((float)_IGs.size()*2.f));
if (waitForIg[k])
{
//nlinfo("wait for end of blockin load");
// blocking call
while (!_IGs[k].IG)
{
NLMISC::nlSleep(1);
// wait till loaded...
_Scene->updateWaitingInstances(1000); /* set a high value to upload texture at a fast rate */
}
_IGs[k].Loading = false;
}
}
linkInstances();

@ -0,0 +1,65 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "user_agent.h"
#include "game_share/ryzom_version.h"
#ifdef HAVE_REVISION_H
#include "revision.h"
#endif
#if defined(HAVE_X86_64)
#define RYZOM_ARCH "x64"
#elif defined(HAVE_X86)
#define RYZOM_ARCH "x86"
#elif defined(HAVE_ARM)
#define RYZOM_ARCH "arm"
#else
#define RYZOM_ARCH "unknown"
#endif
#if defined(NL_OS_WINDOWS)
#define RYZOM_SYSTEM "windows"
#elif defined(NL_OS_MAC)
#define RYZOM_SYSTEM "mac"
#elif defined(NL_OS_UNIX)
#define RYZOM_SYSTEM "unix"
#else
#define RYZOM_SYSTEM "unknown"
#endif
std::string getUserAgent()
{
static std::string s_userAgent;
if (s_userAgent.empty())
{
char buffer[256];
#ifdef REVISION
sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH);
#else
sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH);
#endif
s_userAgent = buffer;
}
return s_userAgent;
}

@ -0,0 +1,87 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CL_USER_AGENT_H
#define CL_USER_AGENT_H
std::string getUserAgent();
#endif // CL_USER_AGENT_H
/* End of user_agent.h */

@ -99,7 +99,7 @@
</PARAMETER>
<PARAMETER NAME="properties" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//root"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//property_rep"/>
@ -129,7 +129,7 @@
<!-- For now, fauna don't have AI profile-->
<!-- <PARAMETER NAME= "ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default"
PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/> </PARAMETER>
PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/> </PARAMETER>
-->
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="state_event_handler"/>
@ -148,7 +148,7 @@
<PARAMETER NAME="group_keyword_filter" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="groups_by_name" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="event" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/event_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/event_type"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="event_handler_action"/>
@ -160,7 +160,7 @@
<DEFAULT_VALUE VALUE="ACTION_ZONE"/>
</PARAMETER>
<PARAMETER NAME="params" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/fauna_zone_properties"/>
</PARAMETER>
</PRIMITIVE>
@ -176,7 +176,7 @@
</PARAMETER>
<PARAMETER NAME="parameters" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="500" SHOW_HS="true" FILE_EXTENSION="cs"/>
<PARAMETER NAME="action" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/action_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/action_type"/>
</PARAMETER>
<DYNAMIC_CHILD CLASS_NAME="event_handler_action"/>
<DYNAMIC_CHILD CLASS_NAME="action_zone"/>
@ -2560,10 +2560,10 @@
-->
<!-- <PARAMETER NAME= "keywords" TYPE="string_array" VISIBLE="true"/> -->
<PARAMETER NAME="ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/>
</PARAMETER>
<PARAMETER NAME="ai_activity" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_activity"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_activity"/>
<DEFAULT_VALUE VALUE="no_change"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
@ -2767,10 +2767,10 @@
-->
<PARAMETER NAME="keywords" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/>
</PARAMETER>
<PARAMETER NAME="ai_activity" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_activity"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_activity"/>
<DEFAULT_VALUE VALUE="no_change"/>
</PARAMETER>
<PARAMETER NAME="ai_profile_params" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
@ -2808,10 +2808,10 @@
-->
<PARAMETER NAME="keywords" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/>
</PARAMETER>
<PARAMETER NAME="ai_activity" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_activity"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_activity"/>
<DEFAULT_VALUE VALUE="no_change"/>
</PARAMETER>
<PARAMETER NAME="ai_profile_params" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
@ -2849,10 +2849,10 @@
-->
<PARAMETER NAME="keywords" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/>
</PARAMETER>
<PARAMETER NAME="ai_activity" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_activity"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_activity"/>
<DEFAULT_VALUE VALUE="no_change"/>
</PARAMETER>
<PARAMETER NAME="ai_profile_params" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
@ -2875,10 +2875,10 @@
<PARAMETER NAME="grp_keyword_filter" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="grps_by_name" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="ai_movement" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_movement"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_movement"/>
</PARAMETER>
<PARAMETER NAME="ai_activity" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/ai_activity"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/ai_activity"/>
<DEFAULT_VALUE VALUE="no_change"/>
</PARAMETER>
<PARAMETER NAME="ai_profile_params" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
@ -2916,7 +2916,7 @@
<PARAMETER NAME="group_keyword_filter" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="groups_by_name" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="event" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/event_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/event_type"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="npc_event_handler_action"/>
@ -2935,7 +2935,7 @@
<PARAMETER NAME="group_keyword_filter" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="groups_by_name" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="event" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/event_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/event_type"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="npc_event_handler_action"/>
@ -2954,7 +2954,7 @@
<PARAMETER NAME="state_keyword_filter" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="states_by_name" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="100"/>
<PARAMETER NAME="event" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/event_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/event_type"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="npc_event_handler_action"/>
@ -2971,7 +2971,7 @@
</PARAMETER>
<PARAMETER NAME="parameters" TYPE="string_array" VISIBLE="true" WIDGET_HEIGHT="500" SHOW_HS="true" FILE_EXTENSION="cs"/>
<PARAMETER NAME="action" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc/action_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc/action_type"/>
</PARAMETER>
<DYNAMIC_CHILD CLASS_NAME="npc_event_handler_action"/>
<DYNAMIC_CHILD CLASS_NAME="fauna_action_zone"/>
@ -3709,7 +3709,7 @@
<DEFAULT_VALUE VALUE="OUTPOST"/>
</PARAMETER>
<PARAMETER NAME="owner_tribe" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/families"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/families"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
@ -3798,7 +3798,7 @@
<DEFAULT_VALUE VALUE="OUTPOST_MANAGER_EVENT"/>
</PARAMETER>
<PARAMETER NAME="event" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/outpost/manager/event_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/outpost/manager/event_type"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<DYNAMIC_CHILD CLASS_NAME="npc_event_handler_action"/>
@ -3812,7 +3812,7 @@
<DEFAULT_VALUE VALUE="OUTPOST_MANAGER_EVENT_ACTION"/>
</PARAMETER>
<PARAMETER NAME="action" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/outpost/manager/action_type"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/outpost/manager/action_type"/>
</PARAMETER>
<DYNAMIC_CHILD CLASS_NAME="outpost_manager_event_handler_action"/>
</PRIMITIVE>
@ -3913,7 +3913,7 @@
</PARAMETER>
-->
<PARAMETER NAME="continent_name" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/continents"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/continents"/>
</PARAMETER>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
@ -4038,7 +4038,7 @@
-->
<PARAMETER NAME="family" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/families"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/families"/>
</PARAMETER>
<!-- Sample ..
@ -4066,10 +4066,10 @@
</PARAMETER>
-->
<PARAMETER NAME="food" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/fauna_zone_properties"/>
</PARAMETER>
<PARAMETER NAME="rest" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/fauna_zone_properties"/>
</PARAMETER>
<PARAMETER NAME="energy_0_25" TYPE="string" VISIBLE="true" FILENAME="false">
@ -4099,7 +4099,7 @@
</PARAMETER>
-->
<PARAMETER NAME="family" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/families"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/families"/>
</PARAMETER>
<PARAMETER NAME="energy_0_25" TYPE="string" VISIBLE="true" FILENAME="false">
@ -4145,7 +4145,7 @@
<DYNAMIC_CHILD CLASS_NAME="group_template_npc_ml"/>
<STATIC_CHILD CLASS_NAME="alias" NAME="alias"/>
<PARAMETER NAME="flags" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc_zone_properties"/>
</PARAMETER>
</PRIMITIVE>
@ -4540,7 +4540,7 @@
-->
<PARAMETER NAME="family" TYPE="const_string" VISIBLE="true" FILENAME="true" FILE_EXTENSION="html" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/families"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/families"/>
</PARAMETER>
<PARAMETER NAME="energy" TYPE="string" VISIBLE="true" FILENAME="false">
@ -4682,7 +4682,7 @@
</PARAMETER>
<PARAMETER NAME="properties" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/fauna_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/fauna_zone_properties"/>
</PARAMETER>
<PARAMETER NAME="vertical_pos" TYPE="const_string" VISIBLE="true">
@ -4717,7 +4717,7 @@
</PARAMETER>
<PARAMETER NAME="properties" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//property_rep"/>
</PARAMETER>
@ -4751,7 +4751,7 @@
-->
<PARAMETER NAME="properties" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//property_rep"/>
</PARAMETER>
@ -4785,7 +4785,7 @@
-->
<PARAMETER NAME="properties" TYPE="const_string_array" VISIBLE="true" FILENAME="true" FILE_EXTENSION="zone" LOOKUP="true">
<COMBO_FILES CONTEXT_NAME="default" PATH="l:/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PATH="R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/npc_zone_properties"/>
<COMBO_FILES CONTEXT_NAME="default" PRIM_PATH="//property_rep"/>
</PARAMETER>

@ -2315,7 +2315,17 @@ void CMirror::init( std::vector<std::string>& dataSetsToLoad,
CUnifiedNetwork::getInstance()->addCallbackArray( MirrorCbArray, NB_MIRROR_CALLBACKS );
// Load the sheets of the datasets
loadForm( "dataset", IService::getInstance()->WriteFilesDirectory.toString()+"datasets.packed_sheets", _SDataSetSheets );
// if the 'GeorgePaths' config file var exists then we try to perform a mini-scan for sheet files
if (IService::isServiceInitialized() && (IService::getInstance()->ConfigFile.getVarPtr(std::string("GeorgePaths"))!=NULL))
{
loadForm("dataset", IService::getInstance()->WriteFilesDirectory.toString()+"datasets.packed_sheets", _SDataSetSheets, false, false);
}
// if we haven't succeeded in minimal scan (or 'GeorgePaths' wasn't found in config file) then perform standard scan
if (_SDataSetSheets.empty())
{
loadForm("dataset", IService::getInstance()->WriteFilesDirectory.toString()+"datasets.packed_sheets", _SDataSetSheets, true);
}
// Set the tag
nlassert( (tag >= AllTag) && (tag != ExcludedTag) );

@ -0,0 +1,184 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "send_chat.h"
/**
* Send a chat line from system to a player that will be displayed as a normal chat sentence
* Sentence will be formated using "<ServiceName:ServiceId>" as prefix of chat string
*/
void chatToPlayer(const NLMISC::CEntityId &id, const std::string &chatString)
{
NLNET::CMessage msgout("CHAT");
bool talkToPlayer = true;
msgout.serial(talkToPlayer, const_cast<NLMISC::CEntityId&>(id), const_cast<std::string&>(chatString));
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a chat line from system to a group of player that will be displayed as a normal chat sentence
* Sentence will be formated using "<ServiceName:ServiceId>" as prefix of chat string
*/
void chatToGroup(const NLMISC::CEntityId &id, const std::string &chatString)
{
NLNET::CMessage msgout("CHAT");
bool talkToPlayer = false;
msgout.serial(talkToPlayer, const_cast<NLMISC::CEntityId&>(id), const_cast<std::string&>(chatString));
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* phraseId is a phrase identifier in the phrase translation file.
* param are the parameter of the phrase
*/
void npcChatParamToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId, const std::vector<STRING_MANAGER::TParam> &params)
{
NLNET::CMessage msgout("NPC_CHAT_PARAM");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(const_cast<std::string&>(phraseId));
uint32 size = (uint32)params.size();
msgout.serial(size);
// params.resize(size);
for ( uint i = 0; i < size; i++ )
{
uint8 type8 = params[i].Type;
msgout.serial( type8 );
const_cast<STRING_MANAGER::TParam&>(params[i]).serialParam( false, msgout, (STRING_MANAGER::TParamType) type8 );
}
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* phraseId is a phrase identifier in the phrase translation file.
*/
void npcChatToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId)
{
NLNET::CMessage msgout("NPC_CHAT");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(const_cast<std::string&>(phraseId));
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* phraseId is a phrase identifier in the phrase translation file.
*/
void npcChatToChannelEx(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, uint32 phraseId)
{
NLNET::CMessage msgout("NPC_CHAT_EX");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(phraseId);
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* sentence is the sentence to be sent.
*/
void npcChatToChannelSentence(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, ucstring& sentence)
{
NLNET::CMessage msgout("NPC_CHAT_SENTENCE");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentence);
sendMessageViaMirror("IOS", msgout);
}
/**
* Request to the DSS to send a chat line from a bot in a chat channel
* Chat group can be constructed from CChatGroup class.
* sentenceId is the id of the sentence that must be sent by the DSS
*/
void forwardToDss(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId)
{
nlinfo( ("forwarding to DSS : id: "+sentenceId).c_str());
NLNET::CMessage msgout("translateAndForward");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentenceId);
msgout.serial(scenarioId);
NLNET::CUnifiedNetwork::getInstance()->send("DSS",msgout);
}
/**
* Request to the DSS to send a chat line from a bot in a chat channel
* Chat group can be constructed from CChatGroup class.
* sentenceId is the id of the sentence that must be sent by the DSS
*/
void forwardToDssArg(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId,std::vector<float>& argValues)
{
nlinfo( ("forwarding to DSS : id: "+sentenceId).c_str());
NLNET::CMessage msgout("translateAndForwardArg");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentenceId);
msgout.serial(scenarioId);
uint32 size=(uint32)argValues.size(),i=0;
msgout.serial(size);
for(;i<size;++i)
{
msgout.serial(argValues[i]);
}
NLNET::CUnifiedNetwork::getInstance()->send("DSS",msgout);
}
/**
* Send a tell line from a bot (mainly NPC) to a player
* phraseId is a phrase identifier in the phrase translation file.
*/
void npcTellToPlayer(const TDataSetRow &senderId, const TDataSetRow &receiverId, const std::string &phraseId, bool needSenderNpc)
{
NLNET::CMessage msgout;
if ( needSenderNpc )
{
msgout.setType("NPC_TELL");
msgout.serial(const_cast<TDataSetRow&>(senderId));
}
else
{
msgout.setType("GHOST_TELL");
}
msgout.serial(const_cast<TDataSetRow&>(receiverId));
msgout.serial(const_cast<std::string&>(phraseId));
sendMessageViaMirror("IOS", msgout);
}
/**
* Send a tell line from a bot (mainly NPC) to a player. Accept parametered strings
* phraseId is a phrase id obtained through the string manager
*/
void npcTellToPlayerEx(const TDataSetRow &senderId, const TDataSetRow &receiverId, uint32 phraseId)
{
NLNET::CMessage msgout("NPC_TELL_EX");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serial(const_cast<TDataSetRow&>(receiverId));
msgout.serial(phraseId);
sendMessageViaMirror("IOS", msgout);
}
/* End of send_chat.cpp */

@ -35,25 +35,13 @@
* Send a chat line from system to a player that will be displayed as a normal chat sentence
* Sentence will be formated using "<ServiceName:ServiceId>" as prefix of chat string
*/
inline void chatToPlayer(const NLMISC::CEntityId &id, const std::string &chatString)
{
NLNET::CMessage msgout("CHAT");
bool talkToPlayer = true;
msgout.serial(talkToPlayer, const_cast<NLMISC::CEntityId&>(id), const_cast<std::string&>(chatString));
sendMessageViaMirror("IOS", msgout);
}
void chatToPlayer(const NLMISC::CEntityId &id, const std::string &chatString);
/**
* Send a chat line from system to a group of player that will be displayed as a normal chat sentence
* Sentence will be formated using "<ServiceName:ServiceId>" as prefix of chat string
*/
inline void chatToGroup(const NLMISC::CEntityId &id, const std::string &chatString)
{
NLNET::CMessage msgout("CHAT");
bool talkToPlayer = false;
msgout.serial(talkToPlayer, const_cast<NLMISC::CEntityId&>(id), const_cast<std::string&>(chatString));
sendMessageViaMirror("IOS", msgout);
}
void chatToGroup(const NLMISC::CEntityId &id, const std::string &chatString);
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
@ -61,39 +49,14 @@ inline void chatToGroup(const NLMISC::CEntityId &id, const std::string &chatStri
* phraseId is a phrase identifier in the phrase translation file.
* param are the parameter of the phrase
*/
inline void npcChatParamToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId, const std::vector<STRING_MANAGER::TParam> &params)
{
NLNET::CMessage msgout("NPC_CHAT_PARAM");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(const_cast<std::string&>(phraseId));
uint32 size = (uint32)params.size();
msgout.serial(size);
// params.resize(size);
for ( uint i = 0; i < size; i++ )
{
uint8 type8 = params[i].Type;
msgout.serial( type8 );
const_cast<STRING_MANAGER::TParam&>(params[i]).serialParam( false, msgout, (STRING_MANAGER::TParamType) type8 );
}
sendMessageViaMirror("IOS", msgout);
}
void npcChatParamToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId, const std::vector<STRING_MANAGER::TParam> &params);
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* phraseId is a phrase identifier in the phrase translation file.
*/
inline void npcChatToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId)
{
NLNET::CMessage msgout("NPC_CHAT");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(const_cast<std::string&>(phraseId));
sendMessageViaMirror("IOS", msgout);
}
void npcChatToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, const std::string &phraseId);
/**
@ -101,101 +64,41 @@ inline void npcChatToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType
* Chat group can be constructed from CChatGroup class.
* phraseId is a phrase identifier in the phrase translation file.
*/
inline void npcChatToChannelEx(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, uint32 phraseId)
{
NLNET::CMessage msgout("NPC_CHAT_EX");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(phraseId);
sendMessageViaMirror("IOS", msgout);
}
void npcChatToChannelEx(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, uint32 phraseId);
/**
* Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group).
* Chat group can be constructed from CChatGroup class.
* sentence is the sentence to be sent.
*/
inline void npcChatToChannelSentence(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, ucstring& sentence)
{
NLNET::CMessage msgout("NPC_CHAT_SENTENCE");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentence);
sendMessageViaMirror("IOS", msgout);
}
void npcChatToChannelSentence(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, ucstring& sentence);
/**
* Request to the DSS to send a chat line from a bot in a chat channel
* Chat group can be constructed from CChatGroup class.
* sentenceId is the id of the sentence that must be sent by the DSS
*/
inline void forwardToDss(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId)
{
nlinfo( ("forwarding to DSS : id: "+sentenceId).c_str());
NLNET::CMessage msgout("translateAndForward");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentenceId);
msgout.serial(scenarioId);
NLNET::CUnifiedNetwork::getInstance()->send("DSS",msgout);
}
void forwardToDss(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId);
/**
* Request to the DSS to send a chat line from a bot in a chat channel
* Chat group can be constructed from CChatGroup class.
* sentenceId is the id of the sentence that must be sent by the DSS
*/
inline void forwardToDssArg(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId,std::vector<float>& argValues)
{
nlinfo( ("forwarding to DSS : id: "+sentenceId).c_str());
NLNET::CMessage msgout("translateAndForwardArg");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serialEnum(groupType);
msgout.serial(sentenceId);
msgout.serial(scenarioId);
uint32 size=(uint32)argValues.size(),i=0;
msgout.serial(size);
for(;i<size;++i)
{
msgout.serial(argValues[i]);
}
NLNET::CUnifiedNetwork::getInstance()->send("DSS",msgout);
}
void forwardToDssArg(const TDataSetRow &senderId, CChatGroup::TGroupType groupType, std::string& sentenceId,uint32 scenarioId,std::vector<float>& argValues);
/**
* Send a tell line from a bot (mainly NPC) to a player
* phraseId is a phrase identifier in the phrase translation file.
*/
inline void npcTellToPlayer(const TDataSetRow &senderId, const TDataSetRow &receiverId, const std::string &phraseId, bool needSenderNpc=true)
{
NLNET::CMessage msgout;
if ( needSenderNpc )
{
msgout.setType("NPC_TELL");
msgout.serial(const_cast<TDataSetRow&>(senderId));
}
else
{
msgout.setType("GHOST_TELL");
}
msgout.serial(const_cast<TDataSetRow&>(receiverId));
msgout.serial(const_cast<std::string&>(phraseId));
sendMessageViaMirror("IOS", msgout);
}
void npcTellToPlayer(const TDataSetRow &senderId, const TDataSetRow &receiverId, const std::string &phraseId, bool needSenderNpc=true);
/**
* Send a tell line from a bot (mainly NPC) to a player. Accept parametered strings
* phraseId is a phrase id obtained through the string manager
*/
inline void npcTellToPlayerEx(const TDataSetRow &senderId, const TDataSetRow &receiverId, uint32 phraseId)
{
NLNET::CMessage msgout("NPC_TELL_EX");
msgout.serial(const_cast<TDataSetRow&>(senderId));
msgout.serial(const_cast<TDataSetRow&>(receiverId));
msgout.serial(phraseId);
sendMessageViaMirror("IOS", msgout);
}
void npcTellToPlayerEx(const TDataSetRow &senderId, const TDataSetRow &receiverId, uint32 phraseId);
#endif // SEND_CHAT_H

@ -42,9 +42,22 @@ std::map< NLMISC::CSheetId, CStaticLightCycle > CTimeDateSeasonManager::_StaticL
void CTimeDateSeasonManager::init( uint32 /* startDay */, float /* startTime */)
{
// load light cycle sheet
string lightCycleFile = IService::getInstance()->WriteFilesDirectory;
lightCycleFile = lightCycleFile + string("light_cycles.packed_sheets");
loadForm( "light_cycle", lightCycleFile, _StaticLightCyclesHours );
packSheets(IService::getInstance()->WriteFilesDirectory);
}
void CTimeDateSeasonManager::packSheets(const std::string &writeDirectory)
{
// if the 'GeorgePaths' config file var exists then we try to perform a mini-scan for sheet files
if (IService::isServiceInitialized() && (IService::getInstance()->ConfigFile.getVarPtr(std::string("GeorgePaths"))!=NULL))
{
loadForm("light_cycle", writeDirectory + "light_cycles.packed_sheets", _StaticLightCyclesHours, false, false);
}
// if we haven't succeeded in minimal scan (or 'GeorgePaths' wasn't found in config file) then perform standard scan
if ( _StaticLightCyclesHours.empty() )
{
loadForm("light_cycle", writeDirectory + "light_cycles.packed_sheets", _StaticLightCyclesHours, true);
}
}

@ -36,6 +36,7 @@ class CTimeDateSeasonManager
public:
// init RyzomTime, date, weather
static void init( uint32 startDay = RYZOM_START_DAY, float startTime = RYZOM_START_HOUR );
static void packSheets(const std::string &writeDirectory);
// tick update => update ryzom time
static void tickUpdate();

@ -0,0 +1,468 @@
// shop category
ShopCategory = {
"no_bot_chat",
"missions",
"guild_creator",
"characteristics_seller",
"harvest_action",
"craft_action",
"magic_action",
"fight_action",
// Limited to 20 differents level
"LEVEL",
"L1",
"L10",
"L20",
"L50",
"L100",
"L150",
"L200",
"L250",
"L300",
"END_LEVEL",
// Quality of item, 5 quality from 'A' to 'E'
"QUALITY",
"Q20", // energy de 0 à 20
"Q35", // energy de 21 à 35
"Q50", // energy de 36 à 50
"Q65", // energy de 51 à 65
"Q80", // energy de 66 à 80 (et plus)
"END_QUALITY",
// LEVEL must be defined before items
"ITEM_CATEGORY",
"DAGGER",
"SWORD",
"MACE",
"AXE",
"SPEAR",
"STAFF",
"TWO_HAND_SWORD",
"TWO_HAND_AXE",
"PIKE",
"TWO_HAND_MACE",
"AUTOLAUCH",
"BOWRIFLE",
"LAUNCHER",
"PISTOL",
"BOWPISTOL",
"RIFLE",
"AUTOLAUNCH_AMMO",
"BOWRIFLE_AMMO",
"LAUNCHER_AMMO",
"PISTOL_AMMO",
"BOWPISTOL_AMMO",
"RIFLE_AMMO",
"SHIELD",
"BUCKLER",
"LIGHT_BOOTS",
"LIGHT_GLOVES",
"LIGHT_PANTS",
"LIGHT_SLEEVES",
"LIGHT_VEST",
"MEDIUM_BOOTS",
"MEDIUM_GLOVES",
"MEDIUM_PANTS",
"MEDIUM_SLEEVES",
"MEDIUM_VEST",
"HEAVY_BOOTS",
"HEAVY_GLOVES",
"HEAVY_PANTS",
"HEAVY_SLEEVES",
"HEAVY_VEST",
"HEAVY_HELMET",
"ANKLET",
"BRACELET",
"DIADEM",
"EARING",
"PENDANT",
"RING",
"SHEARS",
"ArmorTool",
"AmmoTool",
"MeleeWeaponTool",
"RangeWeaponTool",
"JewelryTool",
"ToolMaker",
"MEKTOUB_PACKER_TICKET",
"MEKTOUB_MOUNT_TICKET",
"MAGICIAN_STAFF",
"HAIR_MALE",
"HAIRCOLOR_MALE",
"TATOO_MALE",
"HAIR_FEMALE",
"HAIRCOLOR_FEMALE",
"TATOO_FEMALE",
"FOOD",
"SERVICE_STABLE",
"JOB_ELEMENT",
"END_ITEM_CATEGORY",
"RM_ITEM_PART",
"MPL", //A (Blade)
"MPH", //B MpH (Hammer)
"MPP", //C MpP (Point)
"MPM", //D MpM (Shaft)
"MPG", //E MpG (Grip)
"MPC", //F MpC (Counterweight)
"MPGA", //G MpGA (Trigger)
"MPPE", //H MpPE (Firing pin)
"MPCA", //I MpCA (Barrel)
"MPE", //J MpE (Explosive)
"MPEN", //K MpEN (Ammo jacket)
"MPPR", //L MpPR (Ammo bullet)
"MPCR", //M MpCR (Armor shell)
"MPRI", //N MpRI (Armor interior coating)
"MPRE", //O MpRE (Armor interieur stuffing)
"MPAT", //P MpAT (Armor clip)
"MPSU", //Q MpSU (Jewel stone support)
"MPED", //R MpED (Jewel stone)
"MPBT", //S MpBT (Blacksmith tool)
"MPPES", //T MpPES (Pestle tool)
"MPSH", //U MpSH (Sharpener tool)
"MPTK", //V MpTK (Tunneling Knife)
"MPJH", //W MpJH (Jewelry hammer)
"MPCF", //X MpCF (Campfire)
"MPVE", //Y MpVE (Clothes)
"MPMF", //Z MpMF (Magic Focus)
"END_RM_ITEM_PART",
"TELEPORT",
"KAMI_TP",
"KARAVAN_TP",
"END_TELEPORT",
"ECOSYSTEM",
"CommonEcosystem",
"Desert",
"Forest",
"Lacustre",
"Jungle",
"Goo",
"PrimaryRoot",
"END_ECOSYSTEM",
"ORIGIN",
"Common",
"Fyros",
"Matis",
"Tryker",
"Zorai",
"Karavan",
"Tribe",
"Refugee",
"END_ORIGIN",
"TOOLS_TYPE",
"CRAFTING_TOOL",
"HARVEST_TOOL",
"TAMING_TOOL",
"TRAINING_TOOL",
"END_TOOLS_TYPE",
"SHOP_TYPE",
"STATIC_SHOP", // Sell NPC Items
"DYNAMIC_SHOP", // Sell Player character Items
"STATIC_DYNAMIC_SHOP", // Sell NPC & Player character Items
"END_SHOP_TYPE",
};
// friendly versions of shop names
ShopNameAliases=
{
"MOUNT: unknown for this time",
//definition of item group aliases
//armor groups
"LARMOR: LIGHT_BOOTS: LIGHT_GLOVES: LIGHT_PANTS: LIGHT_SLEEVES: LIGHT_VEST",
"MARMOR: MEDIUM_BOOTS: MEDIUM_GLOVES: MEDIUM_PANTS: MEDIUM_SLEEVES: MEDIUM_VEST",
"HARMOR: HEAVY_BOOTS: HEAVY_GLOVES: HEAVY_PANTS: HEAVY_SLEEVES: HEAVY_VEST: HEAVY_HELMET",
"LARMORSHIELD: LIGHT_BOOTS: LIGHT_GLOVES: LIGHT_PANTS: LIGHT_SLEEVES: LIGHT_VEST: BUCKLER",
"MARMORSHIELD: MEDIUM_BOOTS: MEDIUM_GLOVES: MEDIUM_PANTS: MEDIUM_SLEEVES: MEDIUM_VEST: BUCKLER: SHIELD",
"HARMORSHIELD: HEAVY_BOOTS: HEAVY_GLOVES: HEAVY_PANTS: HEAVY_SLEEVES: HEAVY_VEST: HEAVY_HELMET: BUCKLER: SHIELD",
//weapon groups
"SHIELDS: SHIELD: BUCKLER",
"MELEE_WEAPON: DAGGER: SWORD: MACE: AXE: SPEAR: STAFF: TWO_HAND_SWORD: TWO_HAND_AXE: PIKE: TWO_HAND_MACE: MAGICIAN_STAFF:",
"MELEE: SHIELDS: MELEE_WEAPON",
"MELEE_WEAPON_1H: DAGGER: SWORD: MACE: AXE: SPEAR: STAFF",
"MELEE_WEAPON_2H: TWO_HAND_SWORD: TWO_HAND_AXE: PIKE: TWO_HAND_MACE: MAGICIAN_STAFF",
"NEWBIELAND_WEAPON_MATIS: DAGGER: SWORD: SPEAR : MAGICIAN_STAFF",
"NEWBIELAND_WEAPON_ZORAI: DAGGER: STAFF: MACE : MAGICIAN_STAFF",
"NEWBIELAND_WEAPON_FYROS: DAGGER: AXE: MACE : MAGICIAN_STAFF",
"NEWBIELAND_WEAPON_TRYKER: DAGGER: STAFF: SWORD : MAGICIAN_STAFF",
"MELEE_WEAPON_NEWBIELAND_ALL: DAGGER: SWORD: MACE: AXE", //NEW newbieland
"MELEE_WEAPON_2H_NEWBIELAND_ALL: TWO_HAND_SWORD: TWO_HAND_AXE: PIKE: TWO_HAND_MACE: MAGICIAN_STAFF", //NEW Newbieland
"AMMO: BOWRIFLE_AMMO: PISTOL_AMMO: BOWPISTOL_AMMO: RIFLE_AMMO: AUTOLAUNCH_AMMO: LAUNCHER_AMMO",
"RANGE_WEAPON: BOWRIFLE: PISTOL: BOWPISTOL: RIFLE: AUTOLAUCH: LAUNCHER",
"RANGE: RANGE_WEAPON: AMMO",
"RANGE_BOW: RANGE_WEAPON: AMMO",
"RANGE_PISTOLRIFLE: RANGE_WEAPON: AMMO",
//tool groups
"CRAFTING_TOOL: ArmorTool: AmmoTool: MeleeWeaponTool: RangeWeaponTool: JewelryTool: ToolMaker",
"HARVEST_TOOL: SHEARS",
"TOOL: CRAFTING_TOOL: HARVEST_TOOL",
"TOOLS_NOOB : ArmorTool: AmmoTool: MeleeWeaponTool: RangeWeaponTool: JewelryTool : HARVEST_TOOL", //NEW Newbieland
//cosmetic groups
"HAIRDRESSING_MALE: HAIR_MALE: HAIRCOLOR_MALE",
"HAIRDRESSING_FEMALE: HAIR_FEMALE: HAIRCOLOR_FEMALE",
//jewel group
"JEWEL: ANKLET: BRACELET: DIADEM: EARING: PENDANT: RING",
//end of definition of item group aliases
//definition of quality alias
"QUALITY_A: Q20",
"QUALITY_B: Q35",
"QUALITY_C: Q50",
"QUALITY_D: Q65",
"QUALITY_E: Q80",
//definition of level level aliases
//newbieland
"REFUGEE_LEVEL: L1: QUALITY_A",
"NEWBIELAND_LEVEL: L10: L20: L50: QUALITY_A",
"RM_NEWBIELAND_LEVEL: L10: L20: L50: QUALITY_A", //only for raw material
//villages
"VILLAGE_LOW_LEVEL: L10: L20: L50: L100: L150: QUALITY_A",
"VILLAGE_MED_LEVEL: L10: L20: L50: L100: L150: L200: QUALITY_A",
"VILLAGE_HIGH_LEVEL: L10: L20: L50: L100: L150: L200: L250: L300: QUALITY_A",
"VILLAGE_LEVEL: L10: L20: L50: QUALITY_A",
"RM_VILLAGE_LEVEL: L10: L20: L50: QUALITY_A", //only for raw material
"RM_VILLAGE_HIGH_LEVEL: L10: L20: L50: L100: L150: L200: L250: L300: QUALITY_A", //only for raw material
//town
"TOWN_LOW_LEVEL: L10: L20: L50: QUALITY_A",
"TOWN_HIGH_LEVEL: L10: L20: L50: L100: QUALITY_A",
"RM_TOWN_LEVEL: L10: L20: L50: L100: L150: QUALITY_A", //only for raw material
//tribe
"TRIBE_LEVEL: L10: L20: L50: L100: L150: L200: L250: L300: QUALITY_A",
//end of definition of level aliases
//definition of regional aliases
//armor
"MATIS_LARMOR: Matis: LARMORSHIELD: STATIC_DYNAMIC_SHOP",
"MATIS_MARMOR: Matis: MARMORSHIELD: STATIC_DYNAMIC_SHOP",
"MATIS_HARMOR: Matis: HARMORSHIELD: STATIC_DYNAMIC_SHOP",
"TRYKER_LARMOR: Tryker: LARMORSHIELD: STATIC_DYNAMIC_SHOP",
"TRYKER_MARMOR: Tryker: MARMORSHIELD: STATIC_DYNAMIC_SHOP",
"TRYKER_HARMOR: Tryker: HARMORSHIELD: STATIC_DYNAMIC_SHOP",
"ZORAI_LARMOR: Zorai: LARMORSHIELD: STATIC_DYNAMIC_SHOP",
"ZORAI_MARMOR: Zorai: MARMORSHIELD: STATIC_DYNAMIC_SHOP",
"ZORAI_HARMOR: Zorai: HARMORSHIELD: STATIC_DYNAMIC_SHOP",
"FYROS_LARMOR: Fyros: LARMORSHIELD: STATIC_DYNAMIC_SHOP",
"FYROS_MARMOR: Fyros: MARMORSHIELD: STATIC_DYNAMIC_SHOP",
"FYROS_HARMOR: Fyros: HARMORSHIELD: STATIC_DYNAMIC_SHOP",
"NEWBIELAND_LARMOR_MATIS: NEWBIELAND_LEVEL: Matis: LARMORSHIELD: STATIC_DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_LARMOR_ZORAI: NEWBIELAND_LEVEL: Zorai: LARMORSHIELD: STATIC_DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_LARMOR_FYROS: NEWBIELAND_LEVEL: Fyros: LARMORSHIELD: STATIC_DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_LARMOR_TRYKER: NEWBIELAND_LEVEL: Tryker: LARMORSHIELD: STATIC_DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_MARMOR: NEWBIELAND_LEVEL: MARMORSHIELD: DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_HARMOR: NEWBIELAND_LEVEL: HARMORSHIELD: DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_LARMOR_ALL : NEWBIELAND_LEVEL: LARMOR: DYNAMIC_SHOP", //NEW newbieland
"NEWBIELAND_MARMOR_ALL : NEWBIELAND_LEVEL: MARMOR: DYNAMIC_SHOP", //NEW newbieland
//weapon
"MATIS_MELEE: Common : Matis: MELEE: STATIC_DYNAMIC_SHOP",
"FYROS_MELEE: Common : Fyros: MELEE: STATIC_DYNAMIC_SHOP",
"ZORAI_MELEE: Common : Zorai: MELEE: STATIC_DYNAMIC_SHOP",
"TRYKER_MELEE: Common : Tryker: MELEE: STATIC_DYNAMIC_SHOP",
"MATIS_MELEE_WEAPON_1H: Common : Matis : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP",
"FYROS_MELEE_WEAPON_1H: Common : Fyros : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP",
"ZORAI_MELEE_WEAPON_1H: Common : Zorai : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP",
"TRYKER_MELEE_WEAPON_1H: Common : Tryker : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP",
"MATIS_MELEE_WEAPON_2H: Common : Matis : MELEE_WEAPON_2H: STATIC_DYNAMIC_SHOP",
"FYROS_MELEE_WEAPON_2H: Common : Fyros : MELEE_WEAPON_2H: STATIC_DYNAMIC_SHOP",
"ZORAI_MELEE_WEAPON_2H: Common : Zorai : MELEE_WEAPON_2H: STATIC_DYNAMIC_SHOP",
"TRYKER_MELEE_WEAPON_2H: Common : Tryker : MELEE_WEAPON_2H: STATIC_DYNAMIC_SHOP",
"MATIS_NEWBIELAND_WEAPON_MATIS: NEWBIELAND_LEVEL: Common : Matis : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP", //only for newbieland
"FYROS_NEWBIELAND_WEAPON_FYROS: NEWBIELAND_LEVEL: Common : Fyros : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP", //only for newbieland
"ZORAI_NEWBIELAND_WEAPON_ZORAI: NEWBIELAND_LEVEL: Common : Zorai : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP", //only for newbieland
"TRYKER_NEWBIELAND_WEAPON_TRYKER: NEWBIELAND_LEVEL: Common : Tryker : MELEE_WEAPON_1H: STATIC_DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_MELEE_WEAPON_2H: NEWBIELAND_LEVEL: MELEE_WEAPON_2H: DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_RANGE_WEAPON: NEWBIELAND_LEVEL: RANGE: DYNAMIC_SHOP", //only for newbieland
"NEWBIELAND_WEAPON_ALL: NEWBIELAND_LEVEL: MELEE_WEAPON_NEWBIELAND_ALL: STATIC_DYNAMIC_SHOP", //NEW newbieland
"MELEE_WEAPON_2H_NEWBIELAND: NEWBIELAND_LEVEL: MELEE_WEAPON_2H_NEWBIELAND_ALL: DYNAMIC_SHOP", //NEW newbieland
"MATIS_RANGE: Common : Matis : RANGE: STATIC_DYNAMIC_SHOP",
"FYROS_RANGE: Common : Fyros : RANGE: STATIC_DYNAMIC_SHOP",
"ZORAI_RANGE: Common : Zorai : RANGE: STATIC_DYNAMIC_SHOP",
"TRYKER_RANGE: Common : Tryker : RANGE: STATIC_DYNAMIC_SHOP",
"MATIS_RANGE_BOW: Common : Matis : RANGE_BOW: STATIC_DYNAMIC_SHOP",
"FYROS_RANGE_BOW: Common : Fyros : RANGE_BOW: STATIC_DYNAMIC_SHOP",
"ZORAI_RANGE_BOW: Common : Zorai : RANGE_BOW: STATIC_DYNAMIC_SHOP",
"TRYKER_RANGE_BOW: Common : Tryker : RANGE_BOW: STATIC_DYNAMIC_SHOP",
"MATIS_RANGE_PISTOLRIFLE: Common : Matis : RANGE_PISTOLRIFLE: STATIC_DYNAMIC_SHOP",
"FYROS_RANGE_PISTOLRIFLE: Common : Fyros : RANGE_PISTOLRIFLE: STATIC_DYNAMIC_SHOP",
"ZORAI_RANGE_PISTOLRIFLE: Common : Zorai : RANGE_PISTOLRIFLE: STATIC_DYNAMIC_SHOP",
"TRYKER_RANGE_PISTOLRIFLE: Common : Tryker : RANGE_PISTOLRIFLE: STATIC_DYNAMIC_SHOP",
//tool
"COMMON_TOOL: Common : TOOL: STATIC_DYNAMIC_SHOP",
"NEWBIELAND_TOOL : Common : TOOLS_NOOB: STATIC_DYNAMIC_SHOP", // NEW Newbieland
//job elements
"COMMON_JOB: Common : JOB_ELEMENT: STATIC_DYNAMIC_SHOP",
//jewel
"MATIS_JEWEL: Matis: JEWEL: DYNAMIC_SHOP",
"TRYKER_JEWEL: Tryker: JEWEL: DYNAMIC_SHOP",
"ZORAI_JEWEL: Zorai: JEWEL: DYNAMIC_SHOP",
"FYROS_JEWEL: Fyros: JEWEL: DYNAMIC_SHOP",
"MATIS_NEWBIELAND_JEWEL:MATIS_JEWEL:NEWBIELAND_LEVEL",
"TRYKER_NEWBIELAND_JEWEL:TRYKER_JEWEL:NEWBIELAND_LEVEL",
"ZORAI_NEWBIELAND_JEWEL:ZORAI_JEWEL:NEWBIELAND_LEVEL",
"FYROS_NEWBIELAND_JEWEL:FYROS_JEWEL:NEWBIELAND_LEVEL",
"NEWBIELAND_JEWEL_ALL: NEWBIELAND_LEVEL: JEWEL: DYNAMIC_SHOP", //NEW Newbieland
//cosmetic
"MATIS_HAIRDRESSING_MALE: Matis: HAIRDRESSING_MALE: STATIC_SHOP",
"MATIS_HAIRDRESSING_FEMALE: Matis: HAIRDRESSING_FEMALE: STATIC_SHOP",
"MATIS_TATOO_MALE: Matis: TATOO_MALE: STATIC_SHOP",
"MATIS_TATOO_FEMALE: Matis: TATOO_FEMALE: STATIC_SHOP",
"TRYKER_HAIRDRESSING_MALE: Tryker: HAIRDRESSING_MALE: STATIC_SHOP",
"TRYKER_HAIRDRESSING_FEMALE: Tryker: HAIRDRESSING_FEMALE: STATIC_SHOP",
"TRYKER_TATOO_MALE: Tryker: TATOO_MALE: STATIC_SHOP",
"TRYKER_TATOO_FEMALE: Tryker: TATOO_FEMALE: STATIC_SHOP",
"ZORAI_HAIRDRESSING_MALE: Zorai: HAIRDRESSING_MALE: STATIC_SHOP",
"ZORAI_HAIRDRESSING_FEMALE: Zorai: HAIRDRESSING_FEMALE: STATIC_SHOP",
"ZORAI_TATOO_MALE: Zorai: TATOO_MALE: STATIC_SHOP",
"ZORAI_TATOO_FEMALE: Zorai: TATOO_FEMALE: STATIC_SHOP",
"FYROS_HAIRDRESSING_MALE: Fyros: HAIRDRESSING_MALE: STATIC_SHOP",
"FYROS_HAIRDRESSING_FEMALE: Fyros: HAIRDRESSING_FEMALE: STATIC_SHOP",
"FYROS_TATOO_MALE: Fyros: TATOO_MALE: STATIC_SHOP",
"FYROS_TATOO_FEMALE: Fyros: TATOO_FEMALE: STATIC_SHOP",
// Item part per item family
"RM_ITEM_PART_MELEE: MPL: MPH: MPP: MPM: MPG: MPC: MPMF: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_RANGE: MPGA: MPPE: MPCA: MPM: MPE: MPEN: MPPR: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_ARMOR: MPCR: MPRI: MPRE: MPAT: MPVE: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_JEWEL: MPSU: MPED: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_MAGIC_FOCUS: MPMF: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_CLOTH: MPVE: STATIC_DYNAMIC_SHOP",
"RM_ITEM_PART_TOOLS: MPBT: MPPES: MPSH: MPTK: MPJH: MPCF: STATIC_DYNAMIC_SHOP",
// Item part per craftgroup
"RM_CRAFTGROUP_AC: MPL: MPP",
"RM_CRAFTGROUP_BF: MPH: MPC",
"RM_CRAFTGROUP_RZ: MPED: MPMF",
"RM_CRAFTGROUP_IM: MPCA: MPCR",
"RM_CRAFTGROUP_HP: MPPE: MPAT",
"RM_CRAFTGROUP_DL: MPM: MPPR",
"RM_CRAFTGROUP_GQ: MPGA: MPSU",
"RM_CRAFTGROUP_EY: MPG: MPVE",
"RM_CRAFTGROUP_KN: MPEN: MPRI",
"RM_CRAFTGROUP_JO: MPE: MPRE",
// All Item parts sold by merchants
"RM_ITEM_PART_SOLD: MPL: MPP: MPH: MPC: MPED: MPMF: MPCA: MPCR: MPPE: MPAT: MPM: MPPR: MPGA: MPSU: MPG: MPVE: MPEN: MPRI: MPE: MPRE: STATIC_DYNAMIC_SHOP",
//forest ecosystem
"RM_FOREST_0: Forest: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_FOREST_1: Forest: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_FOREST_2: Forest: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_FOREST_3: Forest: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_FOREST_4: Forest: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_FOREST_5: Forest: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_FOREST_6: Forest: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//jungle ecosystem
"RM_JUNGLE_0: Jungle: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_1: Jungle: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_2: Jungle: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_3: Jungle: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_4: Jungle: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_5: Jungle: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_JUNGLE_6: Jungle: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//desert ecosystem
"RM_DESERT_0: Desert: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_DESERT_1: Desert: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_DESERT_2: Desert: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_DESERT_3: Desert: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_DESERT_4: Desert: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_DESERT_5: Desert: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_DESERT_6: Desert: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//lake ecosystem
"RM_LAKE_0: Lacustre: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_LAKE_1: Lacustre: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_LAKE_2: Lacustre: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_LAKE_3: Lacustre: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_LAKE_4: Lacustre: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_LAKE_5: Lacustre: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_LAKE_6: Lacustre: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//goo ecosystem
"RM_GOO_0: Goo: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_GOO_1: Goo: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_GOO_2: Goo: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_GOO_3: Goo: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_GOO_4: Goo: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_GOO_5: Goo: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_GOO_6: Goo: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//primary root ecosystem
"RM_PRIMROOT_0: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_MELEE: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_1: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_RANGE: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_2: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_ARMOR: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_3: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_JEWEL: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_4: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_MAGIC_FOCUS: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_5: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_CLOTH: STATIC_DYNAMIC_SHOP",
"RM_PRIMROOT_6: PrimaryRoot: CommonEcosystem: RM_ITEM_PART_TOOLS: STATIC_DYNAMIC_SHOP", //not used in craft at this time
//Stable boys items:
"STABLE_BOY_MATIS: Common: Matis: SERVICE_STABLE: FOOD: MEKTOUB_PACKER_TICKET: MEKTOUB_MOUNT_TICKET: STATIC_DYNAMIC_SHOP",
"STABLE_BOY_ZORAI: Common: Zorai: SERVICE_STABLE: FOOD: MEKTOUB_PACKER_TICKET: MEKTOUB_MOUNT_TICKET: STATIC_DYNAMIC_SHOP",
"STABLE_BOY_FYROS: Common: Fyros: SERVICE_STABLE: FOOD: MEKTOUB_PACKER_TICKET: MEKTOUB_MOUNT_TICKET: STATIC_DYNAMIC_SHOP",
"STABLE_BOY_TRYKER: Common: Tryker: SERVICE_STABLE: FOOD: MEKTOUB_PACKER_TICKET: MEKTOUB_MOUNT_TICKET: STATIC_DYNAMIC_SHOP",
//end of definition of regional aliases
"KAMI_TP_FOREST: KAMI_TP: Forest",
"KAMI_TP_JUNGLE: KAMI_TP: Jungle",
"KARAVAN_TP_FOREST: KARAVAN_TP: Forest",
"KARAVAN_TP_JUNGLE: KARAVAN_TP: Jungle",
"FYROS_HARVEST_ACTION: Common : Fyros: harvest_action",
"FYROS_CRAFT_ACTION: Common : Fyros: craft_action",
"FYROS_MAGIC_ACTION: Common : Fyros: magic_action",
"FYROS_FIGHT_ACTION: Common : Fyros: fight_action",
"MATIS_HARVEST_ACTION: Common : Matis: harvest_action",
"MATIS_CRAFT_ACTION: Common : Matis: craft_action",
"MATIS_MAGIC_ACTION: Common : Matis: magic_action",
"MATIS_FIGHT_ACTION: Common : Matis: fight_action",
"TRYKER_HARVEST_ACTION: Common: Tryker: harvest_action",
"TRYKER_CRAFT_ACTION: Common :Tryker: craft_action",
"TRYKER_MAGIC_ACTION: Common :Tryker: magic_action",
"TRYKER_FIGHT_ACTION: Common :Tryker: fight_action",
"ZORAI_HARVEST_ACTION: Common : Zorai: harvest_action",
"ZORAI_CRAFT_ACTION: Common :Zorai: craft_action",
"ZORAI_MAGIC_ACTION: Common :Zorai: magic_action",
"ZORAI_FIGHT_ACTION: Common :Zorai: fight_action",
};

@ -0,0 +1,741 @@
<?xml version="1.0"?>
<FORM Revision="$Revision: 1.2 $" State="modified">
<STRUCT>
<ARRAY Name="properties">
<STRUCT>
<ATOM Name="name" Value="Civilisation"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Guild"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="FameMemory"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_0"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_1"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_2"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_3"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_4"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_5"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_6"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_7"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_8"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_9"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_10"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_11"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_12"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_13"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_14"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_15"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_16"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_17"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_18"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_19"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_20"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_21"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_22"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_23"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_24"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_25"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_26"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_27"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_28"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_29"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_30"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_31"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_32"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_33"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_34"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_35"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_36"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_37"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_38"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_39"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_40"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_41"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_42"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_43"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_44"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_45"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_46"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_47"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_48"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_49"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_50"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_51"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_52"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_53"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_54"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_55"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_56"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_57"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_58"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_59"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_60"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_61"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_62"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_63"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_64"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_65"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_66"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_67"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_68"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_69"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_70"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_71"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_72"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_73"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_74"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_75"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_76"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_77"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_78"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_79"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_80"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_81"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_82"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_83"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_84"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_85"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_86"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_87"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_88"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_89"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_90"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_91"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_92"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_93"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_94"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_95"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_96"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_97"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_98"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fame_99"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
</ARRAY>
<ATOM Name="max number of rows or entities" Value="1000"/>
<ARRAY Name="entity types">
<ATOM Value="player"/>
<ATOM Value="guild"/>
<ATOM Value="civilisation"/>
<ATOM Value="fame_memory"/>
</ARRAY>
</STRUCT>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<LOG>Fri Dec 12 14:17:11 2003 (saffray) .entity types[1] = 13
Fri Dec 12 14:17:11 2003 (saffray) .entity types[2] = 14</LOG>
</FORM>

@ -0,0 +1,365 @@
<?xml version="1.0"?>
<FORM Revision="$Revision: 1.37 $" State="modified">
<STRUCT>
<ARRAY Name="properties">
<STRUCT>
<ATOM Name="name" Value="Sheet"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="10"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="SheetServer"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="10"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="X"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Y"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Z"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Theta"/>
<ATOM Name="type" Value="float"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="AIInstance"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Mode"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="8"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Behaviour"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="5"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="NameIndex"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="2"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Target"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="2"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="VisualPropertyA"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="VisualPropertyB"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="VisualPropertyC"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="EntityMounted"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="RiderEntity"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="TickPos"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="LocalX"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="4"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="LocalY"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="4"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="LocalZ"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="4"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="ContextualProperty"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="AvailableImpulseBitSize"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Cell"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="VisionCounter"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CombatState"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CurrentHitPoints"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="MaxHitPoints"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="BestRole"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="BestRoleLevel"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CurrentRunSpeed"/>
<ATOM Name="type" Value="float"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CurrentWalkSpeed"/>
<ATOM Name="type" Value="float"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Stunned"/>
<ATOM Name="type" Value="boolean"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="WhoSeesMe"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Bars"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="TeamId"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="ActionFlags"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="TargetList"/>
<ATOM Name="type" Value="sint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
<ATOM Name="is a list" Value="true"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="VisualFX"/>
<ATOM Name="type" Value="sint16"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="GuildSymbol"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="GuildNameId"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="EventFactionId"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="PvpMode"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="PvpClan"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Fuel"/>
<ATOM Name="type" Value="boolean"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="InOutpostZoneAlias"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="InOutpostZoneSide"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="OwnerPeople"/>
<ATOM Name="type" Value="uint8"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="3"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="OutpostInfos"/>
<ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="NPCAlias"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
</ARRAY>
<ATOM Name="max number of rows or entities" Value="15000"/>
<ARRAY Name="entity types">
<ATOM Value="player"/>
<ATOM Value="object"/>
<ATOM Value="npc"/>
<ATOM Value="creature"/>
<ATOM Value="forageSource"/>
<ATOM Value="fx_entity"/>
</ARRAY>
</STRUCT>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<LOG></LOG>
</FORM>

@ -0,0 +1,47 @@
<?xml version="1.0"?>
<FORM Revision="$Revision: 1.1 $" State="modified">
<STRUCT>
<ARRAY Name="properties">
<STRUCT>
<ATOM Name="name" Value="ItemId"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CreatureSheet"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="OwnerIndex"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="CreatureIndex"/>
<ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
<STRUCT>
<ATOM Name="name" Value="Order"/>
<ATOM Name="type" Value="uint64"/>
<ATOM Name="persistant" Value="false"/>
<ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/>
</STRUCT>
</ARRAY>
<ATOM Name="max number of rows or entities" Value="1"/>
<ARRAY Name="entity types">
<ATOM Value="4"/>
</ARRAY>
</STRUCT>
<LOG></LOG>
</FORM>

@ -1,196 +0,0 @@
<?xml version="1.0"?>
<FORM Revision="$Revision: 1.4 $" State="modified">
<STRUCT>
<ARRAY Name="PropertyArray">
<STRUCT>
<ATOM Name="PropertyId" Value="0"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="PropertyName" Value="X"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="1"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="PropertyName" Value="Y"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="2"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="PropertyName" Value="Z"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="3"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="PropertyName" Value="Theta"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
<ATOM Name="DistThreshold" Value="50000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="4"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="Sheet"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint32"/>
<ATOM Name="DistThreshold" Value="500000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="5"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="Behaviour"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint32"/>
<ATOM Name="DistThreshold" Value="60000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="6"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="NameIndex"/>
<ATOM Name="ServiceOwner" Value="IOS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint32"/>
<ATOM Name="DistThreshold" Value="25000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="7"/>
<ATOM Name="NbBits" Value="64"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="Target"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="Sid"/>
<ATOM Name="DistThreshold" Value="20000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="8"/>
<ATOM Name="NbBits" Value="8"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="Mode"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint8"/>
<ATOM Name="DistThreshold" Value="500000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="9"/>
<ATOM Name="NbBits" Value="64"/>
<ATOM Name="PropertyName" Value="VisualPropertyA"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint64"/>
<ATOM Name="DistThreshold" Value="500000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="10"/>
<ATOM Name="NbBits" Value="40"/>
<ATOM Name="PropertyName" Value="VisualPropertyB"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint64"/>
<ATOM Name="DistThreshold" Value="20000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="11"/>
<ATOM Name="NbBits" Value="44"/>
<ATOM Name="PropertyName" Value="VisualPropertyC"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint64"/>
<ATOM Name="DistThreshold" Value="10000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="12"/>
<ATOM Name="NbBits" Value="64"/>
<ATOM Name="PropertyName" Value="EntityMounted"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="Sid"/>
<ATOM Name="DistThreshold" Value="500000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="13"/>
<ATOM Name="NbBits" Value="64"/>
<ATOM Name="PropertyName" Value="RiderEntity"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="Sid"/>
<ATOM Name="DistThreshold" Value="500000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="14"/>
<ATOM Name="NbBits" Value="16"/>
<ATOM Name="PropertyName" Value="ContextualProperty"/>
<ATOM Name="ServiceOwner" Value="EGS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint16"/>
<ATOM Name="DistThreshold" Value="100000"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="-1"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="false"/>
<ATOM Name="PropertyName" Value="TickPos"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="uint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="-3"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="Union" Value="true"/>
<ATOM Name="Shift" Value="32"/>
<ATOM Name="PropertyName" Value="LocalX"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="-4"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="Union" Value="true"/>
<ATOM Name="Shift" Value="32"/>
<ATOM Name="PropertyName" Value="LocalY"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
<STRUCT>
<ATOM Name="PropertyId" Value="-5"/>
<ATOM Name="NbBits" Value="32"/>
<ATOM Name="Continuous" Value="true"/>
<ATOM Name="Union" Value="true"/>
<ATOM Name="Shift" Value="32"/>
<ATOM Name="PropertyName" Value="LocalZ"/>
<ATOM Name="ServiceOwner" Value="GPMS"/>
<ATOM Name="UpdateFrequency" Value="1"/>
<ATOM Name="PropertyType" Value="sint32"/>
</STRUCT>
</ARRAY>
</STRUCT>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<STRUCT/>
<LOG>Fri Jan 24 14:13:14 2003 (saffray) formName Resized = 19
Fri Jan 24 14:17:14 2003 (saffray) formName Deleted = </LOG>
</FORM>

@ -0,0 +1,16 @@
shard_ctrl_definitions.txt: Contains all macros for various shard services and shard configurations.
shard_ctrl_mini01.txt: Example configuration for a development domain with a single mainland and a single ring shard running on one machine.
terminal_mini01: Contains the terminal to control the patch managers of the mini01 domain. To deploy the shard configuration, install the patchman services on all services, run the terminal and hit Deploy. You may need to hit Deploy a second time if it gives an error. To install the patch version 1, run 'terminal.install mini01 1', this can be done while a previous version is still running. To launch the new version, stop the shard, then run 'terminal.launch mini01 1', this will swap the live version with the next version, and launch the shard immediately.
shard_ctrl_std01.txt: Example configuration for a full blown domain with multiple shards.
terminal_std01: Contains the terminal to control the patch managers of the mini01 domain.
default: Contains base configuration files of the services containing per-service non-domain non-shard specific values.
cfg: Contains base configuration files with domain and shard type specific values.
admin_install: Contains the scripts to launch the patch manager and the shard. This directory is built into admin_install.tgz by the build pipeline. Subdirectory patchman requires addition of the ryzom_patchman_service executable on the server, the build pipeline adds this file into the tgz archive automatically, do not add it manually. The patchman_service_local.cfg file must be installed manually per server to contain the hostname of the server. The contents of the admin_install.tgz must be installed manually to the server the first time a server is deployed. The working directory is assumed to be /srv/core, which will contain /srv/core/bin and /srv/core/patchman. The configurations under patchman must be modified to match your own domains. Launch /srv/core/bin/startup to launch the patchman services. Run '/srv/core/bin/admin stop' to stop the patchman services. There is one bridge server, which is tied to one domain, but is used by the other domains as well. The bridge server has a folder /srv/core/bridge_server, which is generated by the build pipeline when creating a new server patch.

@ -0,0 +1,129 @@
#!/bin/sh
CMD=$*
if [ "$CMD" = "" ]
then
echo
echo Screen sessions currently running:
screen -list
echo
echo "Commands:"
echo " 'start' to start the admin"
echo " 'stop' to stop the admin"
echo " 'join' to join the admin's screen session"
echo " 'share' to join the admin if session is shared mode"
echo
printf "Enter a command: "
read CMD
fi
if [ "$CMD" = "stop" ]
then
for s in $(screen -list | grep "\.admin.*" | awk '{ print $1 }'); do screen -drR $s -X quit; done
fi
if [ "$CMD" = "start" ]
then
# force the ulimit just in case (so that we can generate cores)
ulimit -c unlimited
# stop any admin sessions that were already up
for s in $(screen -list | grep "\.admin.*" | awk '{ print $1 }'); do screen -drR $s -X quit; done
# start the main admin session
screen -d -m -S admin -c /srv/core/bin/admin.screen.rc
# decide which hostname to use...
HOSTNAME=$(hostname)
if [ $(grep $HOSTNAME /srv/core/patchman/special_patchman_list | wc -w) = 0 ]
then
HOSTNAME=$(hostname -s)
fi
# if this machine has associated special admin functins then start the appropriate admin sessions
echo Looking for sessions for host: $HOSTNAME
for ROLE in $(grep $HOSTNAME /srv/core/patchman/special_patchman_list | awk '{ print $1 }')
do
ROLE_DIR=/srv/core/$ROLE
SRC_CFG_FILE=/srv/core/patchman/patchman_service.$ROLE.cfg
# make sure the cfg file exists for the patchman we're to launch
if [ -e $SRC_CFG_FILE ]
then
# preliminary setup prior to launching special admin patchman
CFG_FILE=$ROLE_DIR/patchman_service.cfg
SCREEN_NAME=admin_$ROLE
mkdir -p $ROLE_DIR
cp -v $SRC_CFG_FILE $CFG_FILE
# wait 2 seconds before launching the next admin to reduce system conflict
sleep 2
# start the next patchman in its own screen session
pushd $ROLE_DIR > /dev/null
echo STARTING $SCREEN_NAME \($ROLE\)
screen -d -m -S $SCREEN_NAME /bin/sh /srv/core/patchman/loop_special_patchman.sh /srv/core/patchman/ryzom_patchman_service -L. -C.
popd > /dev/null
else
# the patchman\'s cfg couln\'t be found so complain and ignore
echo FILE NOT FOUND: $SRC_CFG_FILE
fi
done
# try launching the screen sessions that correspond to the machine type that we have...
# get the domain list
cd /srv/core/patchman/
if [ $(grep $(hostname) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname) auto_start_domain_list | cut -d\ -f2-)
elif [ $(grep $(hostname -s) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname -s) auto_start_domain_list | cut -d\ -f2-)
elif [ $(grep $(hostname -d) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname -d) auto_start_domain_list | cut -d\ -f2-)
else
echo "There are no domains to be autostarted here"
DOMAIN_LIST=none
fi
# if we have a domain list for this machine then deal with it...
if [ "$DOMAIN_LIST" != none ]
then
# iterate over the domain list...
for f in $DOMAIN_LIST
do
# see if we're setup to run this domain
if [ -e /srv/core/${f}.screen.rc ] && [ -e /srv/core/bin/${f} ]
then
# see whether the domain is alredy running
if [ $( screen -list | grep \( | cut -f2 | cut -d. -f2| grep \^$f\$ | wc -l) == 0 ]
then
# the domain isn't running yet so start it
echo '****' starting domain: $f '****'
/srv/core/bin/$f batchstart
else
echo '****' Domain is already running: $f '****'
fi
else
echo skipping domain: $f
fi
done
fi
fi
if [ "$CMD" = "join" ]
then
screen -r -S admin
fi
if [ "$CMD" = "share" ]
then
screen -r -x -S admin
fi

@ -0,0 +1,19 @@
# ------------------------------------------------------------------------------
# SCREEN KEYBINDINGS
# ------------------------------------------------------------------------------
# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
# patchman
chdir "/srv/core/patchman/"
screen -t patchman /bin/sh ./loop_patchman.sh

@ -0,0 +1,7 @@
if [ -z $1 ]
then
ps -edf | grep _service | grep -v grep
else
ps -edf | grep _service | grep -v grep | grep $*
fi

@ -0,0 +1,30 @@
#!/bin/sh
while true
do
if [ "$2" == "" ]
then
echo
echo USAGE: $0 sleep_time command_line
echo
echo example:
echo $0 3 echo hello world
echo waits 3 seconds then displays 'hello world' repeatedly, asking player to hit enter between each line
echo
break
fi
sleep $1
shift
CMD=$*
while [ "$CMD" != "" ]
do
eval $CMD
echo "press enter"
read toto
done
break
done

@ -0,0 +1,88 @@
#!/bin/sh
CMD=$1
DOMAIN=$(pwd|sed s%/srv/core/%%)
if [ "$CMD" = "" ]
then
echo
echo Screen sessions currently running:
screen -list
echo
echo "Commands:"
echo " 'start' to start the shard"
echo " 'stop' to stop the ${DOMAIN}"
echo " 'join' to join the ${DOMAIN}'s screen session"
echo " 'share' to join the screen session in shared mode"
echo " 'state' to view state information for the ${DOMAIN}"
echo
printf "Enter a command: "
read CMD
fi
if [ "$CMD" = "stop" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot stop domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -d -r $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//') -X quit> /dev/null
rm -v */*.state
rm -v */*launch_ctrl ./global.launch_ctrl
fi
fi
STARTARGS=
if [ "$CMD" = "batchstart" ]
then
STARTARGS='-d -m'
CMD='start'
fi
if [ "$CMD" = "start" ]
then
ulimit -c unlimited
screen -wipe > /dev/null
if [ $( screen -list | grep \\\.${DOMAIN} | wc -w ) != 0 ]
then
echo Cannot start domain \'${DOMAIN}\' because this domain is already started
screen -list | grep $DOMAIN
else
screen $STARTARGS -S ${DOMAIN} -c /srv/core/${DOMAIN}.screen.rc
fi
fi
if [ "$CMD" = "join" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot join domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -r $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//')
fi
fi
if [ "$CMD" = "share" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot join domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -r -x $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//')
fi
fi
if [ "$CMD" = "state" ]
then
echo State of domain ${DOMAIN}:
if [ $(echo */*.state) = "*/*.state" ]
then
echo - No state files found
else
grep RUNNING *state
fi
fi

@ -0,0 +1,4 @@
#!/bin/sh
cd /srv/core/mini01
/bin/sh /srv/core/bin/ryzom_domain_screen_wrapper.sh $*

@ -0,0 +1,11 @@
#!/bin/sh
cd /srv/core
rm */*.state */*/*.launch_ctrl */*/*.state
/bin/bash /srv/core/bin/admin start
# special case for the "ep1.std01.ryzomcore.org" machine - start the admin tool graph sync script
if [ $(hostname) = "ep1.std01.ryzomcore.org" ]
then
nohup /bin/sh /srv/core/bin/sync_rrd_graphs.sh &
fi

@ -0,0 +1,22 @@
#!/bin/sh
echo Launched: $(date)
while true
do
# retrieve ATS files from ATS admin tool machine
rsync -t ep1.std01.ryzomcore.org:ats/graph_datas/* /srv/core/mini01/rrd_graphs/
# deal with live files - duplicate files that correspond to unique services to aid with graphing of su & co
cd /srv/core/std01/rrd_graphs/
for f in $(ls *rrd | awk '/^[^_]*\./'); do cp $f $(cut -d. -f1)_unifier.$(cut -d. -f2-); done
rsync -t /srv/core/std01/rrd_graphs/* csr:std01_rrd_graphs/
# deal with test files files - see comment regarding live files above
cd /srv/core/mini01/rrd_graphs/
for f in $(ls *rrd | awk '/^[^_]*\./'); do cp $f $(echo $f|cut -d. -f1)_unifier.$(echo $f|cut -d. -f2-); done
rsync -t /srv/core/mini01/rrd_graphs/* csr:mini01_rrd_graphs/
# display a groovy message
echo Finished rsync: $(date)
sleep 60
done

@ -0,0 +1,99 @@
// I'm the AES, I'll not connect to myself!
DontUseAES = 1;
// I don't need a connection to a naming service
DontUseNS = 1;
DontLog = 1;
AESAliasName= "aes";
//
DontUseStdIn = 0;
// Adress ofthe admin service (default port is 49996)
ASHost = "ep1.mini01.ryzomcore.org";
// Config for AES
AESPort = "46712";
AESHost = "localhost";
ASPort = "46711";
// in second, -1 for not restarting
RestartDelay = 60;
// how many second before aborting the request if not finished
RequestTimeout = 5;
// log path for advanced log report
LogPath = "/.";
// setup for deployment environment with external configuration system responsible for launching apps and
// for configuring AES services
DontLaunchServicesDirectly = 1;
UseExplicitAESRegistration = 1;
KillServicesOnDisconnect = 1;
// If the update loop is too slow, a thread will produce an assertion.
// By default, the value is set to 10 minutes.
// Set to 0 for no assertion.
UpdateAssertionThreadTimeout = 0;
DefaultMaxExpectedBlockSize = 200000000; // 200 M !
DefaultMaxSentBlockSize = 200000000; // 200 M !
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
NegFiltersDebug = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "PATH", "BSIF" };
NegFiltersInfo = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "CF", " ping", " pong" };
NegFiltersWarning = { "CT_LRC" };
#include "./aes_alias_name.cfg"
StartCommands=
{
// Create a gateway module
"moduleManager.createModule StandardGateway gw",
// add a layer 5 transport
"gw.transportAdd L5Transport l5",
// open the transport
"gw.transportCmd l5(open)",
/// Create default connection with admin executor service
// Create a gateway module
"moduleManager.createModule StandardGateway gw_aes",
// create the admin executor service module
"moduleManager.createModule AdminExecutorServiceClient aes_client",
"aes_client.plug gw_aes",
// create a layer 3 client to connect to aes gateway
"gw_aes.transportAdd L3Client aes_l3c",
"gw_aes.transportCmd aes_l3c(connect addr="+AESHost+":"+AESPort+")",
// create the admin executor service module
"moduleManager.createModule AdminExecutorService aes",
// create a gateway to connect to as
"moduleManager.createModule StandardGateway asc_gw",
// create a layer 3 client
"asc_gw.transportAdd L3Client l3c",
"asc_gw.transportCmd l3c(connect addr="+ASHost+":"+ASPort+")",
// create a gateway for services to connect
"moduleManager.createModule StandardGateway aes_gw",
// create a layer 3 server
"aes_gw.transportAdd L3Server l3s",
"aes_gw.transportOptions l3s(PeerInvisible)",
"aes_gw.transportCmd l3s(open port="+AESPort+")",
// plug the as
"aes.plug asc_gw",
"aes.plug aes_gw",
};

@ -0,0 +1,99 @@
// I'm the AES, I'll not connect to myself!
DontUseAES = 1;
// I don't need a connection to a naming service
DontUseNS = 1;
DontLog = 1;
AESAliasName= "aes";
//
DontUseStdIn = 0;
// Adress ofthe admin service (default port is 49996)
ASHost = "ep1.std01.ryzomcore.org";
// Config for AES
AESPort = "46702";
AESHost = "localhost";
ASPort = "46701";
// in second, -1 for not restarting
RestartDelay = 60;
// how many second before aborting the request if not finished
RequestTimeout = 5;
// log path for advanced log report
LogPath = "/.";
// setup for deployment environment with external configuration system responsible for launching apps and
// for configuring AES services
DontLaunchServicesDirectly = 1;
UseExplicitAESRegistration = 1;
KillServicesOnDisconnect = 1;
// If the update loop is too slow, a thread will produce an assertion.
// By default, the value is set to 10 minutes.
// Set to 0 for no assertion.
UpdateAssertionThreadTimeout = 0;
DefaultMaxExpectedBlockSize = 200000000; // 200 M !
DefaultMaxSentBlockSize = 200000000; // 200 M !
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
NegFiltersDebug = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "PATH", "BSIF" };
NegFiltersInfo = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "CF", " ping", " pong" };
NegFiltersWarning = { "CT_LRC" };
#include "./aes_alias_name.cfg"
StartCommands=
{
// Create a gateway module
"moduleManager.createModule StandardGateway gw",
// add a layer 5 transport
"gw.transportAdd L5Transport l5",
// open the transport
"gw.transportCmd l5(open)",
/// Create default connection with admin executor service
// Create a gateway module
"moduleManager.createModule StandardGateway gw_aes",
// create the admin executor service module
"moduleManager.createModule AdminExecutorServiceClient aes_client",
"aes_client.plug gw_aes",
// create a layer 3 client to connect to aes gateway
"gw_aes.transportAdd L3Client aes_l3c",
"gw_aes.transportCmd aes_l3c(connect addr="+AESHost+":"+AESPort+")",
// create the admin executor service module
"moduleManager.createModule AdminExecutorService aes",
// create a gateway to connect to as
"moduleManager.createModule StandardGateway asc_gw",
// create a layer 3 client
"asc_gw.transportAdd L3Client l3c",
"asc_gw.transportCmd l3c(connect addr="+ASHost+":"+ASPort+")",
// create a gateway for services to connect
"moduleManager.createModule StandardGateway aes_gw",
// create a layer 3 server
"aes_gw.transportAdd L3Server l3s",
"aes_gw.transportOptions l3s(PeerInvisible)",
"aes_gw.transportCmd l3s(open port="+AESPort+")",
// plug the as
"aes.plug asc_gw",
"aes.plug aes_gw",
};

@ -0,0 +1,18 @@
#!/bin/sh -
DOMAIN=$(pwd |sed "s%/srv/core/%%")
while(true)
do
echo AESAliasName= \"aes_$(hostname -s)\"\; > ./aes_alias_name.cfg
if [ $(grep "AESPort[ \t]*=" */*cfg | grep -v debug | sed "s/.*=[ \t]*//" | sort -u | wc -l) != 1 ] ; then echo - FIXME: services don\'t agree on AESPort ; read ; fi
echo AESPort=$(grep "AESPort[ \t]*=" */*cfg| grep -v debug | sed "s/.*=[ \t]*//" | sort -u) >> ./aes_alias_name.cfg
if [ $(grep "ASPort[ \t]*=" */*cfg | grep -v debug | sed "s/.*=[ \t]*//" | sort -u | wc -l) != 1 ] ; then echo - FIXME: services don\'t agree on ASPort ; read ; fi
echo ASPort=$(grep "ASPort[ \t]*=" */*cfg| grep -v debug | sed "s/.*=[ \t]*//" | sort -u) >> ./aes_alias_name.cfg
./live/service_ryzom_admin_service/ryzom_admin_service -A. -C. -L. --nobreak --fulladminname=admin_executor_service --shortadminname=AES
sleep 2
done

@ -0,0 +1,55 @@
#!/bin/sh
while true
do
cd /srv/core/
if [ -e /srv/core/admin_install.tgz ]
then
tar xvzf admin_install.tgz
chmod 775 bin/admin 2> /dev/null
chmod 775 bin/ps_services 2> /dev/null
chmod 775 bin/run_forever 2> /dev/null
chmod 775 bin/shard 2> /dev/null
chmod 775 bin/startup 2> /dev/null
chmod 775 bin/*.sh 2> /dev/null
chmod 775 patchman/*_service 2> /dev/null
chmod 775 patchman/*.sh 2> /dev/null
fi
cd /srv/core/patchman/
if [ $(grep $(hostname) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname) patchman_list | awk '{ print $1 }')
elif [ $(grep $(hostname -s) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname -s) patchman_list | awk '{ print $1 }')
elif [ $(grep $(hostname -d) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname -d) patchman_list | awk '{ print $1 }')
else
export SERVER_TYPE=default
echo "ERROR: Neither \'hostname\' \($(hostname)\) nor \'hostname -s\' \($(hostname -s)\) nor \'hostname -d\' \($(hostname -d)\) found in $(pwd)/patchman_list"
fi
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
if [ ! -e $CFGFILENAME ]
then
echo ERROR: Failed to locate the following file: $CFGFILENAME
echo using default files
export SERVER_TYPE=default
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
if [ ! -e $CFGFILENAME ]
then
echo ERROR: Failed to locate the following DEFAULT file: $CFGFILENAME
echo "press enter"
read toto
exit
fi
fi
echo ssh keys file: $KEYSFILENAME
echo cfg file: $CFGFILENAME
/bin/sh loop_patchman_once.sh
done

@ -0,0 +1,39 @@
#!/bin/sh
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
echo cfg file: $CFGFILENAME
AESCFGFILENAME=admin_executor_service_default.${SERVER_TYPE}.cfg
echo aes cfg file: $AESCFGFILENAME
cd /srv/core/patchman
if [ -e $CFGFILENAME ]
then
# setup the config file for the patchman
echo Using configuration file: $CFGFILENAME
cp $CFGFILENAME patchman_service.cfg
# setup the config file for the admin executor service
echo Using aes configuration file: $AESCFGFILENAME
if [ -e $AESCFGFILENAME ] ; then cp $AESCFGFILENAME admin_executor_service_default.cfg ; fi
# start the patchman service
echo Launching patchman...
./ryzom_patchman_service -C. -L.
sleep 2
if [ -e core* ]
then
if [ -e dont_keep_cores ]
then
rm core*
fi
fi
else
echo ERROR: Failed to locate config file: $CFGFILENAME
echo trying again in a few seconds...
sleep 10
fi
cd -

@ -0,0 +1,19 @@
#!/bin/sh
if [ "$1" == "" ]
then
echo
echo USAGE: $0 command_line
echo
echo example:
echo $0 echo hello world
echo displays 'hello world' repeatedly, delaying 3 seconds between repeats
echo
exit
fi
while true
do
sleep 3
eval $*
done

@ -0,0 +1,110 @@
#! /bin/sh -
# note: this script should be run from a domain directory such as /srv/core/std01 or /srv/core/mini01
DOMAIN=$(pwd |sed 's/\/srv\/core\///')
if [ "patchman" = "$DOMAIN" ]; then DOMAIN= ; fi
if [ "bin" = "$DOMAIN" ]; then DOMAIN= ; fi
if [ "$DOMAIN" != $(echo $DOMAIN|sed 's/\///g') ]; then DOMAIN= ; fi
if [ _"${DOMAIN}"_ = __ ]
then
echo This is not a valid directory for running this script
exit
fi
# tell the aes to shut everybody down
printf "0" > ./global.launch_ctrl
# before entering the 'Waiting for Services' loop, get rid of the ras/ras.state file because the ras doesn't stop properly otherwise
if [ -f ras/ras.state ]
then
rm ras/ras.state
fi
# while there are still services running, wait
while [ $(grep -i RUNNING . */*.state|wc -l) != 0 ]
do
echo $DOMAIN: Waiting for $(grep -i RUNNING . */*.state|wc -l) Services to stop
sleep 2
done
# stop the screen for the shard (if there is one)
screen -drR -S $DOMAIN -X quit> /dev/null
sleep 1
# rename any old core files
for COREFILE in */core*
do
mv $COREFILE $(echo $COREFILE|sed "s%/.*%%")/v$(cat live/version)_$(echo $COREFILE|sed "s%.*/%%")
done
# rename any old log files
for LOGFILE in */log*.log
do
mv $LOGFILE $(echo $LOGFILE|sed "s%/.*%%")/v$(cat live/version)_$(echo $LOGFILE|sed "s%.*/%%")
done
# swap the live and next directories
rm -r old_live/* 2> /dev/null
echo next=$(cat next/version) live=$(cat live/version)
mv live old_live
echo next=$(cat next/version) old_live=$(cat old_live/version)
mv next live
echo old_live=$(cat old_live/version) live=$(cat live/version)
mv old_live next
echo next=$(cat next/version) live=$(cat live/version)
# restore any old log files in case of return to previous version
for LOGFILE in */v$(cat live/version)_log*.log
do
mv $LOGFILE $(echo $LOGFILE|sed "s%/.*%%")/$(echo $LOGFILE|sed "s%.*/.*_%%")
done
# make the ryzom services executable
chmod 775 live/service_*/*_service 2> /dev/null
chmod 775 live/service_*/*_server 2> /dev/null
# make directory for rrd_graphs
mkdir -p rrd_graphs
# special case to deal with www files that need a local cfg file to be properly setup
if [ -e ./live/data_www/config.php ]
then
echo \<?php >./live/data_www/config.php
echo >>./live/data_www/config.php
echo \$USERS_DIR = \'$(pwd)/www\'\; >>./live/data_www/config.php
echo \$TEMPLATE_DIR = \'./template\'\; >>./live/data_www/config.php
echo >>./live/data_www/config.php
echo \?\> >>./live/data_www/config.php
mkdir -p $(pwd)/save_shard/www
fi
# remove any launch ctrl files that are floating about
rm -v */*.*launch_ctrl *.*launch_ctrl 2> /dev/null
# initialise the state files for the new services to "xxxxx" and remove directories that are no longer of interest
for D in $(ls */log.log | sed "s%/.*%%" | sort -u)
do
if [ $(grep \"$D\" admin_executor_service.cfg | wc -l) == 1 ]
then
printf "xxxxx" > $D/$D.state
else
mkdir -p old
mv $D old/
fi
done
# tell the aes to launch everybody...
printf "1" > ./global.launch_ctrl
# create a script for accessing the screen for this shard
SCRIPT_FILE=/srv/core/bin/${DOMAIN}
echo "#!/bin/sh" > $SCRIPT_FILE
echo "cd "$(pwd) >> $SCRIPT_FILE
echo '/bin/sh /srv/core/bin/ryzom_domain_screen_wrapper.sh $*' >> $SCRIPT_FILE
chmod +x $SCRIPT_FILE
# launch the screen again now that were all done (aes will launch everybody when he comes online)
cp /srv/core/$DOMAIN/${DOMAIN}.screen.rc /srv/core/${DOMAIN}.screen.rc
#screen -S $DOMAIN -d -m -c /srv/core/${DOMAIN}.screen.rc
$SCRIPT_FILE batchstart

@ -0,0 +1,23 @@
// default values for different sites
mini01 ep1.mini01.ryzomcore.org
std01 ep1.std01.ryzomcore.org
std01 su1.std01.ryzomcore.org
std01 pd1.std01.ryzomcore.org
std01 pd2.std01.ryzomcore.org
std01 pd3.std01.ryzomcore.org
std01 pd4.std01.ryzomcore.org
std01 mla1.std01.ryzomcore.org
std01 mla2.std01.ryzomcore.org
std01 mla3.std01.ryzomcore.org
std01 mla4.std01.ryzomcore.org
std01 mla5.std01.ryzomcore.org
std01 mlb1.std01.ryzomcore.org
std01 mlb2.std01.ryzomcore.org
std01 mlb3.std01.ryzomcore.org
std01 mlb4.std01.ryzomcore.org
std01 mlb5.std01.ryzomcore.org
std01 rra1.std01.ryzomcore.org
std01 rra2.std01.ryzomcore.org
std01 rrb1.std01.ryzomcore.org
std01 rrb2.std01.ryzomcore.org

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save