ryzomcore/v0.11.3

This commit is contained in:
kaetemi 2015-03-06 23:59:12 +01:00
commit 62739a8b97
139 changed files with 5527 additions and 4249 deletions

2
.hgeol
View file

@ -14,6 +14,8 @@
**.font = native **.font = native
**.scheme = native **.scheme = native
**.tpl = native
**.xsd = native **.xsd = native
**.dox = native **.dox = native

View file

@ -1,8 +1,8 @@
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# #
# NeL # Ryzom Core
# Authors: Nevrax and the NeL Community # Authors: Nevrax and the Ryzom Core Community
# Version: 0.11.2 # Version: 0.11.3
# #
# Notes: # Notes:
# * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path # * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path
@ -48,7 +48,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(RyzomCore CXX C) PROJECT(RyzomCore CXX C)
SET(NL_VERSION_MAJOR 0) SET(NL_VERSION_MAJOR 0)
SET(NL_VERSION_MINOR 11) SET(NL_VERSION_MINOR 11)
SET(NL_VERSION_PATCH 2) SET(NL_VERSION_PATCH 3)
SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}") SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}")
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@ -228,30 +228,31 @@ IF(WITH_NEL_TESTS)
ENDIF(WITH_NEL_TESTS) ENDIF(WITH_NEL_TESTS)
# packaging information # packaging information
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NeL MMORPG Framework") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Ryzom Core MMORPG Framework")
SET(CPACK_PACKAGE_VENDOR "NeL") SET(CPACK_PACKAGE_VENDOR "Ryzom Core")
SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README) SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README)
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING)
SET(CPACK_PACKAGE_VERSION_MAJOR "${NL_VERSION_MAJOR}") SET(CPACK_PACKAGE_VERSION_MAJOR "${NL_VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${NL_VERSION_MINOR}") SET(CPACK_PACKAGE_VERSION_MINOR "${NL_VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${NL_VERSION_PATCH}") SET(CPACK_PACKAGE_VERSION_PATCH "${NL_VERSION_PATCH}")
SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};NeL;ALL;/") SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};NeL;ALL;/")
SET(CPACK_PACKAGE_EXECUTABLES "nel${NL_VERSION}" "nel") SET(CPACK_PACKAGE_EXECUTABLES "ryzomcore${NL_VERSION}" "ryzomcore")
SET(CPACK_SET_DESTDIR TRUE)
# NSIS Specific Packing Setup # NSIS Specific Packing Setup
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "NeL") SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "RyzomCore")
SET(CPACK_NSIS_MODIFY_PATH "ON") SET(CPACK_NSIS_MODIFY_PATH "ON")
SET(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico) SET(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
SET(CPACK_NSIS_MUI_UNIICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico) SET(CPACK_NSIS_MUI_UNIICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/resources\\\\nel.bmp) SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/resources\\\\nel.bmp)
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} NeL") SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} RyzomCore")
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\dev.ryzom.com") SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\dev.ryzom.com")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\dev.ryzom.com\\\\projects\\\\nel\\\\wiki") SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\dev.ryzom.com\\\\projects\\\\nel\\\\wiki")
SET(CPACK_NSIS_CONTACT "matt.raykowski@gmail.com") SET(CPACK_NSIS_CONTACT "matt.raykowski@gmail.com")
## Source Packages ## Source Packages
SET(CPACK_PACKAGE_FILE_NAME "nel-${NL_VERSION}") SET(CPACK_PACKAGE_FILE_NAME "ryzomcore-${NL_VERSION}")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "nel-${NL_VERSION}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "ryzomcore-${NL_VERSION}")
IF(WIN32) IF(WIN32)
#SET(CPACK_GENERATOR "NSIS") #SET(CPACK_GENERATOR "NSIS")
SET(CPACK_GENERATOR "NSIS;ZIP") SET(CPACK_GENERATOR "NSIS;ZIP")

View file

@ -26,63 +26,46 @@ IF(TARGET_CPU STREQUAL "armv7")
SET(LIBRARY_ARCHITECTURE "armeabi-v7a") SET(LIBRARY_ARCHITECTURE "armeabi-v7a")
SET(CMAKE_SYSTEM_PROCESSOR "armv7") SET(CMAKE_SYSTEM_PROCESSOR "armv7")
SET(TOOLCHAIN_ARCH "arm") SET(TOOLCHAIN_ARCH "arm")
SET(TOOLCHAIN_PREFIX "arm-linux-androideabi") SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi")
SET(TOOLCHAIN_BIN_PREFIX "arm") SET(TOOLCHAIN_BIN_PREFIX "arm")
SET(MINIMUM_NDK_TARGET 4) SET(MINIMUM_NDK_TARGET 4)
ELSEIF(TARGET_CPU STREQUAL "armv5") ELSEIF(TARGET_CPU STREQUAL "armv5")
SET(LIBRARY_ARCHITECTURE "armeabi") SET(LIBRARY_ARCHITECTURE "armeabi")
SET(CMAKE_SYSTEM_PROCESSOR "armv5") SET(CMAKE_SYSTEM_PROCESSOR "armv5")
SET(TOOLCHAIN_ARCH "arm") SET(TOOLCHAIN_ARCH "arm")
SET(TOOLCHAIN_PREFIX "arm-linux-androideabi") SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi")
SET(TOOLCHAIN_BIN_PREFIX "arm") SET(TOOLCHAIN_BIN_PREFIX "arm")
SET(MINIMUM_NDK_TARGET 4) SET(MINIMUM_NDK_TARGET 4)
ELSEIF(TARGET_CPU STREQUAL "x86") ELSEIF(TARGET_CPU STREQUAL "x86")
SET(LIBRARY_ARCHITECTURE "x86") SET(LIBRARY_ARCHITECTURE "x86")
SET(CMAKE_SYSTEM_PROCESSOR "x86") SET(CMAKE_SYSTEM_PROCESSOR "x86")
SET(TOOLCHAIN_ARCH "x86") SET(TOOLCHAIN_ARCH "x86")
SET(TOOLCHAIN_PREFIX "x86") SET(GCC_TOOLCHAIN_PREFIX "x86")
SET(TOOLCHAIN_BIN_PREFIX "i686") SET(TOOLCHAIN_BIN_PREFIX "i686")
SET(MINIMUM_NDK_TARGET 9) SET(MINIMUM_NDK_TARGET 9)
ELSEIF(TARGET_CPU STREQUAL "mips") ELSEIF(TARGET_CPU STREQUAL "mips")
SET(LIBRARY_ARCHITECTURE "mips") SET(LIBRARY_ARCHITECTURE "mips")
SET(CMAKE_SYSTEM_PROCESSOR "mips") SET(CMAKE_SYSTEM_PROCESSOR "mips")
SET(TOOLCHAIN_ARCH "mips") SET(TOOLCHAIN_ARCH "mips")
SET(TOOLCHAIN_PREFIX "mipsel-linux-android") SET(GCC_TOOLCHAIN_PREFIX "mipsel-linux-android")
SET(TOOLCHAIN_BIN_PREFIX "mipsel") SET(TOOLCHAIN_BIN_PREFIX "mipsel")
SET(MINIMUM_NDK_TARGET 9) SET(MINIMUM_NDK_TARGET 9)
ENDIF(TARGET_CPU STREQUAL "armv7") ENDIF(TARGET_CPU STREQUAL "armv7")
SET(ANDROID_COMPILER "GCC")
IF(NDK_TOOLCHAIN_VERSION STREQUAL "clang")
SET(ANDROID_COMPILER "clang")
SET(CLANG_TOOLCHAIN_PREFIX "llvm")
SET(CLANG ON)
ELSE()
SET(GCC_TOOLCHAIN_VERSION ${NDK_TOOLCHAIN_VERSION})
ENDIF()
IF(NOT NDK_TARGET) IF(NOT NDK_TARGET)
SET(NDK_TARGET ${MINIMUM_NDK_TARGET}) SET(NDK_TARGET ${MINIMUM_NDK_TARGET})
ENDIF(NOT NDK_TARGET) ENDIF(NOT NDK_TARGET)
FILE(GLOB _TOOLCHAIN_VERSIONS "${NDK_ROOT}/toolchains/${TOOLCHAIN_PREFIX}-*")
IF(_TOOLCHAIN_VERSIONS)
LIST(SORT _TOOLCHAIN_VERSIONS)
LIST(REVERSE _TOOLCHAIN_VERSIONS)
FOREACH(_TOOLCHAIN_VERSION ${_TOOLCHAIN_VERSIONS})
STRING(REGEX REPLACE ".+${TOOLCHAIN_PREFIX}-([0-9.]+)" "\\1" _TOOLCHAIN_VERSION "${_TOOLCHAIN_VERSION}")
IF(_TOOLCHAIN_VERSION MATCHES "^([0-9.]+)$")
LIST(APPEND NDK_TOOLCHAIN_VERSIONS ${_TOOLCHAIN_VERSION})
ENDIF(_TOOLCHAIN_VERSION MATCHES "^([0-9.]+)$")
ENDFOREACH(_TOOLCHAIN_VERSION)
ENDIF(_TOOLCHAIN_VERSIONS)
IF(NOT NDK_TOOLCHAIN_VERSIONS)
MESSAGE(FATAL_ERROR "No Android toolchain found in default search path ${NDK_ROOT}/toolchains")
ENDIF(NOT NDK_TOOLCHAIN_VERSIONS)
IF(NDK_TOOLCHAIN_VERSION)
LIST(FIND NDK_TOOLCHAIN_VERSIONS "${NDK_TOOLCHAIN_VERSION}" _INDEX)
IF(_INDEX EQUAL -1)
LIST(GET NDK_TOOLCHAIN_VERSIONS 0 NDK_TOOLCHAIN_VERSION)
ENDIF(_INDEX EQUAL -1)
ELSE(NDK_TOOLCHAIN_VERSION)
LIST(GET NDK_TOOLCHAIN_VERSIONS 0 NDK_TOOLCHAIN_VERSION)
ENDIF(NDK_TOOLCHAIN_VERSION)
MESSAGE(STATUS "Target Android NDK ${NDK_TARGET} and use GCC ${NDK_TOOLCHAIN_VERSION}")
IF(CMAKE_HOST_WIN32) IF(CMAKE_HOST_WIN32)
SET(TOOLCHAIN_HOST "windows") SET(TOOLCHAIN_HOST "windows")
SET(TOOLCHAIN_BIN_SUFFIX ".exe") SET(TOOLCHAIN_BIN_SUFFIX ".exe")
@ -94,33 +77,73 @@ ELSEIF(CMAKE_HOST_UNIX)
SET(TOOLCHAIN_BIN_SUFFIX "") SET(TOOLCHAIN_BIN_SUFFIX "")
ENDIF(CMAKE_HOST_WIN32) ENDIF(CMAKE_HOST_WIN32)
SET(TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${TOOLCHAIN_PREFIX}-${NDK_TOOLCHAIN_VERSION}/prebuilt/${TOOLCHAIN_HOST}") MACRO(SEARCH_TOOLCHAIN _COMPILER)
SET(${_COMPILER}_TOOLCHAIN_VERSIONS)
FILE(GLOB _TOOLCHAIN_VERSIONS "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-*")
IF(_TOOLCHAIN_VERSIONS)
LIST(SORT _TOOLCHAIN_VERSIONS)
LIST(REVERSE _TOOLCHAIN_VERSIONS)
FOREACH(_TOOLCHAIN_VERSION ${_TOOLCHAIN_VERSIONS})
STRING(REGEX REPLACE ".+${_PREFIX}-([0-9.]+)" "\\1" _TOOLCHAIN_VERSION "${_TOOLCHAIN_VERSION}")
IF(_TOOLCHAIN_VERSION MATCHES "^([0-9.]+)$")
LIST(APPEND ${_COMPILER}_TOOLCHAIN_VERSIONS ${_TOOLCHAIN_VERSION})
ENDIF()
ENDFOREACH()
ENDIF()
IF(NOT ${_COMPILER}_TOOLCHAIN_VERSIONS)
MESSAGE(FATAL_ERROR "No Android ${_COMPILER} toolchain found in default search path ${NDK_ROOT}/toolchains")
ENDIF()
IF(${_COMPILER}_TOOLCHAIN_VERSIONS)
LIST(FIND ${_COMPILER}_TOOLCHAIN_VERSIONS "${${_COMPILER}_TOOLCHAIN_VERSION}" _INDEX)
IF(_INDEX EQUAL -1)
LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION)
ENDIF()
ELSE()
LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION)
ENDIF()
SET(${_COMPILER}_TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-${${_COMPILER}_TOOLCHAIN_VERSION}/prebuilt/${TOOLCHAIN_HOST}")
IF(NOT EXISTS "${${_COMPILER}_TOOLCHAIN_ROOT}")
FILE(GLOB _TOOLCHAIN_PREFIXES "${${_COMPILER}_TOOLCHAIN_ROOT}*")
IF(_TOOLCHAIN_PREFIXES)
LIST(GET _TOOLCHAIN_PREFIXES 0 ${_COMPILER}_TOOLCHAIN_ROOT)
ENDIF(_TOOLCHAIN_PREFIXES)
ENDIF()
ENDMACRO()
IF(CLANG)
SEARCH_TOOLCHAIN(CLANG)
MESSAGE(STATUS "Target Android NDK ${NDK_TARGET} and use clang ${CLANG_TOOLCHAIN_VERSION}")
ENDIF()
SEARCH_TOOLCHAIN(GCC)
MESSAGE(STATUS "Target Android NDK ${NDK_TARGET} and use GCC ${GCC_TOOLCHAIN_VERSION}")
MESSAGE(STATUS "Found Android LLVM toolchain in ${CLANG_TOOLCHAIN_ROOT}")
MESSAGE(STATUS "Found Android GCC toolchain in ${GCC_TOOLCHAIN_ROOT}")
SET(PLATFORM_ROOT "${NDK_ROOT}/platforms/android-${NDK_TARGET}/arch-${TOOLCHAIN_ARCH}") SET(PLATFORM_ROOT "${NDK_ROOT}/platforms/android-${NDK_TARGET}/arch-${TOOLCHAIN_ARCH}")
IF(NOT EXISTS "${TOOLCHAIN_ROOT}")
FILE(GLOB _TOOLCHAIN_PREFIXES "${TOOLCHAIN_ROOT}*")
IF(_TOOLCHAIN_PREFIXES)
LIST(GET _TOOLCHAIN_PREFIXES 0 TOOLCHAIN_ROOT)
ENDIF(_TOOLCHAIN_PREFIXES)
ENDIF(NOT EXISTS "${TOOLCHAIN_ROOT}")
MESSAGE(STATUS "Found Android toolchain in ${TOOLCHAIN_ROOT}")
MESSAGE(STATUS "Found Android platform in ${PLATFORM_ROOT}") MESSAGE(STATUS "Found Android platform in ${PLATFORM_ROOT}")
# include dirs # include dirs
SET(PLATFORM_INCLUDE_DIR "${PLATFORM_ROOT}/usr/include") SET(PLATFORM_INCLUDE_DIR "${PLATFORM_ROOT}/usr/include")
SET(STL_DIR "${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++") SET(STL_DIR "${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++")
IF(EXISTS "${STL_DIR}/${NDK_TOOLCHAIN_VERSION}") IF(EXISTS "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")
# NDK version >= 8b # NDK version >= 8b
SET(STL_DIR "${STL_DIR}/${NDK_TOOLCHAIN_VERSION}") SET(STL_DIR "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")
ENDIF(EXISTS "${STL_DIR}/${NDK_TOOLCHAIN_VERSION}") ENDIF(EXISTS "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")
# Determine bin prefix for toolchain # Determine bin prefix for toolchain
FILE(GLOB _TOOLCHAIN_BIN_PREFIXES "${TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-*-gcc${TOOLCHAIN_BIN_SUFFIX}") FILE(GLOB _TOOLCHAIN_BIN_PREFIXES "${GCC_TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-*-gcc${TOOLCHAIN_BIN_SUFFIX}")
IF(_TOOLCHAIN_BIN_PREFIXES) IF(_TOOLCHAIN_BIN_PREFIXES)
LIST(GET _TOOLCHAIN_BIN_PREFIXES 0 _TOOLCHAIN_BIN_PREFIX) LIST(GET _TOOLCHAIN_BIN_PREFIXES 0 _TOOLCHAIN_BIN_PREFIX)
STRING(REGEX REPLACE "${TOOLCHAIN_ROOT}/bin/([a-z0-9-]+)-gcc${TOOLCHAIN_BIN_SUFFIX}" "\\1" TOOLCHAIN_BIN_PREFIX "${_TOOLCHAIN_BIN_PREFIX}") STRING(REGEX REPLACE "${GCC_TOOLCHAIN_ROOT}/bin/([a-z0-9-]+)-gcc${TOOLCHAIN_BIN_SUFFIX}" "\\1" TOOLCHAIN_BIN_PREFIX "${_TOOLCHAIN_BIN_PREFIX}")
ENDIF(_TOOLCHAIN_BIN_PREFIXES) ENDIF(_TOOLCHAIN_BIN_PREFIXES)
SET(STL_INCLUDE_DIR "${STL_DIR}/include") SET(STL_INCLUDE_DIR "${STL_DIR}/include")
@ -128,22 +151,48 @@ SET(STL_LIBRARY_DIR "${STL_DIR}/libs/${LIBRARY_ARCHITECTURE}")
SET(STL_INCLUDE_CPU_DIR "${STL_LIBRARY_DIR}/include") SET(STL_INCLUDE_CPU_DIR "${STL_LIBRARY_DIR}/include")
SET(STL_LIBRARY "${STL_LIBRARY_DIR}/libgnustl_static.a") SET(STL_LIBRARY "${STL_LIBRARY_DIR}/libgnustl_static.a")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_ROOT} ${PLATFORM_ROOT}/usr ${CMAKE_PREFIX_PATH} ${CMAKE_INSTALL_PREFIX} $ENV{EXTERNAL_ANDROID_PATH} CACHE string "Android find search path root") MESSAGE(STATUS "STL include dir: ${STL_INCLUDE_DIR}")
MESSAGE(STATUS "STL library dir: ${STL_LIBRARY_DIR}")
SET(CMAKE_FIND_ROOT_PATH ${CLANG_TOOLCHAIN_ROOT} ${GCC_TOOLCHAIN_ROOT} ${PLATFORM_ROOT}/usr ${CMAKE_PREFIX_PATH} ${CMAKE_INSTALL_PREFIX} $ENV{EXTERNAL_ANDROID_PATH} CACHE string "Android find search path root")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
INCLUDE_DIRECTORIES(${STL_INCLUDE_DIR} ${STL_INCLUDE_CPU_DIR})
MACRO(SET_TOOLCHAIN_BINARY _NAME _BINARY) MACRO(SET_TOOLCHAIN_BINARY _NAME _BINARY)
SET(${_NAME} ${TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-${_BINARY}${TOOLCHAIN_BIN_SUFFIX}) IF("${_BINARY}" MATCHES "clang")
SET(${_NAME} ${CLANG_TOOLCHAIN_ROOT}/bin/${_BINARY}${TOOLCHAIN_BIN_SUFFIX} CACHE PATH "" FORCE )
ELSE()
SET(${_NAME} ${GCC_TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-${_BINARY}${TOOLCHAIN_BIN_SUFFIX} CACHE PATH "" FORCE)
ENDIF()
ENDMACRO(SET_TOOLCHAIN_BINARY) ENDMACRO(SET_TOOLCHAIN_BINARY)
SET_TOOLCHAIN_BINARY(CMAKE_C_COMPILER gcc)
SET_TOOLCHAIN_BINARY(CMAKE_CXX_COMPILER g++)
# Force the compilers to GCC for Android # Force the compilers to GCC for Android
include (CMakeForceCompiler) include (CMakeForceCompiler)
CMAKE_FORCE_C_COMPILER(${CMAKE_C_COMPILER} GNU)
CMAKE_FORCE_CXX_COMPILER(${CMAKE_CXX_COMPILER} GNU) IF(CLANG)
SET_TOOLCHAIN_BINARY(CMAKE_C_COMPILER clang)
SET_TOOLCHAIN_BINARY(CMAKE_CXX_COMPILER clang++)
CMAKE_FORCE_C_COMPILER(${CMAKE_C_COMPILER} clang)
CMAKE_FORCE_CXX_COMPILER(${CMAKE_CXX_COMPILER} clang)
MESSAGE(STATUS "Using clang compiler")
ELSE()
SET_TOOLCHAIN_BINARY(CMAKE_C_COMPILER gcc)
SET_TOOLCHAIN_BINARY(CMAKE_CXX_COMPILER g++)
CMAKE_FORCE_C_COMPILER(${CMAKE_C_COMPILER} GNU)
CMAKE_FORCE_CXX_COMPILER(${CMAKE_CXX_COMPILER} GNU)
MESSAGE(STATUS "Using GCC compiler")
ENDIF()
SET_TOOLCHAIN_BINARY(CMAKE_STRIP strip)
SET_TOOLCHAIN_BINARY(CMAKE_AR ar)
SET_TOOLCHAIN_BINARY(CMAKE_LINKER ld)
SET_TOOLCHAIN_BINARY(CMAKE_NM nm)
SET_TOOLCHAIN_BINARY(CMAKE_OBJCOPY objcopy)
SET_TOOLCHAIN_BINARY(CMAKE_OBJDUMP objdump)
SET_TOOLCHAIN_BINARY(CMAKE_RANLIB ranlib)

View file

@ -57,6 +57,7 @@ ENDMACRO(DETECT_EXPRESS_VERSION)
IF(MSVC12) IF(MSVC12)
DETECT_VC_VERSION("12.0") DETECT_VC_VERSION("12.0")
SET(MSVC_TOOLSET "120")
IF(NOT MSVC12_REDIST_DIR) IF(NOT MSVC12_REDIST_DIR)
# If you have VC++ 2013 Express, put x64/Microsoft.VC120.CRT/*.dll in ${EXTERNAL_PATH}/redist # If you have VC++ 2013 Express, put x64/Microsoft.VC120.CRT/*.dll in ${EXTERNAL_PATH}/redist
@ -64,6 +65,7 @@ IF(MSVC12)
ENDIF(NOT MSVC11_REDIST_DIR) ENDIF(NOT MSVC11_REDIST_DIR)
ELSEIF(MSVC11) ELSEIF(MSVC11)
DETECT_VC_VERSION("11.0") DETECT_VC_VERSION("11.0")
SET(MSVC_TOOLSET "110")
IF(NOT MSVC11_REDIST_DIR) IF(NOT MSVC11_REDIST_DIR)
# If you have VC++ 2012 Express, put x64/Microsoft.VC110.CRT/*.dll in ${EXTERNAL_PATH}/redist # If you have VC++ 2012 Express, put x64/Microsoft.VC110.CRT/*.dll in ${EXTERNAL_PATH}/redist
@ -71,6 +73,7 @@ ELSEIF(MSVC11)
ENDIF(NOT MSVC11_REDIST_DIR) ENDIF(NOT MSVC11_REDIST_DIR)
ELSEIF(MSVC10) ELSEIF(MSVC10)
DETECT_VC_VERSION("10.0") DETECT_VC_VERSION("10.0")
SET(MSVC_TOOLSET "100")
IF(NOT MSVC10_REDIST_DIR) IF(NOT MSVC10_REDIST_DIR)
# If you have VC++ 2010 Express, put x64/Microsoft.VC100.CRT/*.dll in ${EXTERNAL_PATH}/redist # If you have VC++ 2010 Express, put x64/Microsoft.VC100.CRT/*.dll in ${EXTERNAL_PATH}/redist
@ -78,8 +81,10 @@ ELSEIF(MSVC10)
ENDIF(NOT MSVC10_REDIST_DIR) ENDIF(NOT MSVC10_REDIST_DIR)
ELSEIF(MSVC90) ELSEIF(MSVC90)
DETECT_VC_VERSION("9.0") DETECT_VC_VERSION("9.0")
SET(MSVC_TOOLSET "90")
ELSEIF(MSVC80) ELSEIF(MSVC80)
DETECT_VC_VERSION("8.0") DETECT_VC_VERSION("8.0")
SET(MSVC_TOOLSET "80")
ENDIF(MSVC12) ENDIF(MSVC12)
# If you plan to use VC++ compilers with WINE, set VC_DIR environment variable # If you plan to use VC++ compilers with WINE, set VC_DIR environment variable

View file

@ -13,7 +13,7 @@
IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
SET(MYSQL_FOUND TRUE) SET(MYSQL_FOUND TRUE)
ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) ELSE()
FIND_PATH(MYSQL_INCLUDE_DIR mysql.h FIND_PATH(MYSQL_INCLUDE_DIR mysql.h
PATH_SUFFIXES mysql PATH_SUFFIXES mysql
@ -33,7 +33,7 @@ ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
PATHS PATHS
$ENV{ProgramFiles}/MySQL/*/lib/opt $ENV{ProgramFiles}/MySQL/*/lib/opt
$ENV{SystemDrive}/MySQL/*/lib/opt) $ENV{SystemDrive}/MySQL/*/lib/opt)
ELSE(WIN32 AND MSVC) ELSE()
FIND_LIBRARY(MYSQL_LIBRARY_RELEASE NAMES mysqlclient FIND_LIBRARY(MYSQL_LIBRARY_RELEASE NAMES mysqlclient
PATHS PATHS
/usr/lib /usr/lib
@ -51,31 +51,30 @@ ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
/usr/local/lib/mysql /usr/local/lib/mysql
/opt/local/lib/mysql5/mysql /opt/local/lib/mysql5/mysql
) )
ENDIF(WIN32 AND MSVC) ENDIF()
IF(MYSQL_INCLUDE_DIR) IF(MYSQL_INCLUDE_DIR)
IF(MYSQL_LIBRARY_RELEASE) IF(MYSQL_LIBRARY_RELEASE)
SET(MYSQL_LIBRARIES optimized ${MYSQL_LIBRARY_RELEASE})
IF(MYSQL_LIBRARY_DEBUG) IF(MYSQL_LIBRARY_DEBUG)
SET(MYSQL_LIBRARIES ${MYSQL_LIBRARIES} debug ${MYSQL_LIBRARY_DEBUG}) SET(MYSQL_LIBRARIES optimized ${MYSQL_LIBRARY_RELEASE} debug ${MYSQL_LIBRARY_DEBUG})
ELSE(MYSQL_LIBRARY_DEBUG) ELSE()
SET(MYSQL_LIBRARIES ${MYSQL_LIBRARIES} debug ${MYSQL_LIBRARY_RELEASE}) SET(MYSQL_LIBRARIES ${MYSQL_LIBRARY_RELEASE})
ENDIF(MYSQL_LIBRARY_DEBUG) ENDIF()
FIND_PACKAGE(OpenSSL) FIND_PACKAGE(OpenSSL)
IF(OPENSSL_FOUND) IF(OPENSSL_FOUND)
SET(MYSQL_LIBRARIES ${MYSQL_LIBRARIES} ${OPENSSL_LIBRARIES}) SET(MYSQL_LIBRARIES ${MYSQL_LIBRARIES} ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND) ENDIF()
ENDIF(MYSQL_LIBRARY_RELEASE) ENDIF()
ENDIF(MYSQL_INCLUDE_DIR) ENDIF()
IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
SET(MYSQL_FOUND TRUE) SET(MYSQL_FOUND TRUE)
MESSAGE(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}") MESSAGE(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) ELSE()
SET(MYSQL_FOUND FALSE) SET(MYSQL_FOUND FALSE)
MESSAGE(STATUS "MySQL not found.") MESSAGE(STATUS "MySQL not found.")
ENDIF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) ENDIF()
MARK_AS_ADVANCED(MYSQL_LIBRARY_RELEASE MYSQL_LIBRARY_DEBUG) MARK_AS_ADVANCED(MYSQL_LIBRARY_RELEASE MYSQL_LIBRARY_DEBUG)
ENDIF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) ENDIF()

View file

@ -55,10 +55,12 @@ FIND_LIBRARY(SQUISH_LIBRARY_DEBUG
IF(SQUISH_INCLUDE_DIR) IF(SQUISH_INCLUDE_DIR)
IF(SQUISH_LIBRARY_RELEASE) IF(SQUISH_LIBRARY_RELEASE)
SET(SQUISH_FOUND "YES") SET(SQUISH_FOUND "YES")
SET(SQUISH_LIBRARIES "optimized;${SQUISH_LIBRARY_RELEASE}") SET(SQUISH_LIBRARIES "optimized;${SQUISH_LIBRARY_RELEASE}")
IF(SQUISH_LIBRARY_DEBUG) IF(SQUISH_LIBRARY_DEBUG)
SET(SQUISH_LIBRARIES "${SQUISH_LIBRARIES};debug;${SQUISH_LIBRARY_DEBUG}") SET(SQUISH_LIBRARIES "${SQUISH_LIBRARIES};debug;${SQUISH_LIBRARY_DEBUG}")
ELSE(SQUISH_LIBRARY_DEBUG)
SET(SQUISH_LIBRARIES "${SQUISH_LIBRARIES};debug;${SQUISH_LIBRARY_RELEASE}")
MESSAGE("Debug Squish NOT found, using the release version!")
ENDIF(SQUISH_LIBRARY_DEBUG) ENDIF(SQUISH_LIBRARY_DEBUG)
ENDIF(SQUISH_LIBRARY_RELEASE) ENDIF(SQUISH_LIBRARY_RELEASE)
ENDIF(SQUISH_INCLUDE_DIR) ENDIF(SQUISH_INCLUDE_DIR)

View file

@ -68,6 +68,10 @@ ENDIF(WINSDKCURRENT_VERSION_INCLUDE)
SET(WINSDKENV_DIR $ENV{WINSDK_DIR}) SET(WINSDKENV_DIR $ENV{WINSDK_DIR})
IF(NOT WINSDKENV_DIR)
SET(WINSDKENV_DIR $ENV{WindowsSDKDir})
ENDIF(NOT WINSDKENV_DIR)
MACRO(FIND_WINSDK_VERSION_HEADERS) MACRO(FIND_WINSDK_VERSION_HEADERS)
IF(WINSDK_DIR AND NOT WINSDK_VERSION) IF(WINSDK_DIR AND NOT WINSDK_VERSION)
# Search version in headers # Search version in headers
@ -78,7 +82,6 @@ MACRO(FIND_WINSDK_VERSION_HEADERS)
) )
IF(_MSI_FILE) IF(_MSI_FILE)
# Look for Windows SDK 8.0 # Look for Windows SDK 8.0
FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN8") FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN8")
@ -181,7 +184,7 @@ MACRO(USE_CURRENT_WINSDK)
# Look for Windows.h because there are several paths # Look for Windows.h because there are several paths
IF(EXISTS ${_INCLUDE}/Windows.h) IF(EXISTS ${_INCLUDE}/Windows.h)
STRING(REGEX REPLACE "/(include|INCLUDE|Include)(.*)" "" WINSDK_DIR ${_INCLUDE}) STRING(REGEX REPLACE "/(include|INCLUDE|Include)(.*)" "" WINSDK_DIR ${_INCLUDE})
MESSAGE(STATUS "Found Windows SDK from include environment variable in ${WINSDK_DIR}") MESSAGE(STATUS "Found Windows SDK in INCLUDE environment variable: ${WINSDK_DIR}")
BREAK() BREAK()
ENDIF(EXISTS ${_INCLUDE}/Windows.h) ENDIF(EXISTS ${_INCLUDE}/Windows.h)
ENDFOREACH(_INCLUDE) ENDFOREACH(_INCLUDE)
@ -280,6 +283,13 @@ FIND_PATH(WINSDK_SHARED_INCLUDE_DIR d3d9.h
${WINSDK_DIR}/Include ${WINSDK_DIR}/Include
) )
# directory where OpenGL headers are found
FIND_PATH(WINSDK_OPENGL_INCLUDE_DIR GL.h
HINTS
${WINSDK_DIR}/Include/gl
${WINSDK_DIR}/Include
)
# directory where all libraries are found # directory where all libraries are found
FIND_PATH(WINSDK_LIBRARY_DIR ComCtl32.lib FIND_PATH(WINSDK_LIBRARY_DIR ComCtl32.lib
HINTS HINTS
@ -303,7 +313,7 @@ FIND_PROGRAM(WINSDK_MIDL midl
IF(WINSDK_INCLUDE_DIR) IF(WINSDK_INCLUDE_DIR)
SET(WINSDK_FOUND ON) SET(WINSDK_FOUND ON)
SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIR} ${WINSDK_SHARED_INCLUDE_DIR}) SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIR} ${WINSDK_SHARED_INCLUDE_DIR} ${WINSDK_OPENGL_INCLUDE_DIR})
SET(CMAKE_LIBRARY_PATH ${WINSDK_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH}) SET(CMAKE_LIBRARY_PATH ${WINSDK_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH})
INCLUDE_DIRECTORIES(${WINSDK_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${WINSDK_INCLUDE_DIRS})

View file

@ -13,38 +13,44 @@ IF(SOURCE_DIR)
IF(NOT ROOT_DIR AND SOURCE_DIR) IF(NOT ROOT_DIR AND SOURCE_DIR)
SET(ROOT_DIR ${SOURCE_DIR}) SET(ROOT_DIR ${SOURCE_DIR})
ENDIF(NOT ROOT_DIR AND SOURCE_DIR) ENDIF()
IF(NOT SOURCE_DIR AND ROOT_DIR) IF(NOT SOURCE_DIR AND ROOT_DIR)
SET(SOURCE_DIR ${ROOT_DIR}) SET(SOURCE_DIR ${ROOT_DIR})
ENDIF(NOT SOURCE_DIR AND ROOT_DIR) ENDIF()
ELSE(SOURCE_DIR) ELSE()
SET(SOURCE_DIR ${CMAKE_SOURCE_DIR}) SET(SOURCE_DIR ${CMAKE_SOURCE_DIR})
SET(ROOT_DIR ${CMAKE_SOURCE_DIR}) SET(ROOT_DIR ${CMAKE_SOURCE_DIR})
ENDIF(SOURCE_DIR) ENDIF()
MACRO(NOW RESULT) MACRO(NOW RESULT)
IF (WIN32) IF (WIN32)
EXECUTE_PROCESS(COMMAND "wmic" "os" "get" "localdatetime" OUTPUT_VARIABLE DATETIME) EXECUTE_PROCESS(COMMAND "wmic" "os" "get" "localdatetime" OUTPUT_VARIABLE DATETIME)
IF(NOT DATETIME MATCHES "ERROR") IF(NOT DATETIME MATCHES "ERROR")
STRING(REGEX REPLACE ".*\n([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9]).*" "\\1-\\2-\\3 \\4:\\5:\\6" ${RESULT} "${DATETIME}") STRING(REGEX REPLACE ".*\n([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9]).*" "\\1-\\2-\\3 \\4:\\5:\\6" ${RESULT} "${DATETIME}")
ENDIF(NOT DATETIME MATCHES "ERROR") ENDIF()
ELSEIF(UNIX) ELSEIF(UNIX)
EXECUTE_PROCESS(COMMAND "date" "+%Y-%m-%d %H:%M:%S" OUTPUT_VARIABLE DATETIME) EXECUTE_PROCESS(COMMAND "date" "+%Y-%m-%d %H:%M:%S" OUTPUT_VARIABLE DATETIME)
STRING(REGEX REPLACE "([0-9: -]+).*" "\\1" ${RESULT} "${DATETIME}") STRING(REGEX REPLACE "([0-9: -]+).*" "\\1" ${RESULT} "${DATETIME}")
ELSE (WIN32) ELSE()
MESSAGE(SEND_ERROR "date not implemented") MESSAGE(SEND_ERROR "date not implemented")
SET(${RESULT} "0000-00-00 00:00:00") SET(${RESULT} "0000-00-00 00:00:00")
ENDIF (WIN32) ENDIF()
ENDMACRO(NOW) ENDMACRO(NOW)
IF(EXISTS "${ROOT_DIR}/.svn/") IF(EXISTS "${ROOT_DIR}/.svn/")
FIND_PACKAGE(Subversion) FIND_PACKAGE(Subversion QUIET)
IF(SUBVERSION_FOUND) IF(SUBVERSION_FOUND)
Subversion_WC_INFO(${ROOT_DIR} ER) Subversion_WC_INFO(${ROOT_DIR} ER)
SET(REVISION ${ER_WC_REVISION}) SET(REVISION ${ER_WC_REVISION})
ENDIF(SUBVERSION_FOUND) ENDIF(SUBVERSION_FOUND)
FIND_PACKAGE(TortoiseSVN QUIET)
IF(TORTOISESVN_FOUND)
TORTOISESVN_GET_REVISION(${ROOT_DIR} REVISION)
ENDIF(TORTOISESVN_FOUND)
ENDIF(EXISTS "${ROOT_DIR}/.svn/") ENDIF(EXISTS "${ROOT_DIR}/.svn/")
IF(EXISTS "${ROOT_DIR}/.hg/") IF(EXISTS "${ROOT_DIR}/.hg/")
@ -55,8 +61,8 @@ IF(EXISTS "${ROOT_DIR}/.hg/")
SET(REVISION ${ER_WC_REVISION}) SET(REVISION ${ER_WC_REVISION})
SET(CHANGESET ${ER_WC_CHANGESET}) SET(CHANGESET ${ER_WC_CHANGESET})
SET(BRANCH ${ER_WC_BRANCH}) SET(BRANCH ${ER_WC_BRANCH})
ENDIF(MERCURIAL_FOUND) ENDIF()
ENDIF(EXISTS "${ROOT_DIR}/.hg/") ENDIF()
# if processing exported sources, use "revision" file if exists # if processing exported sources, use "revision" file if exists
IF(SOURCE_DIR AND NOT DEFINED REVISION) IF(SOURCE_DIR AND NOT DEFINED REVISION)
@ -64,8 +70,8 @@ IF(SOURCE_DIR AND NOT DEFINED REVISION)
IF(EXISTS ${REVISION_FILE}) IF(EXISTS ${REVISION_FILE})
FILE(STRINGS ${REVISION_FILE} REVISION LIMIT_COUNT 1) FILE(STRINGS ${REVISION_FILE} REVISION LIMIT_COUNT 1)
MESSAGE(STATUS "Read revision ${REVISION} from file") MESSAGE(STATUS "Read revision ${REVISION} from file")
ENDIF(EXISTS ${REVISION_FILE}) ENDIF()
ENDIF(SOURCE_DIR AND NOT DEFINED REVISION) ENDIF()
IF(SOURCE_DIR AND DEFINED REVISION) IF(SOURCE_DIR AND DEFINED REVISION)
IF(EXISTS ${SOURCE_DIR}/revision.h.in) IF(EXISTS ${SOURCE_DIR}/revision.h.in)
@ -73,5 +79,5 @@ IF(SOURCE_DIR AND DEFINED REVISION)
NOW(BUILD_DATE) NOW(BUILD_DATE)
CONFIGURE_FILE(${SOURCE_DIR}/revision.h.in revision.h.txt) CONFIGURE_FILE(${SOURCE_DIR}/revision.h.in revision.h.txt)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy revision.h.txt revision.h) # copy_if_different EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy revision.h.txt revision.h) # copy_if_different
ENDIF(EXISTS ${SOURCE_DIR}/revision.h.in) ENDIF()
ENDIF(SOURCE_DIR AND DEFINED REVISION) ENDIF()

View file

@ -6,6 +6,9 @@ IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE) ENDIF(NOT CMAKE_BUILD_TYPE)
# Declare CMAKE_CONFIGURATION_TYPES before PROJECT
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
### ###
# Helper macro that generates .pc and installs it. # Helper macro that generates .pc and installs it.
# Argument: name - the name of the .pc package, e.g. "nel-pacs.pc" # Argument: name - the name of the .pc package, e.g. "nel-pacs.pc"
@ -384,8 +387,6 @@ MACRO(NL_SETUP_BUILD)
# Debug = NL_DEBUG # Debug = NL_DEBUG
# Release = NL_RELEASE # Release = NL_RELEASE
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
IF(CMAKE_BUILD_TYPE MATCHES "Debug") IF(CMAKE_BUILD_TYPE MATCHES "Debug")
SET(NL_BUILD_MODE "NL_DEBUG") SET(NL_BUILD_MODE "NL_DEBUG")
ELSE(CMAKE_BUILD_TYPE MATCHES "Debug") ELSE(CMAKE_BUILD_TYPE MATCHES "Debug")

View file

@ -218,7 +218,7 @@ protected:
date*= previous->OODeltaTime; date*= previous->OODeltaTime;
NLMISC::clamp(date, 0,1); NLMISC::clamp(date, 0,1);
date = this->ease(previous, date); date = this->ease(previous, (float)date);
float hb[4]; float hb[4];
this->computeHermiteBasis(date, hb); this->computeHermiteBasis(date, hb);

View file

@ -55,9 +55,7 @@ namespace NLGUI
static void forceLink(); static void forceLink();
protected: protected:
sint64 getVal();
sint64 getVal() { if (_Modulo == 0) return (_Number.getSInt64() / _Divisor);
else return (_Number.getSInt64() / _Divisor)%_Modulo; }
protected: protected:

View file

@ -283,6 +283,10 @@ namespace NLGUI
sint32 _ViewTextDeltaX; sint32 _ViewTextDeltaX;
CViewText* getVT() const{ return _ViewText; }
void createViewText();
private: private:
void setupDisplayText(); void setupDisplayText();
void makeTopWindow(); void makeTopWindow();

View file

@ -0,0 +1,53 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2014 Laszlo Kis-Adam
// 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 GROUP_EDITBOX_DECOR
#define GROUP_EDITBOX_DECOR
#include "nel/gui/group_editbox.h"
namespace NLGUI
{
/// Decorated CGroupEditBox
class CGroupEditBoxDecor : public CGroupEditBox
{
public:
DECLARE_UI_CLASS( CGroupEditBoxDecor )
CGroupEditBoxDecor( const TCtorParam &param );
~CGroupEditBoxDecor();
void moveBy( sint32 x, sint32 y );
void setIdRecurse( const std::string &newID );
std::string getProperty( const std::string &name ) const;
void setProperty( const std::string &name, const std::string &value );
xmlNodePtr serialize( xmlNodePtr parentNode, const char *type ) const;
bool parse( xmlNodePtr cur, CInterfaceGroup *parent );
void draw();
void updateCoords();
static void forceLink();
private:
class EBDPrivate *_Pvt;
};
}
#endif

View file

@ -117,6 +117,7 @@ namespace NLGUI
editorSelected = false; editorSelected = false;
serializable = true; serializable = true;
_EditorSelectable = true;
} }
// dtor // dtor
@ -531,9 +532,16 @@ namespace NLGUI
/// Aligns the element to the other element specified /// Aligns the element to the other element specified
void alignTo( CInterfaceElement *other ); void alignTo( CInterfaceElement *other );
/// Specifies if the widget can be selected in the editor
void setEditorSelectable( bool b ){ _EditorSelectable = b; }
/// Tells if the widget can be selected in the editor
bool isEditorSelectable() const{ return _EditorSelectable; }
protected: protected:
bool editorSelected; bool editorSelected;
bool _EditorSelectable;
static bool editorMode; static bool editorMode;

View file

@ -47,6 +47,15 @@ namespace NLGUI
_VolatileValue = NULL; _VolatileValue = NULL;
} }
/// Tells if this property has a value
bool hasValue() const
{
if( _VolatileValue != NULL )
return true;
else
return false;
}
NLMISC::CCDBNodeLeaf* getNodePtr() const NLMISC::CCDBNodeLeaf* getNodePtr() const
{ {
return _VolatileValue; return _VolatileValue;

View file

@ -25,6 +25,8 @@ extern "C"
#include "WWWInit.h" #include "WWWInit.h"
} }
#include "nel/misc/rgba.h"
namespace NLGUI namespace NLGUI
{ {
class CCtrlBaseButton; class CCtrlBaseButton;

View file

@ -28,7 +28,11 @@
# endif # endif
#elif defined(NL_OS_UNIX) #elif defined(NL_OS_UNIX)
# include <pthread.h> // PThread # include <pthread.h> // PThread
# include <semaphore.h> // PThread POSIX semaphores # ifdef NL_OS_MAC
# include <dispatch/dispatch.h>
# else
# include <semaphore.h> // PThread POSIX semaphores
# endif
# include <unistd.h> # include <unistd.h>
# define __forceinline # define __forceinline
# ifdef NL_OS_MAC # ifdef NL_OS_MAC
@ -532,8 +536,10 @@ private:
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
TNelRtlCriticalSection _Cs; TNelRtlCriticalSection _Cs;
#elif defined NL_OS_UNIX #elif defined(NL_OS_MAC)
sem_t _Sem; dispatch_semaphore_t _Sem;
#elif defined(NL_OS_UNIX)
sem_t _Sem;
#else #else
# error "No fair mutex implementation for this OS" # error "No fair mutex implementation for this OS"
#endif #endif

View file

@ -507,6 +507,13 @@ public:
*/ */
static bool makePathRelative (const char *basePath, std::string &relativePath); static bool makePathRelative (const char *basePath, std::string &relativePath);
/** Make path absolute
* \param relativePath - The relative path
* \param directory - the directory to which the path is relative to
* returns the absolute path, or empty if something went wrong.
*/
static std::string makePathAbsolute (const std::string &relativePath, const std::string &directory );
/** If File in this list is added more than one in an addSearchPath, it doesn't launch a warning. /** If File in this list is added more than one in an addSearchPath, it doesn't launch a warning.
*/ */
static void addIgnoredDoubleFile(const std::string &ignoredFile); static void addIgnoredDoubleFile(const std::string &ignoredFile);

View file

@ -109,10 +109,6 @@ void UDriver::purgeMemory()
// *************************************************************************** // ***************************************************************************
// ***************************************************************************
bool CDriverUser::_StaticInit= false;
// *************************************************************************** // ***************************************************************************
CDriverUser::CDriverUser (uintptr_t windowIcon, TDriver driver, emptyProc exitFunc) CDriverUser::CDriverUser (uintptr_t windowIcon, TDriver driver, emptyProc exitFunc)
{ {
@ -122,16 +118,7 @@ CDriverUser::CDriverUser (uintptr_t windowIcon, TDriver driver, emptyProc exitFu
nlassert((uint)IDriver::iconCount == (uint)UDriver::iconCount); nlassert((uint)IDriver::iconCount == (uint)UDriver::iconCount);
// Static Initialisation. NL3D::init3d();
if(!_StaticInit)
{
_StaticInit= true;
// Register basic serial.
NL3D::registerSerial3d();
// Register basic csene.
CScene::registerBasics();
}
_Driver = NULL; _Driver = NULL;

View file

@ -19,19 +19,35 @@
#include "nel/3d/init_3d.h" #include "nel/3d/init_3d.h"
#include <cfloat> #include <cfloat>
#include "nel/3d/scene.h"
#include "nel/3d/register_3d.h"
namespace
{
static bool _Initialized = false;
}
namespace NL3D namespace NL3D
{ {
void init3d () void init3d ()
{ {
if( _Initialized )
return;
// Init for windows // Init for windows
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
// Enable FPU exceptions // Enable FPU exceptions
// Enable divid by zero and overflow exception // Enable divid by zero and overflow exception
_control87 (_EM_INVALID|_EM_DENORMAL/*|_EM_ZERODIVIDE|_EM_OVERFLOW*/|_EM_UNDERFLOW|_EM_INEXACT, _MCW_EM); //_control87 (_EM_INVALID|_EM_DENORMAL/*|_EM_ZERODIVIDE|_EM_OVERFLOW*/|_EM_UNDERFLOW|_EM_INEXACT, _MCW_EM);
#endif // NL_OS_WINDOWS #endif // NL_OS_WINDOWS
NL3D::registerSerial3d();
CScene::registerBasics();
_Initialized = true;
} }
} // NL3D } // NL3D

View file

@ -17,7 +17,86 @@
#include "std3d.h" #include "std3d.h"
#include "nel/3d/vertex_program_parse.h" #include "nel/3d/vertex_program_parse.h"
enum TArguments
{
#ifdef NL_LITTLE_ENDIAN
ADD = 1094992928,
ARL = 1095912480,
BFC0 = 1111900976,
BFC1 = 1111900977,
COL0 = 1129270320,
COL1 = 1129270321,
DP3 = 1146106656,
DP4 = 1146106912,
DST = 1146311712,
END = 1162757152,
EXP = 1163415584,
EXPP = 1163415632,
FOGC = 1179600707,
HPOS = 1213222739,
LIT = 1279874080,
LOG = 1280263968,
MAD = 1296122912,
MAX = 1296128032,
MIN = 1296649760,
MOV = 1297045024,
MUL = 1297435680,
NRML = 1314016588,
OPOS = 1330663251,
PSIZ = 1347635546,
RCP = 1380143136,
RSQ = 1381191968,
SGE = 1397179680,
SLT = 1397511200,
TEX0 = 1413830704,
TEX1 = 1413830705,
TEX2 = 1413830706,
TEX3 = 1413830707,
TEX4 = 1413830708,
TEX5 = 1413830709,
TEX6 = 1413830710,
TEX7 = 1413830711,
WGHT = 1464289364,
#else
ADD = 541344833,
ARL = 541872705,
BFC0 = 809715266,
BFC1 = 826492482,
COL0 = 810307395,
COL1 = 827084611,
DP3 = 540233796,
DP4 = 540299332,
DST = 542397252,
END = 541347397,
EXP = 542136389,
EXPP = 1347442757,
FOGC = 1128746822,
HPOS = 1397706824,
LIT = 542394700,
LOG = 541544268,
MAD = 541344077,
MAX = 542654797,
MIN = 542001485,
MOV = 542527309,
MUL = 541873485,
NRML = 1280135758,
OPOS = 1397706831,
PSIZ = 1514754896,
RCP = 542131026,
RSQ = 542200658,
SGE = 541411155,
SLT = 542395475,
TEX0 = 811091284,
TEX1 = 827868500,
TEX2 = 844645716,
TEX3 = 861422932,
TEX4 = 878200148,
TEX5 = 894977364,
TEX6 = 911754580,
TEX7 = 928531796,
WGHT = 1414022999,
#endif
};
//===================================== //=====================================
bool CVPParser::parseWriteMask(uint &mask, std::string &errorOutput) bool CVPParser::parseWriteMask(uint &mask, std::string &errorOutput)
@ -256,23 +335,23 @@ bool CVPParser::parseInputRegister(CVPOperand &operand, std::string &errorOutput
strValue |= ((uint32) *_CurrChar) << (8 * (3 - k)); strValue |= ((uint32) *_CurrChar) << (8 * (3 - k));
++_CurrChar; ++_CurrChar;
} }
switch (strValue) switch ((TArguments)strValue)
{ {
case 'OPOS': operand.Value.InputRegisterValue = CVPOperand::IPosition; break; case OPOS: operand.Value.InputRegisterValue = CVPOperand::IPosition; break;
case 'WGHT': operand.Value.InputRegisterValue = CVPOperand::IWeight; break; case WGHT: operand.Value.InputRegisterValue = CVPOperand::IWeight; break;
case 'NRML': operand.Value.InputRegisterValue = CVPOperand::INormal; break; case NRML: operand.Value.InputRegisterValue = CVPOperand::INormal; break;
case 'COL0': operand.Value.InputRegisterValue = CVPOperand::IPrimaryColor; break; case COL0: operand.Value.InputRegisterValue = CVPOperand::IPrimaryColor; break;
case 'COL1': operand.Value.InputRegisterValue = CVPOperand::ISecondaryColor; break; case COL1: operand.Value.InputRegisterValue = CVPOperand::ISecondaryColor; break;
case 'FOGC': operand.Value.InputRegisterValue = CVPOperand::IFogCoord; break; case FOGC: operand.Value.InputRegisterValue = CVPOperand::IFogCoord; break;
// texture argument // texture argument
case 'TEX0': case TEX0:
case 'TEX1': case TEX1:
case 'TEX2': case TEX2:
case 'TEX3': case TEX3:
case 'TEX4': case TEX4:
case 'TEX5': case TEX5:
case 'TEX6': case TEX6:
case 'TEX7': case TEX7:
operand.Value.InputRegisterValue = (CVPOperand::EInputRegister) (((CVPOperand::ITex0 + strValue) & 0xff) - '0'); operand.Value.InputRegisterValue = (CVPOperand::EInputRegister) (((CVPOperand::ITex0 + strValue) & 0xff) - '0');
break; break;
default: default:
@ -384,23 +463,23 @@ bool CVPParser::parseOutputRegister(CVPOperand &operand, std::string &errorOutpu
++_CurrChar; ++_CurrChar;
} }
// convert to enum // convert to enum
switch(strValue) switch((TArguments)strValue)
{ {
case 'HPOS': operand.Value.OutputRegisterValue = CVPOperand::OHPosition; break; case HPOS: operand.Value.OutputRegisterValue = CVPOperand::OHPosition; break;
case 'COL0': operand.Value.OutputRegisterValue = CVPOperand::OPrimaryColor; break; case COL0: operand.Value.OutputRegisterValue = CVPOperand::OPrimaryColor; break;
case 'COL1': operand.Value.OutputRegisterValue = CVPOperand::OSecondaryColor; break; case COL1: operand.Value.OutputRegisterValue = CVPOperand::OSecondaryColor; break;
case 'BFC0': operand.Value.OutputRegisterValue = CVPOperand::OBackFacePrimaryColor; break; case BFC0: operand.Value.OutputRegisterValue = CVPOperand::OBackFacePrimaryColor; break;
case 'BFC1': operand.Value.OutputRegisterValue = CVPOperand::OBackFaceSecondaryColor; break; case BFC1: operand.Value.OutputRegisterValue = CVPOperand::OBackFaceSecondaryColor; break;
case 'FOGC': operand.Value.OutputRegisterValue = CVPOperand::OFogCoord; break; case FOGC: operand.Value.OutputRegisterValue = CVPOperand::OFogCoord; break;
case 'PSIZ': operand.Value.OutputRegisterValue = CVPOperand::OPointSize; break; case PSIZ: operand.Value.OutputRegisterValue = CVPOperand::OPointSize; break;
case 'TEX0': operand.Value.OutputRegisterValue = CVPOperand::OTex0; break; case TEX0: operand.Value.OutputRegisterValue = CVPOperand::OTex0; break;
case 'TEX1': operand.Value.OutputRegisterValue = CVPOperand::OTex1; break; case TEX1: operand.Value.OutputRegisterValue = CVPOperand::OTex1; break;
case 'TEX2': operand.Value.OutputRegisterValue = CVPOperand::OTex2; break; case TEX2: operand.Value.OutputRegisterValue = CVPOperand::OTex2; break;
case 'TEX3': operand.Value.OutputRegisterValue = CVPOperand::OTex3; break; case TEX3: operand.Value.OutputRegisterValue = CVPOperand::OTex3; break;
case 'TEX4': operand.Value.OutputRegisterValue = CVPOperand::OTex4; break; case TEX4: operand.Value.OutputRegisterValue = CVPOperand::OTex4; break;
case 'TEX5': operand.Value.OutputRegisterValue = CVPOperand::OTex5; break; case TEX5: operand.Value.OutputRegisterValue = CVPOperand::OTex5; break;
case 'TEX6': operand.Value.OutputRegisterValue = CVPOperand::OTex6; break; case TEX6: operand.Value.OutputRegisterValue = CVPOperand::OTex6; break;
case 'TEX7': operand.Value.OutputRegisterValue = CVPOperand::OTex7; break; case TEX7: operand.Value.OutputRegisterValue = CVPOperand::OTex7; break;
default: default:
errorOutput = "Can't read index for output register."; errorOutput = "Can't read index for output register.";
return false; return false;
@ -753,9 +832,9 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
{ {
instrStr |= (uint32) ' '; instrStr |= (uint32) ' ';
} }
switch (instrStr) switch ((TArguments)instrStr)
{ {
case 'ARL ': case ARL:
instr.Opcode = CVPInstruction::ARL; instr.Opcode = CVPInstruction::ARL;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar()) if (!instr.Src1.Swizzle.isScalar())
@ -764,7 +843,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false; return false;
} }
break; break;
case 'RSQ ': case RSQ:
instr.Opcode = CVPInstruction::RSQ; instr.Opcode = CVPInstruction::RSQ;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar()) if (!instr.Src1.Swizzle.isScalar())
@ -773,8 +852,8 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false; return false;
} }
break; break;
case 'EXP ': case EXP:
case 'EXPP': case EXPP:
instr.Opcode = CVPInstruction::EXPP; instr.Opcode = CVPInstruction::EXPP;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar()) if (!instr.Src1.Swizzle.isScalar())
@ -789,7 +868,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false; return false;
}*/ }*/
break; break;
case 'LOG ': case LOG:
instr.Opcode = CVPInstruction::LOG; instr.Opcode = CVPInstruction::LOG;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar()) if (!instr.Src1.Swizzle.isScalar())
@ -805,7 +884,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
} }
*/ */
break; break;
case 'RCP ': case RCP:
instr.Opcode = CVPInstruction::RCP; instr.Opcode = CVPInstruction::RCP;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar()) if (!instr.Src1.Swizzle.isScalar())
@ -815,60 +894,60 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
} }
break; break;
///////////////// /////////////////
case 'MOV ': case MOV:
instr.Opcode = CVPInstruction::MOV; instr.Opcode = CVPInstruction::MOV;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
break; break;
case 'LIT ': case LIT:
instr.Opcode = CVPInstruction::LIT; instr.Opcode = CVPInstruction::LIT;
if (!parseOp2(instr, errorOutput)) return false; if (!parseOp2(instr, errorOutput)) return false;
break; break;
///////////////// /////////////////
case 'MAD ': case MAD:
instr.Opcode = CVPInstruction::MAD; instr.Opcode = CVPInstruction::MAD;
if (!parseOp4(instr, errorOutput)) return false; if (!parseOp4(instr, errorOutput)) return false;
break; break;
///////////////// /////////////////
case 'ADD ': case ADD:
instr.Opcode = CVPInstruction::ADD; instr.Opcode = CVPInstruction::ADD;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
///////////////// /////////////////
case 'MUL ': case MUL:
instr.Opcode = CVPInstruction::MUL; instr.Opcode = CVPInstruction::MUL;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'DP3 ': case DP3:
instr.Opcode = CVPInstruction::DP3; instr.Opcode = CVPInstruction::DP3;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'DP4 ': case DP4:
instr.Opcode = CVPInstruction::DP4; instr.Opcode = CVPInstruction::DP4;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'DST ': case DST:
instr.Opcode = CVPInstruction::DST; instr.Opcode = CVPInstruction::DST;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'MIN ': case MIN:
instr.Opcode = CVPInstruction::MIN; instr.Opcode = CVPInstruction::MIN;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'MAX ': case MAX:
instr.Opcode = CVPInstruction::MAX; instr.Opcode = CVPInstruction::MAX;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'SLT ': case SLT:
instr.Opcode = CVPInstruction::SLT; instr.Opcode = CVPInstruction::SLT;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
case 'SGE ': case SGE:
instr.Opcode = CVPInstruction::SGE; instr.Opcode = CVPInstruction::SGE;
if (!parseOp3(instr, errorOutput)) return false; if (!parseOp3(instr, errorOutput)) return false;
break; break;
///////////////// /////////////////
case 'END ': case END:
endEncountered = true; endEncountered = true;
return true; return true;
break; break;

View file

@ -231,7 +231,7 @@ bool CFormElm::isAtom () const
const CType* CFormElm::getType () const CType* CFormElm::getType ()
{ {
warning (false, "getType", "This node is not an atom."); warning (false, "getType", "This node is not an atom.");
return 0; return NULL;
} }
// *************************************************************************** // ***************************************************************************

View file

@ -121,7 +121,7 @@ namespace NLGUI
{ {
sint64 i; sint64 i;
if( fromString( value, i ) ) if( fromString( value, i ) )
_Divisor = i; _Modulo = i;
return; return;
} }
else else
@ -249,5 +249,16 @@ namespace NLGUI
{ {
} }
sint64 CDBViewNumber::getVal()
{
if( !_Number.hasValue() )
return 0;
if( _Modulo == 0 )
return _Number.getSInt64() / _Divisor;
else
return ( _Number.getSInt64() / _Divisor ) % _Modulo;
}
} }

View file

@ -157,14 +157,17 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CDBViewQuantity::draw () void CDBViewQuantity::draw ()
{ {
// change text if( _Number.hasValue() && _NumberMax.hasValue() )
sint32 val= _Number.getSInt32();
sint32 valMax= _NumberMax.getSInt32();
if(_Cache!=val || _CacheMax!=valMax)
{ {
_Cache= val; // change text
_CacheMax=valMax; sint32 val= _Number.getSInt32();
buildTextFromCache(); sint32 valMax= _NumberMax.getSInt32();
if(_Cache!=val || _CacheMax!=valMax)
{
_Cache= val;
_CacheMax=valMax;
buildTextFromCache();
}
} }
// parent call // parent call

View file

@ -1336,6 +1336,11 @@ namespace NLGUI
// if click, and not frozen, then get the focus // if click, and not frozen, then get the focus
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown && !_Frozen) if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown && !_Frozen)
{ {
if( getEditorMode() )
{
return CViewBase::handleEvent( event );
}
_SelectingText = true; _SelectingText = true;
stopParentBlink(); stopParentBlink();
CWidgetManager::getInstance()->setCaptureKeyboard (this); CWidgetManager::getInstance()->setCaptureKeyboard (this);
@ -1531,36 +1536,45 @@ namespace NLGUI
CInterfaceGroup::clearViews(); CInterfaceGroup::clearViews();
} }
// ----------------------------------------------------------------------------
void CGroupEditBox::createViewText()
{
nlwarning("Interface: CGroupEditBox: text 'edit_text' missing or bad type");
nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() );
_ViewText = dynamic_cast< CViewText* >( CInterfaceFactory::createClass( "text" ) );
if( _ViewText == NULL )
{
nlwarning( "Failed to create new 'edit_text' for %s", getId().c_str() );
return;
}
_ViewText->setParent( this );
_ViewText->setIdRecurse( "edit_text" );
_ViewText->setHardText( "" );
_ViewText->setPosRef( Hotspot_ML );
_ViewText->setParentPosRef( Hotspot_ML );
addView( _ViewText );
sint32 w,h;
w = std::max( sint32( _ViewText->getFontWidth() * _ViewText->getText().size() ), getW() );
h = std::max( sint32( _ViewText->getFontHeight() ), getH() );
setH( h );
setW( w );
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void CGroupEditBox::setup() void CGroupEditBox::setup()
{ {
// bind to the controls // bind to the controls
_ViewText = dynamic_cast<CViewText *>(CInterfaceGroup::getView("edit_text")); if( _ViewText == NULL )
_ViewText = dynamic_cast<CViewText *>(CInterfaceGroup::getView("edit_text"));
if(_ViewText == NULL) if(_ViewText == NULL)
{ createViewText();
nlwarning("Interface: CGroupEditBox: text 'edit_text' missing or bad type");
if( editorMode ) _ViewText->setEditorSelectable( false );
{
nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() );
_ViewText = dynamic_cast< CViewText* >( CInterfaceFactory::createClass( "text" ) );
if( _ViewText != NULL )
{
_ViewText->setParent( this );
_ViewText->setIdRecurse( "edit_text" );
_ViewText->setHardText( "sometext" );
_ViewText->setPosRef( Hotspot_TL );
_ViewText->setParentPosRef( Hotspot_TL );
addView( _ViewText );
setH( _ViewText->getFontHeight() );
setW( _ViewText->getFontWidth() * _ViewText->getText().size() );
}
else
nlwarning( "Failed to create new 'edit_text' for %s", getId().c_str() );
}
}
// For MultiLine editbox, clip the end space, else weird when edit space at end of line (nothing happens) // For MultiLine editbox, clip the end space, else weird when edit space at end of line (nothing happens)
if(_ViewText) if(_ViewText)

View file

@ -0,0 +1,380 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2014 Laszlo Kis-Adam
// 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 "nel/gui/group_editbox_decor.h"
#include "nel/gui/view_bitmap.h"
#include "nel/gui/view_text.h"
namespace NLGUI
{
class EBDPrivate
{
public:
enum Textures
{
BG,
L,
R,
TM,
BM,
TL,
TR,
BL,
BR,
TCOUNT
};
EBDPrivate()
{
for( int i = 0; i < TCOUNT; i++ )
{
_Textures.push_back( new CViewBitmap( CViewBase::TCtorParam() ) );
}
}
~EBDPrivate()
{
for( int i = 0; i < _Textures.size(); i++ )
delete _Textures[ i ];
_Textures.clear();
}
void draw()
{
for( int i = 0; i < _Textures.size(); i++ )
{
CViewBitmap *bm = _Textures[ i ];
bm->draw();
}
}
void updateCoords()
{
for( int i = 0; i < _Textures.size(); i++ )
{
CViewBitmap *bm = _Textures[ i ];
bm->fitTexture();
}
// W and H parameters depend on the sizes of the other textures
// Negative sizes mean that the sizes are that much smaller than the parent
sint32 w,h;
h = _Textures[ TL ]->getHReal() + _Textures[ BL ]->getHReal();
h *= -1;
_Textures[ L ]->setH( h );
h = _Textures[ TR ]->getHReal() + _Textures[ BR ]->getHReal();
h *= -1;
_Textures[ R ]->setH( h );
w = _Textures[ TL ]->getWReal() + _Textures[ TR ]->getWReal();
w *= -1;
_Textures[ TM ]->setW( w );
w = _Textures[ BL ]->getWReal() + _Textures[ BR ]->getWReal();
w *= -1;
_Textures[ BM ]->setW( w );
h = _Textures[ TM ]->getHReal() + _Textures[ BM ]->getHReal();
h *= -1;
w = _Textures[ L ]->getWReal() + _Textures[ R ]->getWReal();
w *= -1;
_Textures[ BG ]->setW( w );
_Textures[ BG ]->setH( h );
for( int i = 0; i < _Textures.size(); i++ )
{
CViewBitmap *bm = _Textures[ i ];
bm->updateCoords();
}
}
void setup( CInterfaceGroup *parent )
{
for( int i = 0; i < _Textures.size(); i++ )
{
CViewBitmap *bm = _Textures[ i ];
bm->setParent( parent );
bm->setParentPos( parent );
bm->setParentSize( parent );
bm->setEditorSelectable( false );
}
_Textures[ TL ]->setPosRef( Hotspot_TL );
_Textures[ TL ]->setParentPosRef( Hotspot_TL );
_Textures[ TM ]->setPosRef( Hotspot_TM );
_Textures[ TM ]->setParentPosRef( Hotspot_TM );
_Textures[ TM ]->setScale( true );
_Textures[ TM ]->setSizeRef( "w" );
_Textures[ TR ]->setPosRef( Hotspot_TR );
_Textures[ TR ]->setParentPosRef( Hotspot_TR );
_Textures[ BL ]->setPosRef( Hotspot_BL );
_Textures[ BL ]->setParentPosRef( Hotspot_BL );
_Textures[ BM ]->setPosRef( Hotspot_BM );
_Textures[ BM ]->setParentPosRef( Hotspot_BM );
_Textures[ BM ]->setScale( true );
_Textures[ BM ]->setSizeRef( "w" );
_Textures[ BR ]->setPosRef( Hotspot_BR );
_Textures[ BR ]->setParentPosRef( Hotspot_BR );
_Textures[ L ]->setPosRef( Hotspot_ML );
_Textures[ L ]->setParentPosRef( Hotspot_ML );
_Textures[ L ]->setScale( true );
_Textures[ L ]->setSizeRef( "h" );
_Textures[ R ]->setPosRef( Hotspot_MR );
_Textures[ R ]->setParentPosRef( Hotspot_MR );
_Textures[ R ]->setScale( true );
_Textures[ R ]->setSizeRef( "h" );
_Textures[ BG ]->setPosRef( Hotspot_MM );
_Textures[ BG ]->setParentPosRef( Hotspot_MM );
_Textures[ BG ]->setScale( true );
_Textures[ BG ]->setSizeRef( "wh" );
}
std::vector< CViewBitmap* > _Textures;
};
NLMISC_REGISTER_OBJECT( CViewBase, CGroupEditBoxDecor, std::string, "edit_box_decor" );
CGroupEditBoxDecor::CGroupEditBoxDecor( const TCtorParam &param ) :
CGroupEditBox( param )
{
_Pvt = new EBDPrivate();
_Pvt->setup( this );
createViewText();
getVT()->setSerializable( false );
getVT()->setEditorSelectable( false );
}
CGroupEditBoxDecor::~CGroupEditBoxDecor()
{
delete _Pvt;
_Pvt = NULL;
}
void CGroupEditBoxDecor::moveBy( sint32 x, sint32 y )
{
CInterfaceElement::moveBy( x, y );
_Pvt->updateCoords();
}
void CGroupEditBoxDecor::setIdRecurse( const std::string &newID )
{
CInterfaceElement::setIdRecurse( newID );
_ViewText->setIdRecurse( _ViewText->getShortId() );
}
std::string CGroupEditBoxDecor::getProperty( const std::string &name ) const
{
if( name == "tx_tl" )
{
return _Pvt->_Textures[ EBDPrivate::TL ]->getTexture();
}
else
if( name == "tx_tm" )
{
return _Pvt->_Textures[ EBDPrivate::TM ]->getTexture();
}
else
if( name == "tx_tr" )
{
return _Pvt->_Textures[ EBDPrivate::TR ]->getTexture();
}
else
if( name == "tx_bl" )
{
return _Pvt->_Textures[ EBDPrivate::BL ]->getTexture();
}
else
if( name == "tx_bm" )
{
return _Pvt->_Textures[ EBDPrivate::BM ]->getTexture();
}
else
if( name == "tx_br" )
{
return _Pvt->_Textures[ EBDPrivate::BR ]->getTexture();
}
else
if( name == "tx_l" )
{
return _Pvt->_Textures[ EBDPrivate::L ]->getTexture();
}
else
if( name == "tx_r" )
{
return _Pvt->_Textures[ EBDPrivate::R ]->getTexture();
}
else
if( name == "tx_bg" )
{
return _Pvt->_Textures[ EBDPrivate::BG ]->getTexture();
}
else
return CGroupEditBox::getProperty( name );
}
void CGroupEditBoxDecor::setProperty( const std::string &name, const std::string &value )
{
if( name == "tx_tl" )
{
_Pvt->_Textures[ EBDPrivate::TL ]->setTexture( value );
}
else
if( name == "tx_tm" )
{
_Pvt->_Textures[ EBDPrivate::TM ]->setTexture( value );
}
else
if( name == "tx_tr" )
{
_Pvt->_Textures[ EBDPrivate::TR ]->setTexture( value );
}
else
if( name == "tx_bl" )
{
_Pvt->_Textures[ EBDPrivate::BL ]->setTexture( value );
}
else
if( name == "tx_bm" )
{
_Pvt->_Textures[ EBDPrivate::BM ]->setTexture( value );
}
else
if( name == "tx_br" )
{
_Pvt->_Textures[ EBDPrivate::BR ]->setTexture( value );
}
else
if( name == "tx_l" )
{
_Pvt->_Textures[ EBDPrivate::L ]->setTexture( value );
}
else
if( name == "tx_r" )
{
_Pvt->_Textures[ EBDPrivate::R ]->setTexture( value );
}
else
if( name == "tx_bg" )
{
_Pvt->_Textures[ EBDPrivate::BG ]->setTexture( value );
}
else
CGroupEditBox::setProperty( name, value );
}
xmlNodePtr CGroupEditBoxDecor::serialize( xmlNodePtr parentNode, const char *type ) const
{
xmlNodePtr node = CGroupEditBox::serialize( parentNode, type );
if( node == NULL )
return NULL;
xmlSetProp( node, BAD_CAST "type", BAD_CAST "edit_box_decor" );
xmlSetProp( node, BAD_CAST "tx_tl", BAD_CAST _Pvt->_Textures[ EBDPrivate::TL ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_tr", BAD_CAST _Pvt->_Textures[ EBDPrivate::TR ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_tm", BAD_CAST _Pvt->_Textures[ EBDPrivate::TM ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_bl", BAD_CAST _Pvt->_Textures[ EBDPrivate::BL ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_bm", BAD_CAST _Pvt->_Textures[ EBDPrivate::BM ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_br", BAD_CAST _Pvt->_Textures[ EBDPrivate::BR ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_l", BAD_CAST _Pvt->_Textures[ EBDPrivate::L ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_r", BAD_CAST _Pvt->_Textures[ EBDPrivate::R ]->getTexture().c_str() );
xmlSetProp( node, BAD_CAST "tx_bg", BAD_CAST _Pvt->_Textures[ EBDPrivate::BG ]->getTexture().c_str() );
return node;
}
bool CGroupEditBoxDecor::parse( xmlNodePtr cur, CInterfaceGroup *parent )
{
if( !CGroupEditBox::parse( cur, parent ) )
return false;
CXMLAutoPtr prop;
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tl" );
if( prop )
_Pvt->_Textures[ EBDPrivate::TL ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tm" );
if( prop )
_Pvt->_Textures[ EBDPrivate::TM ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tr" );
if( prop )
_Pvt->_Textures[ EBDPrivate::TR ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bl" );
if( prop )
_Pvt->_Textures[ EBDPrivate::BL ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bm" );
if( prop )
_Pvt->_Textures[ EBDPrivate::BM ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_br" );
if( prop )
_Pvt->_Textures[ EBDPrivate::BR ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_l" );
if( prop )
_Pvt->_Textures[ EBDPrivate::L ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_r" );
if( prop )
_Pvt->_Textures[ EBDPrivate::R ]->setTexture( ( const char* )prop );
prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bg" );
if( prop )
_Pvt->_Textures[ EBDPrivate::BG ]->setTexture( ( const char* )prop );
getVT()->setIdRecurse( "edit_text" );
return true;
}
void CGroupEditBoxDecor::draw()
{
CGroupEditBox::draw();
_Pvt->draw();
}
void CGroupEditBoxDecor::updateCoords()
{
sint32 tw = _Pvt->_Textures[ EBDPrivate::L ]->getWReal();
getVT()->setX( tw + 1 );
CGroupEditBox::updateCoords();
_Pvt->updateCoords();
}
void CGroupEditBoxDecor::forceLink()
{
}
}

View file

@ -21,7 +21,7 @@
extern "C" extern "C"
{ {
/* Library Includes */ /* Library Includes */
#include "wwwsys.h" #include "wwwsys.h"
#include "WWWUtil.h" #include "WWWUtil.h"
#include "WWWCore.h" #include "WWWCore.h"
@ -41,8 +41,9 @@ using namespace NLMISC;
extern "C" extern "C"
{ {
/* Final states have negative value */ /* Final states have negative value */
typedef enum _FileState { typedef enum _FileState
{
FS_RETRY = -4, FS_RETRY = -4,
FS_ERROR = -3, FS_ERROR = -3,
FS_NO_DATA = -2, FS_NO_DATA = -2,
@ -57,26 +58,29 @@ typedef enum _FileState {
} FileState; } FileState;
/* This is the context structure for the this module */ /* This is the context structure for the this module */
typedef struct _file_info { typedef struct _file_info
FileState state; /* Current state of the connection */ {
char * local; /* Local representation of file name */ FileState state; /* Current state of the connection */
struct stat stat_info; /* Contains actual file chosen */ char * local; /* Local representation of file name */
struct stat stat_info; /* Contains actual file chosen */
HTNet * net; HTNet * net;
HTTimer * timer; HTTimer * timer;
} file_info; } file_info;
struct _HTStream { struct _HTStream
{
const HTStreamClass * isa; const HTStreamClass * isa;
}; };
struct _HTInputStream { struct _HTInputStream
{
const HTInputStreamClass * isa; const HTInputStreamClass * isa;
HTChannel * ch; HTChannel * ch;
HTHost * host; HTHost * host;
char * write; /* Last byte written */ char * write; /* Last byte written */
char * read; /* Last byte read */ char * read; /* Last byte read */
int b_read; int b_read;
char data [INPUT_BUFFER_SIZE]; /* buffer */ char data [INPUT_BUFFER_SIZE]; /* buffer */
}; };
PRIVATE int FileCleanup (HTRequest *req, int status) PRIVATE int FileCleanup (HTRequest *req, int status)
@ -96,7 +100,7 @@ PRIVATE int FileCleanup (HTRequest *req, int status)
} }
/* /*
** Remove if we have registered a timer function as a callback ** Remove if we have registered a timer function as a callback
*/ */
if (file->timer) if (file->timer)
{ {
@ -123,10 +127,8 @@ PUBLIC int HTLoadNeLFile (SOCKET soc, HTRequest * request)
HTNet * net = HTRequest_net(request); HTNet * net = HTRequest_net(request);
HTParentAnchor * anchor = HTRequest_anchor(request); HTParentAnchor * anchor = HTRequest_anchor(request);
HTTRACE(PROT_TRACE, "HTLoadFile.. Looking for `%s\'\n" _ HTTRACE(PROT_TRACE, "HTLoadFile.. Looking for `%s\'\n" _ HTAnchor_physical(anchor));
HTAnchor_physical(anchor)); if ((file = (file_info *) HT_CALLOC(1, sizeof(file_info))) == NULL) HT_OUTOFMEM("HTLoadFILE");
if ((file = (file_info *) HT_CALLOC(1, sizeof(file_info))) == NULL)
HT_OUTOFMEM((char*)"HTLoadFILE");
file->state = FS_BEGIN; file->state = FS_BEGIN;
file->net = net; file->net = net;
HTNet_setContext(net, file); HTNet_setContext(net, file);
@ -139,8 +141,8 @@ PUBLIC int HTLoadNeLFile (SOCKET soc, HTRequest * request)
PRIVATE int ReturnEvent (HTTimer * timer, void * param, HTEventType /* type */) PRIVATE int ReturnEvent (HTTimer * timer, void * param, HTEventType /* type */)
{ {
file_info * file = (file_info *) param; file_info * file = (file_info *) param;
if (timer != file->timer) if (timer != file->timer) HTDEBUGBREAK("File timer %p not in sync\n" _ timer);
HTDEBUGBREAK((char*)"File timer %p not in sync\n" _ timer);
HTTRACE(PROT_TRACE, "HTLoadFile.. Continuing %p with timer %p\n" _ file _ timer); HTTRACE(PROT_TRACE, "HTLoadFile.. Continuing %p with timer %p\n" _ file _ timer);
/* /*
@ -163,7 +165,7 @@ PUBLIC int HTNeLFileOpen (HTNet * net, char * local, HTLocalMode /* mode */)
if (!fp->open (local)) if (!fp->open (local))
{ {
HTRequest_addSystemError(request, ERR_FATAL, errno, NO, (char*)"CIFile::open"); HTRequest_addSystemError(request, ERR_FATAL, errno, NO, "CIFile::open");
return HT_ERROR; return HT_ERROR;
} }
@ -186,7 +188,7 @@ PRIVATE int FileEvent (SOCKET /* soc */, void * pVoid, HTEventType type)
{ {
/* Interrupted */ /* Interrupted */
HTRequest_addError(request, ERR_FATAL, NO, HTERR_INTERRUPTED, HTRequest_addError(request, ERR_FATAL, NO, HTERR_INTERRUPTED,
NULL, 0, (char*)"HTLoadFile"); NULL, 0, "HTLoadFile");
FileCleanup(request, HT_INTERRUPTED); FileCleanup(request, HT_INTERRUPTED);
return HT_OK; return HT_OK;
} }
@ -202,7 +204,7 @@ PRIVATE int FileEvent (SOCKET /* soc */, void * pVoid, HTEventType type)
/* We only support safe (GET, HEAD, etc) methods for the moment */ /* We only support safe (GET, HEAD, etc) methods for the moment */
if (!HTMethod_isSafe(HTRequest_method(request))) { if (!HTMethod_isSafe(HTRequest_method(request))) {
HTRequest_addError(request, ERR_FATAL, NO, HTERR_NOT_ALLOWED, HTRequest_addError(request, ERR_FATAL, NO, HTERR_NOT_ALLOWED,
NULL, 0, (char*)"HTLoadFile"); NULL, 0, "HTLoadFile");
file->state = FS_ERROR; file->state = FS_ERROR;
break; break;
} }
@ -234,166 +236,188 @@ PRIVATE int FileEvent (SOCKET /* soc */, void * pVoid, HTEventType type)
/* Create a new host object and link it to the net object */ /* Create a new host object and link it to the net object */
{ {
HTHost * host = NULL; HTHost * host = NULL;
if ((host = HTHost_new((char*)"localhost", 0)) == NULL) return HT_ERROR; if ((host = HTHost_new("localhost", 0)) == NULL) return HT_ERROR;
HTNet_setHost(net, host); HTNet_setHost(net, host);
if (HTHost_addNet(host, net) == HT_PENDING) { if (HTHost_addNet(host, net) == HT_PENDING)
HTTRACE(PROT_TRACE, "HTLoadFile.. Pending...\n"); {
/* move to the hack state */ HTTRACE(PROT_TRACE, "HTLoadFile.. Pending...\n");
file->state = FS_PENDING; /* move to the hack state */
return HT_OK; file->state = FS_PENDING;
} return HT_OK;
}
} }
file->state = FS_DO_CN; file->state = FS_DO_CN;
break; break;
case FS_PENDING: case FS_PENDING:
{ {
HTHost * host = NULL; HTHost * host = NULL;
if ((host = HTHost_new((char*)"localhost", 0)) == NULL) return HT_ERROR; if ((host = HTHost_new((char*)"localhost", 0)) == NULL) return HT_ERROR;
HTNet_setHost(net, host); HTNet_setHost(net, host);
if (HTHost_addNet(host, net) == HT_PENDING) { if (HTHost_addNet(host, net) == HT_PENDING)
HTTRACE(PROT_TRACE, "HTLoadFile.. Pending...\n"); {
file->state = FS_PENDING; HTTRACE(PROT_TRACE, "HTLoadFile.. Pending...\n");
return HT_OK; file->state = FS_PENDING;
} return HT_OK;
}
} }
file->state = FS_DO_CN; file->state = FS_DO_CN;
break; break;
case FS_DO_CN: case FS_DO_CN:
if (HTRequest_negotiation(request) && if (HTRequest_negotiation(request) &&
HTMethod_isSafe(HTRequest_method(request))) { HTMethod_isSafe(HTRequest_method(request)))
{
HTAnchor_setPhysical(anchor, file->local);
HTTRACE(PROT_TRACE, "Load File... Found `%s\'\n" _ file->local);
}
else
{
if (HT_STAT(file->local, &file->stat_info) == -1)
{
HTTRACE(PROT_TRACE, "Load File... Not found `%s\'\n" _ file->local);
HTRequest_addError(request, ERR_FATAL, NO, HTERR_NOT_FOUND, NULL, 0, "HTLoadFile");
file->state = FS_ERROR;
break;
}
}
HTAnchor_setPhysical(anchor, file->local); if (((file->stat_info.st_mode) & S_IFMT) == S_IFDIR)
HTTRACE(PROT_TRACE, "Load File... Found `%s\'\n" _ file->local); {
if (HTRequest_method(request) == METHOD_GET)
} else { {
if (HT_STAT(file->local, &file->stat_info) == -1) { file->state = FS_PARSE_DIR;
HTTRACE(PROT_TRACE, "Load File... Not found `%s\'\n" _ file->local); }
HTRequest_addError(request, ERR_FATAL, NO, HTERR_NOT_FOUND, else
NULL, 0, (char*)"HTLoadFile"); {
file->state = FS_ERROR; HTRequest_addError(request, ERR_INFO, NO, HTERR_NO_CONTENT, NULL, 0, "HTLoadFile");
file->state = FS_NO_DATA;
}
break; break;
} }
}
if (((file->stat_info.st_mode) & S_IFMT) == S_IFDIR) {
if (HTRequest_method(request) == METHOD_GET)
file->state = FS_PARSE_DIR;
else {
HTRequest_addError(request, ERR_INFO, NO, HTERR_NO_CONTENT,
NULL, 0, (char*)"HTLoadFile");
file->state = FS_NO_DATA;
}
break;
}
{ {
BOOL editable = FALSE; BOOL editable = FALSE;
HTBind_getAnchorBindings(anchor); HTBind_getAnchorBindings(anchor);
if (editable) HTAnchor_appendAllow(anchor, METHOD_PUT); if (editable) HTAnchor_appendAllow(anchor, METHOD_PUT);
/* Set the file size */ /* Set the file size */
CIFile nelFile; CIFile nelFile;
if (nelFile.open (file->local)) if (nelFile.open (file->local))
{ {
file->stat_info.st_size = nelFile.getFileSize(); file->stat_info.st_size = nelFile.getFileSize();
} }
nelFile.close(); nelFile.close();
if (file->stat_info.st_size) if (file->stat_info.st_size)
HTAnchor_setLength(anchor, file->stat_info.st_size); HTAnchor_setLength(anchor, file->stat_info.st_size);
/* Set the file last modified time stamp */ /* Set the file last modified time stamp */
if (file->stat_info.st_mtime > 0) if (file->stat_info.st_mtime > 0)
HTAnchor_setLastModified(anchor, file->stat_info.st_mtime); HTAnchor_setLastModified(anchor, file->stat_info.st_mtime);
/* Check to see if we can edit it */ /* Check to see if we can edit it */
if (!editable && !file->stat_info.st_size) { if (!editable && !file->stat_info.st_size)
HTRequest_addError(request, ERR_INFO, NO, HTERR_NO_CONTENT, {
NULL, 0, (char*)"HTLoadFile"); HTRequest_addError(request, ERR_INFO, NO, HTERR_NO_CONTENT, NULL, 0, "HTLoadFile");
file->state = FS_NO_DATA; file->state = FS_NO_DATA;
} else { }
file->state = (HTRequest_method(request)==METHOD_GET) ? else
FS_NEED_OPEN_FILE : FS_GOT_DATA; {
} file->state = (HTRequest_method(request)==METHOD_GET) ? FS_NEED_OPEN_FILE : FS_GOT_DATA;
}
} }
break; break;
case FS_NEED_OPEN_FILE: case FS_NEED_OPEN_FILE:
status = HTNeLFileOpen(net, file->local, HT_FB_RDONLY); status = HTNeLFileOpen(net, file->local, HT_FB_RDONLY);
if (status == HT_OK) { if (status == HT_OK)
{ {
HTStream * rstream = HTStreamStack(HTAnchor_format(anchor), {
HTRequest_outputFormat(request), HTStream * rstream = HTStreamStack(HTAnchor_format(anchor),
HTRequest_outputStream(request), HTRequest_outputFormat(request),
request, YES); HTRequest_outputStream(request),
HTNet_setReadStream(net, rstream); request, YES);
HTRequest_setOutputConnected(request, YES); HTNet_setReadStream(net, rstream);
} HTRequest_setOutputConnected(request, YES);
{
HTOutputStream * output = HTNet_getOutput(net, NULL, 0);
HTRequest_setInputStream(request, (HTStream *) output);
}
if (HTRequest_isSource(request) && !HTRequest_destinationsReady(request))
return HT_OK;
HTRequest_addError(request, ERR_INFO, NO, HTERR_OK, NULL, 0,
(char*)"HTLoadFile");
file->state = FS_NEED_BODY;
if (HTEvent_isCallbacksRegistered()) {
if (!HTRequest_preemptive(request)) {
if (!HTNet_preemptive(net)) {
HTTRACE(PROT_TRACE, "HTLoadFile.. Returning\n");
HTHost_register(HTNet_host(net), net, HTEvent_READ);
} else if (!file->timer) {
HTTRACE(PROT_TRACE, "HTLoadFile.. Returning\n");
file->timer =
HTTimer_new(NULL, ReturnEvent, file, 1, YES, NO);
} }
return HT_OK;
{
HTOutputStream * output = HTNet_getOutput(net, NULL, 0);
HTRequest_setInputStream(request, (HTStream *) output);
}
if (HTRequest_isSource(request) && !HTRequest_destinationsReady(request)) return HT_OK;
HTRequest_addError(request, ERR_INFO, NO, HTERR_OK, NULL, 0, "HTLoadFile");
file->state = FS_NEED_BODY;
if (HTEvent_isCallbacksRegistered())
{
if (!HTRequest_preemptive(request))
{
if (!HTNet_preemptive(net))
{
HTTRACE(PROT_TRACE, "HTLoadFile.. Returning\n");
HTHost_register(HTNet_host(net), net, HTEvent_READ);
}
else if (!file->timer)
{
HTTRACE(PROT_TRACE, "HTLoadFile.. Returning\n");
file->timer = HTTimer_new(NULL, ReturnEvent, file, 1, YES, NO);
}
return HT_OK;
}
} }
} }
} else if (status == HT_WOULD_BLOCK || status == HT_PENDING) else if (status == HT_WOULD_BLOCK || status == HT_PENDING)
return HT_OK; {
else { return HT_OK;
HTRequest_addError(request, ERR_INFO, NO, HTERR_INTERNAL, }
NULL, 0, (char*)"HTLoadFile"); else
file->state = FS_ERROR; /* Error or interrupt */ {
HTRequest_addError(request, ERR_INFO, NO, HTERR_INTERNAL, NULL, 0, "HTLoadFile");
file->state = FS_ERROR; /* Error or interrupt */
} }
break; break;
case FS_NEED_BODY: case FS_NEED_BODY:
status = HTHost_read(HTNet_host(net), net); status = HTHost_read(HTNet_host(net), net);
if (status == HT_WOULD_BLOCK) if (status == HT_WOULD_BLOCK)
return HT_OK; {
else if (status == HT_LOADED || status == HT_CLOSED) { return HT_OK;
file->state = FS_GOT_DATA; }
} else { else if (status == HT_LOADED || status == HT_CLOSED)
HTRequest_addError(request, ERR_INFO, NO, HTERR_FORBIDDEN, {
NULL, 0, (char*)"HTLoadFile"); file->state = FS_GOT_DATA;
file->state = FS_ERROR; }
else
{
HTRequest_addError(request, ERR_INFO, NO, HTERR_FORBIDDEN, NULL, 0, "HTLoadFile");
file->state = FS_ERROR;
} }
break; break;
case FS_TRY_FTP: case FS_TRY_FTP:
{ {
char *url = HTAnchor_physical(anchor); char *url = HTAnchor_physical(anchor);
HTAnchor *anchor; HTAnchor *anchor;
char *newname = NULL; char *newname = NULL;
StrAllocCopy(newname, "ftp:"); StrAllocCopy(newname, "ftp:");
if (!strncmp(url, "file:", 5)) if (!strncmp(url, "file:", 5))
StrAllocCat(newname, url+5); {
else StrAllocCat(newname, url+5);
StrAllocCat(newname, url); }
anchor = HTAnchor_findAddress(newname); else
HTRequest_setAnchor(request, anchor); {
HT_FREE(newname); StrAllocCat(newname, url);
FileCleanup(request, HT_IGNORE); }
return HTLoad(request, YES); anchor = HTAnchor_findAddress(newname);
HTRequest_setAnchor(request, anchor);
HT_FREE(newname);
FileCleanup(request, HT_IGNORE);
return HTLoad(request, YES);
} }
break; break;
@ -461,7 +485,8 @@ PRIVATE int HTNeLReader_read (HTInputStream * me)
{ {
HTAlertCallback * cbf = HTAlert_find(HT_PROG_READ); HTAlertCallback * cbf = HTAlert_find(HT_PROG_READ);
HTNet_addBytesRead(net, me->b_read); HTNet_addBytesRead(net, me->b_read);
if (cbf) { if (cbf)
{
int tr = HTNet_bytesRead(net); int tr = HTNet_bytesRead(net);
(*cbf)(net->request, HT_PROG_READ, HT_MSG_NULL, NULL, &tr, NULL); (*cbf)(net->request, HT_PROG_READ, HT_MSG_NULL, NULL, &tr, NULL);
} }
@ -472,18 +497,28 @@ PRIVATE int HTNeLReader_read (HTInputStream * me)
/* Now push the data down the stream */ /* Now push the data down the stream */
if ((status = (*net->readStream->isa->put_block) if ((status = (*net->readStream->isa->put_block)
(net->readStream, me->data, me->b_read)) != HT_OK) { (net->readStream, me->data, me->b_read)) != HT_OK)
if (status == HT_WOULD_BLOCK) { {
if (status == HT_WOULD_BLOCK)
{
HTTRACE(PROT_TRACE, "ANSI read... Target WOULD BLOCK\n"); HTTRACE(PROT_TRACE, "ANSI read... Target WOULD BLOCK\n");
return HT_WOULD_BLOCK; return HT_WOULD_BLOCK;
} else if (status == HT_PAUSE) { }
else if (status == HT_PAUSE)
{
HTTRACE(PROT_TRACE, "ANSI read... Target PAUSED\n"); HTTRACE(PROT_TRACE, "ANSI read... Target PAUSED\n");
return HT_PAUSE; return HT_PAUSE;
} else if (status > 0) { /* Stream specific return code */ }
else if (status > 0)
{
/* Stream specific return code */
HTTRACE(PROT_TRACE, "ANSI read... Target returns %d\n" _ status); HTTRACE(PROT_TRACE, "ANSI read... Target returns %d\n" _ status);
me->write = me->data + me->b_read; me->write = me->data + me->b_read;
return status; return status;
} else { /* We have a real error */ }
else
{
/* We have a real error */
HTTRACE(PROT_TRACE, "ANSI read... Target ERROR\n"); HTTRACE(PROT_TRACE, "ANSI read... Target ERROR\n");
return status; return status;
} }
@ -506,13 +541,15 @@ PRIVATE int HTNeLReader_close (HTInputStream * me)
HTNet * net = HTHost_getReadNet(me->host); HTNet * net = HTHost_getReadNet(me->host);
if (net && net->readStream) { if (net && net->readStream)
if ((status = (*net->readStream->isa->_free)(net->readStream))==HT_WOULD_BLOCK) {
return HT_WOULD_BLOCK; if ((status = (*net->readStream->isa->_free)(net->readStream))==HT_WOULD_BLOCK) return HT_WOULD_BLOCK;
net->readStream = NULL; net->readStream = NULL;
} }
HTTRACE(STREAM_TRACE, "Socket read. FREEING....\n"); HTTRACE(STREAM_TRACE, "Socket read. FREEING....\n");
HT_FREE(me); HT_FREE(me);
return status; return status;
} }
@ -540,7 +577,8 @@ PRIVATE int HTNeLReader_free (HTInputStream * me)
} }
HTNet * net = HTHost_getReadNet(me->host); HTNet * net = HTHost_getReadNet(me->host);
if (net && net->readStream) { if (net && net->readStream)
{
int status = (*net->readStream->isa->_free)(net->readStream); int status = (*net->readStream->isa->_free)(net->readStream);
if (status == HT_OK) net->readStream = NULL; if (status == HT_OK) net->readStream = NULL;
return status; return status;
@ -551,7 +589,8 @@ PRIVATE int HTNeLReader_free (HTInputStream * me)
PRIVATE int HTNeLReader_abort (HTInputStream * me, HTList * /* e */) PRIVATE int HTNeLReader_abort (HTInputStream * me, HTList * /* e */)
{ {
HTNet * net = HTHost_getReadNet(me->host); HTNet * net = HTHost_getReadNet(me->host);
if (net && net->readStream) { if (net && net->readStream)
{
int status = (*net->readStream->isa->abort)(net->readStream, NULL); int status = (*net->readStream->isa->abort)(net->readStream, NULL);
if (status != HT_IGNORE) net->readStream = NULL; if (status != HT_IGNORE) net->readStream = NULL;
} }
@ -560,7 +599,7 @@ PRIVATE int HTNeLReader_abort (HTInputStream * me, HTList * /* e */)
PRIVATE const HTInputStreamClass HTNeLReader = PRIVATE const HTInputStreamClass HTNeLReader =
{ {
(char*)"SocketReader", "SocketReader",
HTNeLReader_flush, HTNeLReader_flush,
HTNeLReader_free, HTNeLReader_free,
HTNeLReader_abort, HTNeLReader_abort,
@ -569,20 +608,20 @@ PRIVATE const HTInputStreamClass HTNeLReader =
HTNeLReader_consumed HTNeLReader_consumed
}; };
PUBLIC HTInputStream * HTNeLReader_new (HTHost * host, HTChannel * ch, PUBLIC HTInputStream * HTNeLReader_new (HTHost * host, HTChannel * ch, void * /* param */, int /* mode */)
void * /* param */, int /* mode */)
{ {
if (host && ch) { if (host && ch)
HTInputStream * me = HTChannel_input(ch); {
if (me == NULL) { HTInputStream * me = HTChannel_input(ch);
if ((me=(HTInputStream *) HT_CALLOC(1, sizeof(HTInputStream))) == NULL) if (me == NULL)
HT_OUTOFMEM((char*)"HTNeLReader_new"); {
me->isa = &HTNeLReader; if ((me=(HTInputStream *) HT_CALLOC(1, sizeof(HTInputStream))) == NULL) HT_OUTOFMEM("HTNeLReader_new");
me->ch = ch; me->isa = &HTNeLReader;
me->host = host; me->ch = ch;
HTTRACE(STREAM_TRACE, "Reader...... Created reader stream %p\n" _ me); me->host = host;
} HTTRACE(STREAM_TRACE, "Reader...... Created reader stream %p\n" _ me);
return me; }
return me;
} }
return NULL; return NULL;
} }

View file

@ -20,6 +20,7 @@
#include "nel/gui/dbview_number.h" #include "nel/gui/dbview_number.h"
#include "nel/gui/dbview_quantity.h" #include "nel/gui/dbview_quantity.h"
#include "nel/gui/view_pointer.h" #include "nel/gui/view_pointer.h"
#include "nel/gui/group_editbox_decor.h"
namespace NLGUI namespace NLGUI
{ {
@ -39,5 +40,6 @@ namespace NLGUI
force_link_dbgroup_select_number_cpp(); force_link_dbgroup_select_number_cpp();
force_link_dbgroup_combo_box_cpp(); force_link_dbgroup_combo_box_cpp();
force_link_group_wheel_cpp(); force_link_group_wheel_cpp();
CGroupEditBoxDecor::forceLink();
} }
} }

View file

@ -2436,6 +2436,9 @@ namespace NLGUI
CCtrlBase *ctrl= _CtrlsUnderPointer[i]; CCtrlBase *ctrl= _CtrlsUnderPointer[i];
if (ctrl && ctrl->isCapturable() && ctrl->isInGroup( pNewCurrentWnd ) ) if (ctrl && ctrl->isCapturable() && ctrl->isInGroup( pNewCurrentWnd ) )
{ {
if( CInterfaceElement::getEditorMode() && !ctrl->isEditorSelectable() )
continue;
uint d = ctrl->getDepth( pNewCurrentWnd ); uint d = ctrl->getDepth( pNewCurrentWnd );
if (d > nMaxDepth) if (d > nMaxDepth)
{ {
@ -2454,6 +2457,9 @@ namespace NLGUI
CViewBase *v = _ViewsUnderPointer[i]; CViewBase *v = _ViewsUnderPointer[i];
if( ( v != NULL ) && v->isInGroup( pNewCurrentWnd ) ) if( ( v != NULL ) && v->isInGroup( pNewCurrentWnd ) )
{ {
if( CInterfaceElement::getEditorMode() && !v->isEditorSelectable() )
continue;
_CapturedView = v; _CapturedView = v;
captured = true; captured = true;
break; break;

View file

@ -1499,7 +1499,7 @@ void cf_setVar (NLMISC::CConfigFile::CVar &Var, cf_value Val)
switch (Val.Type) switch (Val.Type)
{ {
case NLMISC::CConfigFile::CVar::T_REAL: Var.IntValues.push_back ((int)Val.Real); break; case NLMISC::CConfigFile::CVar::T_REAL: Var.IntValues.push_back ((int)Val.Real); break;
case NLMISC::CConfigFile::CVar::T_STRING: Var.IntValues.push_back (atoi(Val.String)); break; case NLMISC::CConfigFile::CVar::T_STRING: { int val = 0; NLMISC::fromString(Val.String, val); Var.IntValues.push_back(val); break; }
default: break; default: break;
} }
break; break;
@ -1507,7 +1507,7 @@ void cf_setVar (NLMISC::CConfigFile::CVar &Var, cf_value Val)
switch (Val.Type) switch (Val.Type)
{ {
case NLMISC::CConfigFile::CVar::T_INT: Var.RealValues.push_back ((double)Val.Int); break; case NLMISC::CConfigFile::CVar::T_INT: Var.RealValues.push_back ((double)Val.Int); break;
case NLMISC::CConfigFile::CVar::T_STRING: Var.RealValues.push_back (atof(Val.String)); break; case NLMISC::CConfigFile::CVar::T_STRING: { double val = 0.0; NLMISC::fromString(Val.String, val); Var.RealValues.push_back(val); break; }
default: break; default: break;
} }
break; break;

View file

@ -517,7 +517,7 @@ void cf_setVar (NLMISC::CConfigFile::CVar &Var, cf_value Val)
switch (Val.Type) switch (Val.Type)
{ {
case NLMISC::CConfigFile::CVar::T_REAL: Var.IntValues.push_back ((int)Val.Real); break; case NLMISC::CConfigFile::CVar::T_REAL: Var.IntValues.push_back ((int)Val.Real); break;
case NLMISC::CConfigFile::CVar::T_STRING: Var.IntValues.push_back (atoi(Val.String)); break; case NLMISC::CConfigFile::CVar::T_STRING: { int val = 0; NLMISC::fromString(Val.String, val); Var.RealValues.push_back(val); break; }
default: break; default: break;
} }
break; break;
@ -525,7 +525,7 @@ void cf_setVar (NLMISC::CConfigFile::CVar &Var, cf_value Val)
switch (Val.Type) switch (Val.Type)
{ {
case NLMISC::CConfigFile::CVar::T_INT: Var.RealValues.push_back ((double)Val.Int); break; case NLMISC::CConfigFile::CVar::T_INT: Var.RealValues.push_back ((double)Val.Int); break;
case NLMISC::CConfigFile::CVar::T_STRING: Var.RealValues.push_back (atof(Val.String)); break; case NLMISC::CConfigFile::CVar::T_STRING: { double val = 0.0; NLMISC::fromString(Val.String, val); Var.RealValues.push_back(val); break; }
default: break; default: break;
} }
break; break;

View file

@ -2337,7 +2337,7 @@ YY_RULE_SETUP
if (!cf_Ignore) if (!cf_Ignore)
{ {
cflval.Val.Type = T_REAL; cflval.Val.Type = T_REAL;
cflval.Val.Real = atof (yytext); NLMISC::fromString(yytext, cflval.Val.Real);
DEBUG_PRINTF("lex: real '%s' '%f\n", yytext, cflval.Val.Real); DEBUG_PRINTF("lex: real '%s' '%f\n", yytext, cflval.Val.Real);
return REAL; return REAL;
} }

View file

@ -85,8 +85,12 @@ double CConfigFile::CVar::asDouble (int index) const
if (index >= (int)IntValues.size () || index < 0) throw EBadSize (Name, (int)IntValues.size (), index); if (index >= (int)IntValues.size () || index < 0) throw EBadSize (Name, (int)IntValues.size (), index);
return (double)IntValues[index]; return (double)IntValues[index];
case T_STRING: case T_STRING:
{
if (index >= (int)StrValues.size () || index < 0) throw EBadSize (Name, (int)StrValues.size (), index); if (index >= (int)StrValues.size () || index < 0) throw EBadSize (Name, (int)StrValues.size (), index);
return atof(StrValues[index].c_str()); double val;
NLMISC::fromString(StrValues[index], val);
return val;
}
default: default:
if (index >= (int)RealValues.size () || index < 0) throw EBadSize (Name, (int)RealValues.size (), index); if (index >= (int)RealValues.size () || index < 0) throw EBadSize (Name, (int)RealValues.size (), index);
return RealValues[index]; return RealValues[index];

View file

@ -406,13 +406,21 @@ void CUnfairMutex::leave()
*/ */
CFairMutex::CFairMutex() CFairMutex::CFairMutex()
{ {
#ifdef NL_OS_MAC
_Sem = dispatch_semaphore_create(1);
#else
sem_init( const_cast<sem_t*>(&_Sem), 0, 1 ); sem_init( const_cast<sem_t*>(&_Sem), 0, 1 );
#endif
} }
CFairMutex::CFairMutex( const std::string &name ) CFairMutex::CFairMutex( const std::string &name )
{ {
#ifdef NL_OS_MAC
_Sem = dispatch_semaphore_create(1);
#else
sem_init( const_cast<sem_t*>(&_Sem), 0, 1 ); sem_init( const_cast<sem_t*>(&_Sem), 0, 1 );
#endif
} }
@ -421,7 +429,11 @@ CFairMutex::CFairMutex( const std::string &name )
*/ */
CFairMutex::~CFairMutex() CFairMutex::~CFairMutex()
{ {
#ifdef NL_OS_MAC
dispatch_release(_Sem);
#else
sem_destroy( const_cast<sem_t*>(&_Sem) ); // needs that no thread is waiting on the semaphore sem_destroy( const_cast<sem_t*>(&_Sem) ); // needs that no thread is waiting on the semaphore
#endif
} }
@ -430,7 +442,11 @@ CFairMutex::~CFairMutex()
*/ */
void CFairMutex::enter() void CFairMutex::enter()
{ {
#ifdef NL_OS_MAC
dispatch_semaphore_wait(_Sem, DISPATCH_TIME_FOREVER);
#else
sem_wait( const_cast<sem_t*>(&_Sem) ); sem_wait( const_cast<sem_t*>(&_Sem) );
#endif
} }
@ -439,7 +455,11 @@ void CFairMutex::enter()
*/ */
void CFairMutex::leave() void CFairMutex::leave()
{ {
#ifdef NL_OS_MAC
dispatch_semaphore_signal(_Sem);
#else
sem_post( const_cast<sem_t*>(&_Sem) ); sem_post( const_cast<sem_t*>(&_Sem) );
#endif
} }

View file

@ -2544,6 +2544,57 @@ bool CPath::makePathRelative (const char *basePath, std::string &relativePath)
return false; return false;
} }
std::string CPath::makePathAbsolute( const std::string &relativePath, const std::string &directory )
{
if( relativePath.empty() )
return "";
if( directory.empty() )
return "";
#ifdef NL_OS_WINDOWS
// Windows network address. Eg.: \\someshare\path
if( ( relativePath[ 0 ] == '\\' ) && ( relativePath[ 1 ] == '\\' ) )
return relativePath;
// Normal Windows absolute path. Eg.: C:\something
//
if( isalpha( relativePath[ 0 ] ) && ( relativePath[ 1 ] == ':' ) && ( ( relativePath[ 2 ] == '\\' ) || ( relativePath[ 2 ] == '/' ) ) )
return relativePath;
#else
// Unix filesystem absolute path
if( relativePath[ 0 ] == '/' )
return relativePath;
#endif
// Add a slash to the directory if necessary.
// If the relative path starts with dots we need a slash.
// If the relative path starts with a slash we don't.
// If it starts with neither, we need a slash.
bool needSlash = true;
char c = relativePath[ 0 ];
if( ( c == '\\' ) || ( c == '/' ) )
needSlash = false;
bool hasSlash = false;
std::string npath = directory;
c = npath[ npath.size() - 1 ];
if( ( c == '\\' ) || ( c == '/' ) )
hasSlash = true;
if( needSlash && !hasSlash )
npath += '/';
else
if( hasSlash && !needSlash )
npath.resize( npath.size() - 1 );
// Now build the new absolute path
npath += relativePath;
npath = standardizePath( npath, false );
return npath;
}
bool CFile::setRWAccess(const std::string &filename) bool CFile::setRWAccess(const std::string &filename)
{ {
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS

View file

@ -185,7 +185,7 @@ namespace NLQT
NL3D::CBloomEffect::instance().setDriver(_Driver); NL3D::CBloomEffect::instance().setDriver(_Driver);
NL3D::CBloomEffect::instance().setScene(_Scene); NL3D::CBloomEffect::instance().setScene(_Scene);
NL3D::CBloomEffect::instance().init(!_Direct3D); NL3D::CBloomEffect::instance().init();
//NL3D::CBloomEffect::instance().setDensityBloom(Modules::config().getConfigFile().getVar("BloomDensity").asInt()); //NL3D::CBloomEffect::instance().setDensityBloom(Modules::config().getConfigFile().getVar("BloomDensity").asInt());
//NL3D::CBloomEffect::instance().setSquareBloom(Modules::config().getConfigFile().getVar("BloomSquare").asBool()); //NL3D::CBloomEffect::instance().setSquareBloom(Modules::config().getConfigFile().getVar("BloomSquare").asBool());
} }
@ -366,7 +366,7 @@ namespace NLQT
// Render the scene. // Render the scene.
if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect)) if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect))
{ {
NL3D::CBloomEffect::instance().initBloom(); NL3D::CBloomEffect::instance().init();
} }
_Driver->clearBuffers(_BackgroundColor); _Driver->clearBuffers(_BackgroundColor);
} }
@ -378,8 +378,7 @@ namespace NLQT
if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect)) if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect))
{ {
NL3D::CBloomEffect::instance().endBloom(); NL3D::CBloomEffect::instance().applyBloom();
NL3D::CBloomEffect::instance().endInterfacesDisplayBloom();
} }
} }

View file

@ -70,7 +70,6 @@ void CColorModifier::convertBitmap(NLMISC::CBitmap &destBitmap, const NLMISC::CB
// blend to the destination by using the mask alpha // blend to the destination by using the mask alpha
result.blendFromui(*dest, result, mask->R); result.blendFromui(*dest, result, mask->R);
/// keep alpha from the source /// keep alpha from the source
dest->R = result.R; dest->R = result.R;
@ -78,7 +77,6 @@ void CColorModifier::convertBitmap(NLMISC::CBitmap &destBitmap, const NLMISC::CB
dest->B = result.B; dest->B = result.B;
dest->A = src->A; dest->A = src->A;
++ mask; ++ mask;
++ src; ++ src;
++ dest; ++ dest;

View file

@ -54,13 +54,13 @@ FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,129,7,50,14 DEFPUSHBUTTON "OK",IDOK,129,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,129,42,50,14 PUSHBUTTON "Cancel",IDCANCEL,129,42,50,14
CONTROL "All",IDC_ALLCHANNEL,"Button",BS_AUTOCHECKBOX | CONTROL "All",IDC_ALLCHANNEL,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,7,23,10 WS_TABSTOP,7,7,23,10
CONTROL "Channel Position",IDC_CHANNELPOS,"Button", CONTROL "Channel Position",IDC_CHANNELPOS,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,7,23,69,10 BS_AUTOCHECKBOX | WS_TABSTOP,7,23,69,10
CONTROL "Channel Rotation",IDC_CHANNELROT,"Button", CONTROL "Channel Rotation",IDC_CHANNELROT,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,7,34,71,10 BS_AUTOCHECKBOX | WS_TABSTOP,7,34,71,10
CONTROL "Channel Scale",IDC_CHANNELSCA,"Button",BS_AUTOCHECKBOX | CONTROL "Channel Scale",IDC_CHANNELSCA,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,46,62,10 WS_TABSTOP,7,46,62,10
END END
@ -91,11 +91,11 @@ BEGIN
10 10
CONTROL "64x",IDC_RADIOSS4,"Button",BS_AUTORADIOBUTTON,15,146,27, CONTROL "64x",IDC_RADIOSS4,"Button",BS_AUTORADIOBUTTON,15,146,27,
10 10
CONTROL "Shadow",IDC_SHADOW,"Button",BS_AUTOCHECKBOX | CONTROL "Shadow",IDC_SHADOW,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,81,18,42,10 WS_TABSTOP,81,18,42,10
CONTROL "Exclude non selected nodes from lighting",IDC_EXCLUDE, CONTROL "Exclude non selected nodes from lighting",IDC_EXCLUDE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,145,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,145,10
CONTROL "Show Lumel",IDC_SHOWLUMEL,"Button",BS_AUTOCHECKBOX | CONTROL "Show Lumel",IDC_SHOWLUMEL,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,91,100,55,10 WS_TABSTOP,91,100,55,10
CONTROL "Export bg color",IDC_EXPORT_BG_COLOR,"Button", CONTROL "Export bg color",IDC_EXPORT_BG_COLOR,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,91,115,63,10 BS_AUTOCHECKBOX | WS_TABSTOP,91,115,63,10
@ -131,28 +131,28 @@ BEGIN
GROUPBOX "LOD Root Properties",IDC_STATIC,5,5,172,95 GROUPBOX "LOD Root Properties",IDC_STATIC,5,5,172,95
LTEXT "List of lod mesh (ungrowing order):",IDC_STATIC,15,15, LTEXT "List of lod mesh (ungrowing order):",IDC_STATIC,15,15,
108,10,SS_CENTERIMAGE 108,10,SS_CENTERIMAGE
LISTBOX IDC_LIST1,15,25,111,70,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | LISTBOX IDC_LIST1,15,25,111,70,LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
WS_TABSTOP WS_TABSTOP
PUSHBUTTON "Add..",IDC_ADD,131,25,40,14 PUSHBUTTON "Add..",IDC_ADD,131,25,40,14
PUSHBUTTON "Remove",IDC_REMOVE,131,39,40,14 PUSHBUTTON "Remove",IDC_REMOVE,131,39,40,14
PUSHBUTTON "Up",IDC_UP,131,54,40,14 PUSHBUTTON "Up",IDC_UP,131,54,40,14
PUSHBUTTON "Down",IDC_DOWN,131,68,40,14 PUSHBUTTON "Down",IDC_DOWN,131,68,40,14
GROUPBOX "LOD Properties",IDC_STATIC,5,105,172,50 GROUPBOX "LOD Properties",IDC_STATIC,5,105,172,50
CONTROL "Blend in",IDC_BLEND_IN,"Button",BS_AUTO3STATE | CONTROL "Blend in",IDC_BLEND_IN,"Button",BS_AUTO3STATE |
WS_TABSTOP,15,121,40,10 WS_TABSTOP,15,121,40,10
CONTROL "Blend out",IDC_BLEND_OUT,"Button",BS_AUTO3STATE | CONTROL "Blend out",IDC_BLEND_OUT,"Button",BS_AUTO3STATE |
WS_TABSTOP,15,130,45,10 WS_TABSTOP,15,130,45,10
CONTROL "Coarse mesh",IDC_COARSE_MESH,"Button",BS_AUTO3STATE | CONTROL "Coarse mesh",IDC_COARSE_MESH,"Button",BS_AUTO3STATE |
WS_TABSTOP,15,140,55,10 WS_TABSTOP,15,140,55,10
CONTROL "Dynamic mesh",IDC_DYNAMIC_MESH,"Button",BS_AUTO3STATE | CONTROL "Dynamic mesh",IDC_DYNAMIC_MESH,"Button",BS_AUTO3STATE |
WS_TABSTOP,80,120,60,10 WS_TABSTOP,80,120,60,10
LTEXT "Dist Max:",IDC_STATIC,5,160,45,13,SS_CENTERIMAGE LTEXT "Dist Max:",IDC_STATIC,5,160,45,13,SS_CENTERIMAGE
EDITTEXT IDC_DIST_MAX,51,160,45,12,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_DIST_MAX,51,160,45,12,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Blend length:",IDC_STATIC,80,135,45,13,SS_CENTERIMAGE LTEXT "Blend length:",IDC_STATIC,80,135,45,13,SS_CENTERIMAGE
EDITTEXT IDC_BLEND_LENGTH,125,135,45,12,ES_AUTOHSCROLL | EDITTEXT IDC_BLEND_LENGTH,125,135,45,12,ES_AUTOHSCROLL |
ES_NUMBER ES_NUMBER
GROUPBOX "MRM properties",IDC_STATIC,185,5,172,95 GROUPBOX "MRM properties",IDC_STATIC,185,5,172,95
CONTROL "Active MRM",IDC_ACTIVE_MRM,"Button",BS_AUTO3STATE | CONTROL "Active MRM",IDC_ACTIVE_MRM,"Button",BS_AUTO3STATE |
WS_TABSTOP,195,20,60,10 WS_TABSTOP,195,20,60,10
LTEXT "Skin reduction",IDC_STATIC,195,35,50,10,SS_CENTERIMAGE LTEXT "Skin reduction",IDC_STATIC,195,35,50,10,SS_CENTERIMAGE
CONTROL "Min",IDC_SKIN_REDUCTION_MIN,"Button",BS_AUTORADIOBUTTON, CONTROL "Min",IDC_SKIN_REDUCTION_MIN,"Button",BS_AUTORADIOBUTTON,
@ -170,12 +170,12 @@ BEGIN
LTEXT "Dist middle:",IDC_STATIC,260,65,45,13,SS_CENTERIMAGE LTEXT "Dist middle:",IDC_STATIC,260,65,45,13,SS_CENTERIMAGE
EDITTEXT IDC_DIST_MIDDLE,305,65,45,12,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_DIST_MIDDLE,305,65,45,12,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Dist coarsest:",IDC_STATIC,260,80,45,13,SS_CENTERIMAGE LTEXT "Dist coarsest:",IDC_STATIC,260,80,45,13,SS_CENTERIMAGE
EDITTEXT IDC_DIST_COARSEST,305,80,45,12,ES_AUTOHSCROLL | EDITTEXT IDC_DIST_COARSEST,305,80,45,12,ES_AUTOHSCROLL |
ES_NUMBER ES_NUMBER
GROUPBOX "LOD Bones",IDC_STATIC,185,105,170,45 GROUPBOX "LOD Bones",IDC_STATIC,185,105,170,45
LTEXT "Disable Distance (0 means always activated) :", LTEXT "Disable Distance (0 means always activated) :",
IDC_STATIC,190,120,160,10 IDC_STATIC,190,120,160,10
EDITTEXT IDC_BONE_LOD_DISTANCE,190,130,45,12,ES_AUTOHSCROLL | EDITTEXT IDC_BONE_LOD_DISTANCE,190,130,45,12,ES_AUTOHSCROLL |
ES_NUMBER ES_NUMBER
CONTROL "Export as Lod character (.clod)",IDC_EXPORT_CLOD,"Button", CONTROL "Export as Lod character (.clod)",IDC_EXPORT_CLOD,"Button",
BS_AUTO3STATE | WS_TABSTOP,190,160,150,10 BS_AUTO3STATE | WS_TABSTOP,190,160,150,10
@ -197,21 +197,21 @@ BEGIN
BS_AUTO3STATE | WS_TABSTOP,27,92,71,10 BS_AUTO3STATE | WS_TABSTOP,27,92,71,10
CONTROL "Dynamic Portal",IDC_DYNAMIC_PORTAL,"Button", CONTROL "Dynamic Portal",IDC_DYNAMIC_PORTAL,"Button",
BS_AUTO3STATE | WS_TABSTOP,27,44,63,10 BS_AUTO3STATE | WS_TABSTOP,27,44,63,10
CONTROL "Clusterize",IDC_CLUSTERIZE,"Button",BS_AUTO3STATE | CONTROL "Clusterize",IDC_CLUSTERIZE,"Button",BS_AUTO3STATE |
WS_TABSTOP,93,5,46,10 WS_TABSTOP,93,5,46,10
COMBOBOX IDC_OCC_MODEL,209,30,123,134,CBS_DROPDOWNLIST | COMBOBOX IDC_OCC_MODEL,209,30,123,134,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP WS_VSCROLL | WS_TABSTOP
RTEXT "Occlusion model",IDC_STATIC,134,30,68,12,SS_CENTERIMAGE RTEXT "Occlusion model",IDC_STATIC,134,30,68,12,SS_CENTERIMAGE
COMBOBOX IDC_OPEN_OCC_MODEL,209,44,123,116,CBS_DROPDOWNLIST | COMBOBOX IDC_OPEN_OCC_MODEL,209,44,123,116,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP WS_VSCROLL | WS_TABSTOP
RTEXT "Open portal occlusion model",IDC_STATIC,112,44,89,10, RTEXT "Open portal occlusion model",IDC_STATIC,112,44,89,10,
SS_CENTERIMAGE SS_CENTERIMAGE
GROUPBOX "Audio properties",IDC_STATIC,105,19,237,141 GROUPBOX "Audio properties",IDC_STATIC,105,19,237,141
RTEXT "Sound group",IDC_STATIC,111,86,90,14 RTEXT "Sound group",IDC_STATIC,111,86,90,14
COMBOBOX IDC_ENV_FX,209,106,123,87,CBS_DROPDOWNLIST | WS_VSCROLL | COMBOBOX IDC_ENV_FX,209,106,123,87,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP WS_TABSTOP
RTEXT "Environment FX",IDC_STATIC,112,106,89,10,SS_CENTERIMAGE RTEXT "Environment FX",IDC_STATIC,112,106,89,10,SS_CENTERIMAGE
COMBOBOX IDC_SOUND_GROUP,209,86,123,101,CBS_DROPDOWN | CBS_SORT | COMBOBOX IDC_SOUND_GROUP,209,86,123,101,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP WS_VSCROLL | WS_TABSTOP
CONTROL "Father audible",IDC_FATHER_AUDIBLE,"Button", CONTROL "Father audible",IDC_FATHER_AUDIBLE,"Button",
BS_AUTO3STATE | WS_TABSTOP,210,135,61,10 BS_AUTO3STATE | WS_TABSTOP,210,135,61,10
@ -240,17 +240,17 @@ BEGIN
GROUPBOX "Properties for objects without lightmaps",IDC_STATIC,5, GROUPBOX "Properties for objects without lightmaps",IDC_STATIC,5,
80,150,60 80,150,60
CONTROL "If checked, use per vertex lighting attenuation else use global lighting attenuation for the object. Doesn't work with per pixel lighting shader.", CONTROL "If checked, use per vertex lighting attenuation else use global lighting attenuation for the object. Doesn't work with per pixel lighting shader.",
IDC_USE_LIGHT_LOCAL_ATTENUATION,"Button",BS_AUTO3STATE | IDC_USE_LIGHT_LOCAL_ATTENUATION,"Button",BS_AUTO3STATE |
BS_TOP | BS_MULTILINE | WS_TABSTOP,15,95,120,41 BS_TOP | BS_MULTILINE | WS_TABSTOP,15,95,120,41
GROUPBOX "Properties for lights",IDC_STATIC,160,5,185,200 GROUPBOX "Properties for lights",IDC_STATIC,160,5,185,200
CONTROL "RealTime Light. If set, this light will light scene objects.", CONTROL "RealTime Light. If set, this light will light scene objects.",
IDC_EXPORT_REALTIME_LIGHT,"Button",BS_AUTO3STATE | IDC_EXPORT_REALTIME_LIGHT,"Button",BS_AUTO3STATE |
BS_TOP | BS_MULTILINE | WS_TABSTOP,170,15,165,20 BS_TOP | BS_MULTILINE | WS_TABSTOP,170,15,165,20
CONTROL "RealTime Sun Light. If set, this DIRECTIONNAL light will be used as sun light to light scene objects.", CONTROL "RealTime Sun Light. If set, this DIRECTIONNAL light will be used as sun light to light scene objects.",
IDC_EXPORT_AS_SUN_LIGHT,"Button",BS_AUTO3STATE | BS_TOP | IDC_EXPORT_AS_SUN_LIGHT,"Button",BS_AUTO3STATE | BS_TOP |
BS_MULTILINE | WS_TABSTOP,170,34,170,25 BS_MULTILINE | WS_TABSTOP,170,34,170,25
CONTROL "LightMap Light. If set, this light will be used to compute the lightmaps of the project objects.", CONTROL "LightMap Light. If set, this light will be used to compute the lightmaps of the project objects.",
IDC_EXPORT_LIGHTMAP_LIGHT,"Button",BS_AUTO3STATE | IDC_EXPORT_LIGHTMAP_LIGHT,"Button",BS_AUTO3STATE |
BS_TOP | BS_MULTILINE | WS_TABSTOP,170,60,170,20 BS_TOP | BS_MULTILINE | WS_TABSTOP,170,60,170,20
LTEXT "LightMap Animation Name. This is the name of the animation used to flick the light color.", LTEXT "LightMap Animation Name. This is the name of the animation used to flick the light color.",
IDC_STATIC,170,135,170,20 IDC_STATIC,170,135,170,20
@ -284,7 +284,7 @@ BEGIN
CONTROL "Floating Object",IDC_FLOATING_OBJECT,"Button", CONTROL "Floating Object",IDC_FLOATING_OBJECT,"Button",
BS_AUTO3STATE | WS_TABSTOP,5,5,65,12 BS_AUTO3STATE | WS_TABSTOP,5,5,65,12
GROUPBOX "Ligoscape",IDC_STATIC,5,100,120,45 GROUPBOX "Ligoscape",IDC_STATIC,5,100,120,45
CONTROL "Symmetry",IDC_LIGO_SYMMETRY,"Button",BS_AUTO3STATE | CONTROL "Symmetry",IDC_LIGO_SYMMETRY,"Button",BS_AUTO3STATE |
WS_TABSTOP,11,110,44,12 WS_TABSTOP,11,110,44,12
LTEXT "Rotation:",IDC_STATIC,11,125,30,13,SS_CENTERIMAGE LTEXT "Rotation:",IDC_STATIC,11,125,30,13,SS_CENTERIMAGE
EDITTEXT IDC_LIGO_ROTATE,60,126,57,14,ES_AUTOHSCROLL EDITTEXT IDC_LIGO_ROTATE,60,126,57,14,ES_AUTOHSCROLL
@ -313,7 +313,7 @@ BEGIN
EDITTEXT IDC_EDIT_INTERFACE_THRESHOLD,221,137,110,14, EDITTEXT IDC_EDIT_INTERFACE_THRESHOLD,221,137,110,14,
ES_AUTOHSCROLL ES_AUTOHSCROLL
GROUPBOX "Bone Scale",IDC_STATIC,5,150,120,60 GROUPBOX "Bone Scale",IDC_STATIC,5,150,120,60
CONTROL "Enable",IDC_EXPORT_BONE_SCALE,"Button",BS_AUTO3STATE | CONTROL "Enable",IDC_EXPORT_BONE_SCALE,"Button",BS_AUTO3STATE |
WS_TABSTOP,10,160,38,10 WS_TABSTOP,10,160,38,10
LTEXT "Bone Reference Name extension:",IDC_STATIC,10,175,110, LTEXT "Bone Reference Name extension:",IDC_STATIC,10,175,110,
13,SS_CENTERIMAGE 13,SS_CENTERIMAGE
@ -332,7 +332,7 @@ BEGIN
EDITTEXT IDC_REMANENCE_SAMPLING_PERIOD,266,190,20,14, EDITTEXT IDC_REMANENCE_SAMPLING_PERIOD,266,190,20,14,
ES_AUTOHSCROLL ES_AUTOHSCROLL
CONTROL "Shift texture at start of animation", CONTROL "Shift texture at start of animation",
IDC_REMANENCE_SHIFTING_TEXTURE,"Button",BS_AUTOCHECKBOX | IDC_REMANENCE_SHIFTING_TEXTURE,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,207,178,116,9 WS_TABSTOP,207,178,116,9
LTEXT "Rollup ratio :",IDC_ROLLUP_RATIO,290,192,41,8 LTEXT "Rollup ratio :",IDC_ROLLUP_RATIO,290,192,41,8
EDITTEXT IDC_REMANENCE_ROLLUP_RATIO,332,190,16,14,ES_AUTOHSCROLL EDITTEXT IDC_REMANENCE_ROLLUP_RATIO,332,190,16,14,ES_AUTOHSCROLL
@ -342,10 +342,10 @@ IDD_VEGETABLE DIALOG DISCARDABLE 0, 0, 360, 200
STYLE WS_CHILD STYLE WS_CHILD
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
CONTROL "Vegetable",IDC_VEGETABLE,"Button",BS_AUTO3STATE | CONTROL "Vegetable",IDC_VEGETABLE,"Button",BS_AUTO3STATE |
WS_TABSTOP,5,5,50,12 WS_TABSTOP,5,5,50,12
CONTROL "Alpha Blend ON (double sided)", CONTROL "Alpha Blend ON (double sided)",
IDC_VEGETABLE_ALPHA_BLEND_ON,"Button",BS_AUTORADIOBUTTON | IDC_VEGETABLE_ALPHA_BLEND_ON,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,21,30,112,15 WS_GROUP,21,30,112,15
CONTROL "Alpha Blend OFF",IDC_VEGETABLE_ALPHA_BLEND_OFF,"Button", CONTROL "Alpha Blend OFF",IDC_VEGETABLE_ALPHA_BLEND_OFF,"Button",
BS_AUTORADIOBUTTON,20,74,85,15 BS_AUTORADIOBUTTON,20,74,85,15
@ -394,7 +394,7 @@ BEGIN
LTEXT "Name of the instance group where this instance will be inserted. Enter ... to erase all", LTEXT "Name of the instance group where this instance will be inserted. Enter ... to erase all",
IDC_STATIC,195,45,160,15 IDC_STATIC,195,45,160,15
CONTROL "Don't add to scene. If checked, this instance will not be added in the scene.", CONTROL "Don't add to scene. If checked, this instance will not be added in the scene.",
IDC_DONT_ADD_TO_SCENE,"Button",BS_AUTO3STATE | IDC_DONT_ADD_TO_SCENE,"Button",BS_AUTO3STATE |
WS_TABSTOP,5,71,255,10 WS_TABSTOP,5,71,255,10
CONTROL "Don't export the shape. If checked, no shape file will be exported from this object.", CONTROL "Don't export the shape. If checked, no shape file will be exported from this object.",
IDC_DONT_EXPORT,"Button",BS_AUTO3STATE | WS_TABSTOP,5,86, IDC_DONT_EXPORT,"Button",BS_AUTO3STATE | WS_TABSTOP,5,86,
@ -427,15 +427,15 @@ BEGIN
CONTROL "Export note track",IDC_EXPORT_NOTE_TRACK,"Button", CONTROL "Export note track",IDC_EXPORT_NOTE_TRACK,"Button",
BS_AUTO3STATE | WS_TABSTOP,5,50,75,10 BS_AUTO3STATE | WS_TABSTOP,5,50,75,10
CONTROL "Export animated materials", CONTROL "Export animated materials",
IDC_EXPORT_ANIMATED_MATERIALS,"Button",BS_AUTO3STATE | IDC_EXPORT_ANIMATED_MATERIALS,"Button",BS_AUTO3STATE |
WS_TABSTOP,5,35,98,10 WS_TABSTOP,5,35,98,10
CONTROL "Export node animation",IDC_EXPORT_NODE_ANIMATION,"Button", CONTROL "Export node animation",IDC_EXPORT_NODE_ANIMATION,"Button",
BS_AUTO3STATE | WS_TABSTOP,5,5,98,10 BS_AUTO3STATE | WS_TABSTOP,5,5,98,10
CONTROL "Prefixe tracks with node name (Instance name or, if emtpy, node name)", CONTROL "Prefixe tracks with node name (Instance name or, if emtpy, node name)",
IDC_EXPORT_ANIMATION_PREFIXE_NAME,"Button",BS_AUTO3STATE | IDC_EXPORT_ANIMATION_PREFIXE_NAME,"Button",BS_AUTO3STATE |
BS_MULTILINE | WS_TABSTOP,5,20,245,10 BS_MULTILINE | WS_TABSTOP,5,20,245,10
CONTROL "Allow automatic animation. If the shape is ""obj.shape"", then it will bind ""obj.anim"" automatically.", CONTROL "Allow automatic animation. If the shape is ""obj.shape"", then it will bind ""obj.anim"" automatically.",
IDC_AUTOMATIC_ANIM,"Button",BS_AUTO3STATE | BS_MULTILINE | IDC_AUTOMATIC_ANIM,"Button",BS_AUTO3STATE | BS_MULTILINE |
WS_TABSTOP,5,65,315,10 WS_TABSTOP,5,65,315,10
CONTROL "Export SSS track (Skeleton Spawn Script)", CONTROL "Export SSS track (Skeleton Spawn Script)",
IDC_EXPORT_SSS_TRACK,"Button",BS_AUTO3STATE | WS_TABSTOP, IDC_EXPORT_SSS_TRACK,"Button",BS_AUTO3STATE | WS_TABSTOP,
@ -449,7 +449,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO DISCARDABLE
BEGIN BEGIN
IDD_PANEL, DIALOG IDD_PANEL, DIALOG
BEGIN BEGIN
@ -548,18 +548,18 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE DISCARDABLE 1 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE DISCARDABLE 2 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"#include ""afxres.h""\r\n" "#include ""afxres.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE DISCARDABLE 3 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -575,8 +575,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 0, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 0, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -593,14 +593,14 @@ BEGIN
BEGIN BEGIN
VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "CompanyName", "Ryzom Core\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileVersion", "0.11.0\0" VALUE "FileVersion", "0.11.3\0"
VALUE "InternalName", "CNelExport\0" VALUE "InternalName", "CNelExport\0"
VALUE "LegalCopyright", "\0" VALUE "LegalCopyright", "\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "CNelExport.dlu\0" VALUE "OriginalFilename", "CNelExport.dlu\0"
VALUE "PrivateBuild", "\0" VALUE "PrivateBuild", "\0"
VALUE "ProductName", "Ryzom Core\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "0.11.0\0" VALUE "ProductVersion", "0.11.3\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
END END
END END
@ -618,7 +618,7 @@ END
// String Table // String Table
// //
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_LIBDESCRIPTION "Geometry Export/View" IDS_LIBDESCRIPTION "Geometry Export/View"
IDS_CATEGORY "Nel Tools" IDS_CATEGORY "Nel Tools"
@ -673,9 +673,9 @@ BEGIN
BS_AUTOCHECKBOX | WS_TABSTOP,10,5,105,10 BS_AUTOCHECKBOX | WS_TABSTOP,10,5,105,10
LTEXT "Frequency Scale :",IDC_STATIC,120,5,60,10 LTEXT "Frequency Scale :",IDC_STATIC,120,5,60,10
LTEXT "Distance Scale :",IDC_STATIC,245,5,60,10 LTEXT "Distance Scale :",IDC_STATIC,245,5,60,10
EDITTEXT IDC_EDIT_VPWT_FREQ_SCALE,190,5,35,12,ES_MULTILINE | EDITTEXT IDC_EDIT_VPWT_FREQ_SCALE,190,5,35,12,ES_MULTILINE |
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
EDITTEXT IDC_EDIT_VPWT_DIST_SCALE,305,5,35,12,ES_MULTILINE | EDITTEXT IDC_EDIT_VPWT_DIST_SCALE,305,5,35,12,ES_MULTILINE |
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
GROUPBOX "Level 0 (eg: Tree Trunk)",IDC_STATIC,0,20,355,50 GROUPBOX "Level 0 (eg: Tree Trunk)",IDC_STATIC,0,20,355,50
GROUPBOX "Level 1 (eg: branch)",IDC_STATIC,0,75,355,55 GROUPBOX "Level 1 (eg: branch)",IDC_STATIC,0,75,355,55
@ -790,7 +790,7 @@ FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,160,240,50,14 DEFPUSHBUTTON "OK",IDOK,160,240,50,14
PUSHBUTTON "Cancel",IDCANCEL,160,265,50,14 PUSHBUTTON "Cancel",IDCANCEL,160,265,50,14
LISTBOX IDC_LMC_COPY_LIST,5,20,120,260,LBS_SORT | LISTBOX IDC_LMC_COPY_LIST,5,20,120,260,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LTEXT "List of objects in LMC mode.",IDC_STATIC,5,10,120,10 LTEXT "List of objects in LMC mode.",IDC_STATIC,5,10,120,10
CONTROL "Custom1",IDC_LMC_COPY_ALWAYS_DIFFUSE,"ColorSwatch", CONTROL "Custom1",IDC_LMC_COPY_ALWAYS_DIFFUSE,"ColorSwatch",
@ -829,7 +829,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO DISCARDABLE
BEGIN BEGIN
IDD_NODE_PROPERTIES_PANEL, DIALOG IDD_NODE_PROPERTIES_PANEL, DIALOG
BEGIN BEGIN

View file

@ -40,7 +40,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO GUIDELINES DESIGNINFO
BEGIN BEGIN
IDD_PANEL, DIALOG IDD_PANEL, DIALOG
BEGIN BEGIN
@ -59,18 +59,18 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE 1 TEXTINCLUDE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE 2 TEXTINCLUDE
BEGIN BEGIN
"#include ""afxres.h""\r\n" "#include ""afxres.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE 3 TEXTINCLUDE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -85,8 +85,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 0, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 0, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -103,12 +103,12 @@ BEGIN
BEGIN BEGIN
VALUE "Comments", "http://www.ryzomcore.org/" VALUE "Comments", "http://www.ryzomcore.org/"
VALUE "FileDescription", "PatchMesh to RykolPatchMesh" VALUE "FileDescription", "PatchMesh to RykolPatchMesh"
VALUE "FileVersion", "0.11.0" VALUE "FileVersion", "0.11.3"
VALUE "InternalName", "PatchMesh to RykolPatchMesh" VALUE "InternalName", "PatchMesh to RykolPatchMesh"
VALUE "LegalCopyright", "Copyright, 2000 Nevrax Ltd." VALUE "LegalCopyright", "Copyright, 2000 Nevrax Ltd."
VALUE "OriginalFilename", "nel_convert_patch.dlm" VALUE "OriginalFilename", "nel_convert_patch.dlm"
VALUE "ProductName", "NeL Patch Converter" VALUE "ProductName", "NeL Patch Converter"
VALUE "ProductVersion", "0.11.0" VALUE "ProductVersion", "0.11.3"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
@ -123,7 +123,7 @@ END
// String Table // String Table
// //
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_LIBDESCRIPTION "Rykol Patchmesh Converter" IDS_LIBDESCRIPTION "Rykol Patchmesh Converter"
IDS_CATEGORY "Rykol Tools" IDS_CATEGORY "Rykol Tools"

View file

@ -345,12 +345,12 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE 1 TEXTINCLUDE
BEGIN BEGIN
"modsres.h\0" "modsres.h\0"
END END
2 TEXTINCLUDE 2 TEXTINCLUDE
BEGIN BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n" "#include ""windows.h""\r\n"
@ -359,7 +359,7 @@ BEGIN
"\0" "\0"
END END
3 TEXTINCLUDE 3 TEXTINCLUDE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -439,7 +439,7 @@ IDB_PATCHSELMASK BITMAP "patselm.bmp"
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO GUIDELINES DESIGNINFO
BEGIN BEGIN
IDD_PASTE_NAMEDSET, DIALOG IDD_PASTE_NAMEDSET, DIALOG
BEGIN BEGIN
@ -514,8 +514,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 2, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 2, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -533,13 +533,13 @@ BEGIN
VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "CompanyName", "Ryzom Core" VALUE "CompanyName", "Ryzom Core"
VALUE "FileDescription", "NeL Patch Edit" VALUE "FileDescription", "NeL Patch Edit"
VALUE "FileVersion", "0.11.2" VALUE "FileVersion", "0.11.3"
VALUE "InternalName", "neleditpatch" VALUE "InternalName", "neleditpatch"
VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc." VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc."
VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF." VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF."
VALUE "OriginalFilename", "neleditpatch.dlm" VALUE "OriginalFilename", "neleditpatch.dlm"
VALUE "ProductName", "Ryzom Core" VALUE "ProductName", "Ryzom Core"
VALUE "ProductVersion", "0.11.2" VALUE "ProductVersion", "0.11.3"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
@ -565,7 +565,7 @@ IDI_ICON3 ICON "icon3.ico"
// String Table // String Table
// //
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NORMALMOD "NormalMod" IDS_RB_NORMALMOD "NormalMod"
IDS_RB_SKEWMOD "SkewMod" IDS_RB_SKEWMOD "SkewMod"
@ -585,7 +585,7 @@ BEGIN
IDS_RB_VOLSELECT_CLASS "Vol. Select" IDS_RB_VOLSELECT_CLASS "Vol. Select"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_EDITMESH_CLASS "Edit Mesh" IDS_RB_EDITMESH_CLASS "Edit Mesh"
IDS_RB_PARAMETERS "Parameters" IDS_RB_PARAMETERS "Parameters"
@ -594,7 +594,7 @@ BEGIN
IDS_RB_AMOUNT "Amount" IDS_RB_AMOUNT "Amount"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_BEND2 "Bend" IDS_RB_BEND2 "Bend"
IDS_RB_FROM "Lower Limit" IDS_RB_FROM "Lower Limit"
@ -614,7 +614,7 @@ BEGIN
IDS_RB_DISPLACEMOD "DisplaceMod" IDS_RB_DISPLACEMOD "DisplaceMod"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NODEXFORM "Linked XForm" IDS_RB_NODEXFORM "Linked XForm"
IDS_RB_NODEXFORM_CLASS "Linked XForm" IDS_RB_NODEXFORM_CLASS "Linked XForm"
@ -630,7 +630,7 @@ BEGIN
IDS_RB_SOT "Supports Objects of Type" IDS_RB_SOT "Supports Objects of Type"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_BIASL2 "Bias L2" IDS_RB_BIASL2 "Bias L2"
IDS_RB_EDITMESHMOD "EditMeshMod" IDS_RB_EDITMESHMOD "EditMeshMod"
@ -650,7 +650,7 @@ BEGIN
IDS_RB_SMOOTHMOD "SmoothMod" IDS_RB_SMOOTHMOD "SmoothMod"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_EXTRUDE "Extrude" IDS_RB_EXTRUDE "Extrude"
IDS_RB_TAPER "Taper" IDS_RB_TAPER "Taper"
@ -663,7 +663,7 @@ BEGIN
IDS_RB_APPARATUS "Gizmo" IDS_RB_APPARATUS "Gizmo"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_FREQUENCY "Frequency" IDS_RB_FREQUENCY "Frequency"
IDS_RB_MAPMOD "MapMod" IDS_RB_MAPMOD "MapMod"
@ -683,7 +683,7 @@ BEGIN
IDS_RB_BIASL1 "Bias L1" IDS_RB_BIASL1 "Bias L1"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_AMOUNT2 "Amount" IDS_RB_AMOUNT2 "Amount"
IDS_RB_CURVITURE "Curvature" IDS_RB_CURVITURE "Curvature"
@ -697,13 +697,13 @@ BEGIN
IDS_DB_EXTRUDE "Extrude" IDS_DB_EXTRUDE "Extrude"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_RIPPLE "Ripple" IDS_RB_RIPPLE "Ripple"
IDS_RB_RIPPLE_BINDING "Ripple Binding" IDS_RB_RIPPLE_BINDING "Ripple Binding"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_DELETEVERT "Delete Vertex" IDS_RB_DELETEVERT "Delete Vertex"
IDS_RB_DELETEFACE "Delete Face" IDS_RB_DELETEFACE "Delete Face"
@ -720,7 +720,7 @@ BEGIN
IDS_RB_EDGEDIVIDE "Edge Divide" IDS_RB_EDGEDIVIDE "Edge Divide"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_EDGETURN "Edge Turn" IDS_RB_EDGETURN "Edge Turn"
IDS_RB_DELETEEDGE "Delete Edge" IDS_RB_DELETEEDGE "Delete Edge"
@ -732,36 +732,36 @@ BEGIN
IDS_PW_LATTICE "Lattice Map" IDS_PW_LATTICE "Lattice Map"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_DEFDEFORMATIONS "MAX STANDARD" IDS_RB_DEFDEFORMATIONS "MAX STANDARD"
IDS_RB_DEFEDIT "MAX EDIT" IDS_RB_DEFEDIT "MAX EDIT"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_DEFLECTOR_CLASS "Deflector" IDS_RB_DEFLECTOR_CLASS "Deflector"
IDS_RB_HIDEVERT "Hide Vertices" IDS_RB_HIDEVERT "Hide Vertices"
IDS_RB_DEFSURFACE "MAX SURFACE" IDS_RB_DEFSURFACE "MAX SURFACE"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NOISE "Noise" IDS_RB_NOISE "Noise"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_ROTATION2 "Rotation" IDS_RB_ROTATION2 "Rotation"
IDS_RB_TWIST "Twist" IDS_RB_TWIST "Twist"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_BENDMOD "BendMod" IDS_RB_BENDMOD "BendMod"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_DISPLACEBINDING "Displace Binding" IDS_RB_DISPLACEBINDING "Displace Binding"
IDS_RB_SELECTDISPIMAGE "Select Displacement Image" IDS_RB_SELECTDISPIMAGE "Select Displacement Image"
@ -781,7 +781,7 @@ BEGIN
IDS_RB_TURBULENCE "Turbulence" IDS_RB_TURBULENCE "Turbulence"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_SKEW_CLASS "Skew" IDS_RB_SKEW_CLASS "Skew"
IDS_RB_MATERIAL3_CLASS "Material" IDS_RB_MATERIAL3_CLASS "Material"
@ -800,7 +800,7 @@ BEGIN
IDS_RB_WAVE_CLASS "Wave" IDS_RB_WAVE_CLASS "Wave"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_STRENGTH2 "Strength" IDS_RB_STRENGTH2 "Strength"
IDS_DS_MOVE "Move" IDS_DS_MOVE "Move"
@ -809,7 +809,7 @@ BEGIN
IDS_RB_ELEMENTSEL "Element" IDS_RB_ELEMENTSEL "Element"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NOVERTSTOWELD "No vertices within weld threshold." IDS_RB_NOVERTSTOWELD "No vertices within weld threshold."
IDS_RB_CHAOS "Chaos" IDS_RB_CHAOS "Chaos"
@ -819,24 +819,24 @@ BEGIN
IDS_RB_DUPFACEWARNING "This face already exists." IDS_RB_DUPFACEWARNING "This face already exists."
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NONE "None" IDS_RB_NONE "None"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_SCALE "Scale" IDS_RB_SCALE "Scale"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_DS_MOVE2 "Move" IDS_DS_MOVE2 "Move"
IDS_DS_SELECT "Select" IDS_DS_SELECT "Select"
IDS_DS_CREATE "Create" IDS_DS_CREATE "Create"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_VERTDELETE "Delete Vertex" IDS_TH_VERTDELETE "Delete Vertex"
IDS_TH_BEZIERCORNER "Bezier Corner" IDS_TH_BEZIERCORNER "Bezier Corner"
@ -848,7 +848,7 @@ BEGIN
IDS_TH_NOPATCHESSEL "No patches selected" IDS_TH_NOPATCHESSEL "No patches selected"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_EDGESUBDIVIDE "Edge Subdivide" IDS_TH_EDGESUBDIVIDE "Edge Subdivide"
IDS_TH_PATCHSUBDIVIDE "Patch Subdivide" IDS_TH_PATCHSUBDIVIDE "Patch Subdivide"
@ -863,16 +863,16 @@ BEGIN
IDS_TH_CONNECT_COINCIDENT "Weld coincident endpoints?" IDS_TH_CONNECT_COINCIDENT "Weld coincident endpoints?"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_BOOLWELDFAILED "ERROR: Final boolean weld stage failed" IDS_TH_BOOLWELDFAILED "ERROR: Final boolean weld stage failed"
IDS_TH_COINCIDENTVERTEX "Cannot perform boolean because splines have coincident vertices" IDS_TH_COINCIDENTVERTEX "Cannot perform boolean because splines have coincident vertices"
IDS_TH_SPLINESMUSTOVERLAP IDS_TH_SPLINESMUSTOVERLAP
"Cannot perform boolean because splines must overlap" "Cannot perform boolean because splines must overlap"
IDS_TH_SELECTCLOSEDSPLINE "Please select a closed spline" IDS_TH_SELECTCLOSEDSPLINE "Please select a closed spline"
IDS_TH_SPLINESELFINTERSECTS "Spline is invalid: Self-intersects" IDS_TH_SPLINESELFINTERSECTS "Spline is invalid: Self-intersects"
IDS_TH_ATTACH "Attach" IDS_TH_ATTACH "Attach"
IDS_TH_CANHAVEONLYONESHAPE IDS_TH_CANHAVEONLYONESHAPE
"Can only have one shape in modifier for this operation" "Can only have one shape in modifier for this operation"
IDS_TH_NOVERTSSEL "No vertices selected" IDS_TH_NOVERTSSEL "No vertices selected"
IDS_TH_VERTCHANGE "Vertex Change" IDS_TH_VERTCHANGE "Vertex Change"
@ -885,7 +885,7 @@ BEGIN
IDS_TH_LINE "Line" IDS_TH_LINE "Line"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_MAKEFIRST "Make First" IDS_TH_MAKEFIRST "Make First"
IDS_TH_EDITEDGE "Edit Edge" IDS_TH_EDITEDGE "Edit Edge"
@ -896,7 +896,7 @@ BEGIN
IDS_TH_PATCHADD "Patch Add" IDS_TH_PATCHADD "Patch Add"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_EDITSPLINE "Edit Spline" IDS_TH_EDITSPLINE "Edit Spline"
IDS_TH_EDITSEGMENT "Edit Segment" IDS_TH_EDITSEGMENT "Edit Segment"
@ -907,7 +907,7 @@ BEGIN
IDS_TH_EDITOBJECT "Edit Object" IDS_TH_EDITOBJECT "Edit Object"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_DETACHSPLINE "Detach Spline" IDS_TH_DETACHSPLINE "Detach Spline"
IDS_TH_OUTLINE "Outline Spline" IDS_TH_OUTLINE "Outline Spline"
@ -927,9 +927,9 @@ BEGIN
IDS_TH_INTERSECTION "Intersection" IDS_TH_INTERSECTION "Intersection"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_CANHAVEONLYONEPATCH IDS_TH_CANHAVEONLYONEPATCH
"Can only have one patch object in modifier for this operation" "Can only have one patch object in modifier for this operation"
IDS_TH_DETACHPATCH "Detach Patch" IDS_TH_DETACHPATCH "Detach Patch"
IDS_TH_COPY_SPLINE "Copy Spline" IDS_TH_COPY_SPLINE "Copy Spline"
@ -937,7 +937,7 @@ BEGIN
IDS_TH_SPLINECHANGE "Spline Change" IDS_TH_SPLINECHANGE "Spline Change"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_EDITPATCH_CLASS "NeL Edit" IDS_TH_EDITPATCH_CLASS "NeL Edit"
IDS_TH_EDITSPLINE_CLASS "Edit Spline" IDS_TH_EDITSPLINE_CLASS "Edit Spline"
@ -957,7 +957,7 @@ BEGIN
IDS_TH_NOSEGSSEL "No segments selected" IDS_TH_NOSEGSSEL "No segments selected"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_DEGREES "Degrees" IDS_TH_DEGREES "Degrees"
IDS_TH_AXIS "Axis" IDS_TH_AXIS "Axis"
@ -968,12 +968,12 @@ BEGIN
IDS_RB_STARTPOINT "Start Point" IDS_RB_STARTPOINT "Start Point"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_MIRRORSPLINE "Mirror Spline" IDS_TH_MIRRORSPLINE "Mirror Spline"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_ENDPOINT "End Point" IDS_RB_ENDPOINT "End Point"
IDS_RB_AFRPOINTS "Points" IDS_RB_AFRPOINTS "Points"
@ -993,7 +993,7 @@ BEGIN
IDS_RB_VOFFSET "V Offset" IDS_RB_VOFFSET "V Offset"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_WOFFSET "W Offset" IDS_RB_WOFFSET "W Offset"
IDS_RB_MAXEDGE1 "Max Edge Length 1" IDS_RB_MAXEDGE1 "Max Edge Length 1"
@ -1013,14 +1013,14 @@ BEGIN
IDS_RB_SHOULDRESET "Do you also want to reset the Unwrap UVW modifier\nto inherit the mapping from the new channel?\n\nChanges made within the UVW modifier will be lost." IDS_RB_SHOULDRESET "Do you also want to reset the Unwrap UVW modifier\nto inherit the mapping from the new channel?\n\nChanges made within the UVW modifier will be lost."
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_NUMVERTSELP "%d Vertices Selected" IDS_RB_NUMVERTSELP "%d Vertices Selected"
IDS_RB_NUMFACESELP "%d Faces Selected" IDS_RB_NUMFACESELP "%d Faces Selected"
IDS_RB_NUMEDGESELP "%d Edges Selected" IDS_RB_NUMEDGESELP "%d Edges Selected"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_RESETUNWRAPUVWS "Are you sure you want to reset?\n\nAll changes made within the Unwrap UVW modifier will be lost." IDS_RB_RESETUNWRAPUVWS "Are you sure you want to reset?\n\nAll changes made within the Unwrap UVW modifier will be lost."
IDS_RB_LENGTH "Length" IDS_RB_LENGTH "Length"
@ -1040,7 +1040,7 @@ BEGIN
IDS_RB_ZOOMREG "Zoom Region" IDS_RB_ZOOMREG "Zoom Region"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_RB_UVW "Coordinates" IDS_RB_UVW "Coordinates"
IDS_RB_PROP "Unwrap Options" IDS_RB_PROP "Unwrap Options"
@ -1060,10 +1060,10 @@ BEGIN
IDS_EM_SHAPE "Shape" IDS_EM_SHAPE "Shape"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_ADV_SURF_APPROX_WARNING_TITLE "Surface Approximation Verification" IDS_ADV_SURF_APPROX_WARNING_TITLE "Surface Approximation Verification"
IDS_ADV_SURF_APPROX_WARNING IDS_ADV_SURF_APPROX_WARNING
"You have selected a potentially dangerous setting for the SubDivision limits. Are you sure you want to do this?" "You have selected a potentially dangerous setting for the SubDivision limits. Are you sure you want to do this?"
IDS_PW_PICK "Pick Texture" IDS_PW_PICK "Pick Texture"
IDS_PW_SNAP "Pixel Snap" IDS_PW_SNAP "Pixel Snap"
@ -1079,7 +1079,7 @@ BEGIN
IDS_PW_FALLOFF "Falloff type" IDS_PW_FALLOFF "Falloff type"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_EM_SELBYCOLOR "Select By Color" IDS_EM_SELBYCOLOR "Select By Color"
IDS_EM_VERTEXCOLOR "Vertex Color" IDS_EM_VERTEXCOLOR "Vertex Color"
@ -1099,7 +1099,7 @@ BEGIN
IDS_EM_DETACHFACES "Detach Faces" IDS_EM_DETACHFACES "Detach Faces"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_EM_DETACHVERTS "Detach Verts" IDS_EM_DETACHVERTS "Detach Verts"
IDS_EM_INHERIT_MATERIAL "Inherit Material" IDS_EM_INHERIT_MATERIAL "Inherit Material"
@ -1119,7 +1119,7 @@ BEGIN
IDS_TH_SPLINE_VERT_COUNT "Vertex Count: %d" IDS_TH_SPLINE_VERT_COUNT "Vertex Count: %d"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_SELECTION "Selection" IDS_TH_SELECTION "Selection"
IDS_TH_OBJECT_SEL "Whole Object Selected" IDS_TH_OBJECT_SEL "Whole Object Selected"
@ -1139,17 +1139,17 @@ BEGIN
IDS_TH_CROSS_INSERT "Cross Insert" IDS_TH_CROSS_INSERT "Cross Insert"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_EM_BEVEL "Bevel" IDS_EM_BEVEL "Bevel"
IDS_EM_OUTLINE "Outline" IDS_EM_OUTLINE "Outline"
IDS_ADV_DISP_APPROX_WARNING_TITLE IDS_ADV_DISP_APPROX_WARNING_TITLE
"Displacement Approximation Verification" "Displacement Approximation Verification"
IDS_ADV_DISP_APPROX_WARNING IDS_ADV_DISP_APPROX_WARNING
"You have selected a potential dangerous setting for the SubDivision limits. Are you sure you want to do this?" "You have selected a potential dangerous setting for the SubDivision limits. Are you sure you want to do this?"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_PW_FALLOFFSPACE "World Falloff Space" IDS_PW_FALLOFFSPACE "World Falloff Space"
IDS_PW_BREAK "Break Selected Vertices" IDS_PW_BREAK "Break Selected Vertices"
@ -1169,7 +1169,7 @@ BEGIN
IDS_PW_TEXMAP "TextureMap" IDS_PW_TEXMAP "TextureMap"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_PW_CHANNEL "Map Channel" IDS_PW_CHANNEL "Map Channel"
IDS_PW_MAP "Map Channel Type" IDS_PW_MAP "Map Channel Type"
@ -1181,9 +1181,9 @@ BEGIN
IDS_PW_FALLOFF2 "Falloff" IDS_PW_FALLOFF2 "Falloff"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_CROSS_NOT_IN_THRESHOLD IDS_TH_CROSS_NOT_IN_THRESHOLD
"Crossing lines not within specified threshold" "Crossing lines not within specified threshold"
IDS_TH_EDGEDELETE "Delete Edge" IDS_TH_EDGEDELETE "Delete Edge"
IDS_TH_NOEDGESSEL "No edges selected" IDS_TH_NOEDGESSEL "No edges selected"
@ -1200,7 +1200,7 @@ BEGIN
IDS_TH_OPEN "Open" IDS_TH_OPEN "Open"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_TH_CLOSED "Closed" IDS_TH_CLOSED "Closed"
IDS_EM_ATTACH_LIST "Attach List" IDS_EM_ATTACH_LIST "Attach List"
@ -1220,7 +1220,7 @@ BEGIN
IDS_PW_SCALEV "Scale Vertical" IDS_PW_SCALEV "Scale Vertical"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_PW_WELDSELECTED "Weld Selected" IDS_PW_WELDSELECTED "Weld Selected"
IDS_PW_APPLYPLANAR "Apply Planar" IDS_PW_APPLYPLANAR "Apply Planar"
@ -1240,7 +1240,7 @@ BEGIN
IDS_PW_UNHIDEALL "Unhide All" IDS_PW_UNHIDEALL "Unhide All"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_PW_FREEZE_SELECTED "Freeze Selected" IDS_PW_FREEZE_SELECTED "Freeze Selected"
IDS_PW_UNFREEZEALL "Unfreeze All" IDS_PW_UNFREEZEALL "Unfreeze All"
@ -1249,7 +1249,7 @@ BEGIN
IDS_PW_SCALE_UVW "Scale UVWs" IDS_PW_SCALE_UVW "Scale UVWs"
IDS_PW_WELD_UVW "Weld UVWs" IDS_PW_WELD_UVW "Weld UVWs"
IDS_PW_LINECOLOR "Line Color" IDS_PW_LINECOLOR "Line Color"
IDS_RB_UNSUPPORTED_MAP_TYPE IDS_RB_UNSUPPORTED_MAP_TYPE
"The Displace modifier does not support the mapping type that has been selected to acquire." "The Displace modifier does not support the mapping type that has been selected to acquire."
IDS_MM_ACQ_MAPPING "Aquire Mapping" IDS_MM_ACQ_MAPPING "Aquire Mapping"
IDS_PARAM_CHANGE "Parameter Change" IDS_PARAM_CHANGE "Parameter Change"
@ -1261,7 +1261,7 @@ BEGIN
IDS_PW_MOUSE_CONSTRAIN "SHIFT constrains the mouse to X/Y" IDS_PW_MOUSE_CONSTRAIN "SHIFT constrains the mouse to X/Y"
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_PW_MOUSE_SELECTTV "Select texture vertices" IDS_PW_MOUSE_SELECTTV "Select texture vertices"
IDS_PW_MOUSE_SELECTTRI "SHIFT selects triangle faces" IDS_PW_MOUSE_SELECTTRI "SHIFT selects triangle faces"

View file

@ -34,7 +34,7 @@ STYLE WS_CHILD
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
CONTROL "Paint",IDC_PAINT,"CustButton",WS_TABSTOP,7,5,38,19 CONTROL "Paint",IDC_PAINT,"CustButton",WS_TABSTOP,7,5,38,19
CONTROL "Meshes",IDC_INCLUDE_MESHES,"Button",BS_AUTOCHECKBOX | CONTROL "Meshes",IDC_INCLUDE_MESHES,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,50,5,45,10 WS_TABSTOP,50,5,45,10
CONTROL "Preload Tiles",IDC_PRELOAD_TILES,"Button", CONTROL "Preload Tiles",IDC_PRELOAD_TILES,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,50,15,50,10 BS_AUTOCHECKBOX | WS_TABSTOP,50,15,50,10
@ -47,12 +47,12 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE DISCARDABLE 1 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"modsres.h\0" "modsres.h\0"
END END
2 TEXTINCLUDE DISCARDABLE 2 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n" "#include ""windows.h""\r\n"
@ -61,7 +61,7 @@ BEGIN
"\0" "\0"
END END
3 TEXTINCLUDE DISCARDABLE 3 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -76,7 +76,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO DISCARDABLE
BEGIN BEGIN
IDD_EDPATCH_OPS, DIALOG IDD_EDPATCH_OPS, DIALOG
BEGIN BEGIN
@ -96,8 +96,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 1, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 1, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -116,14 +116,14 @@ BEGIN
VALUE "Comments", "TECH: cyril.corvazier\0" VALUE "Comments", "TECH: cyril.corvazier\0"
VALUE "CompanyName", "Ryzom Core\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileDescription", "NeL Patch Paint\0" VALUE "FileDescription", "NeL Patch Paint\0"
VALUE "FileVersion", "0.11.1\0" VALUE "FileVersion", "0.11.3\0"
VALUE "InternalName", "mods\0" VALUE "InternalName", "mods\0"
VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd\0" VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nelpatchpaint.dlm\0" VALUE "OriginalFilename", "nelpatchpaint.dlm\0"
VALUE "PrivateBuild", "\0" VALUE "PrivateBuild", "\0"
VALUE "ProductName", "Ryzom Core\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "0.11.1\0" VALUE "ProductVersion", "0.11.3\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
END END
END END

View file

@ -72,7 +72,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO DISCARDABLE
BEGIN BEGIN
IDD_PANEL, DIALOG IDD_PANEL, DIALOG
BEGIN BEGIN
@ -90,18 +90,18 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE DISCARDABLE 1 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE DISCARDABLE 2 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"#include ""afxres.h""\r\n" "#include ""afxres.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE DISCARDABLE 3 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -125,8 +125,8 @@ IDC_DROPPER_CURSOR CURSOR DISCARDABLE "dropcurs.cur"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 0, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 0, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -145,13 +145,13 @@ BEGIN
VALUE "Comments", "TECH: \0" VALUE "Comments", "TECH: \0"
VALUE "CompanyName", "Ryzom Core\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileDescription", "Vertex Tree Paint\0" VALUE "FileDescription", "Vertex Tree Paint\0"
VALUE "FileVersion", "0.11.0\0" VALUE "FileVersion", "0.11.3\0"
VALUE "InternalName", "VertexTreePaint\0" VALUE "InternalName", "VertexTreePaint\0"
VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc.\0" VALUE "LegalCopyright", "Copyright © 2000 Nevrax Ltd. Copyright © 1998 Autodesk Inc.\0"
VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF.\0" VALUE "LegalTrademarks", "The following are registered trademarks of Autodesk, Inc.: 3D Studio MAX. The following are trademarks of Autodesk, Inc.: Kinetix, Kinetix(logo), BIPED, Physique, Character Studio, MAX DWG, DWG Unplugged, Heidi, FLI, FLC, DXF.\0"
VALUE "OriginalFilename", "nel_vertex_tree_paint.dlm\0" VALUE "OriginalFilename", "nel_vertex_tree_paint.dlm\0"
VALUE "ProductName", "Ryzom Core\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "0.11.0\0" VALUE "ProductVersion", "0.11.3\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
@ -179,11 +179,11 @@ IDB_BUTTON_MASK BITMAP DISCARDABLE "buttonmask.bmp"
IDD_PANEL DLGINIT IDD_PANEL DLGINIT
BEGIN BEGIN
IDC_COMBO_TYPE, 0x403, 10, 0 IDC_COMBO_TYPE, 0x403, 10, 0
0x6e49, 0x6574, 0x736e, 0x7469, 0x0079, 0x6e49, 0x6574, 0x736e, 0x7469, 0x0079,
IDC_COMBO_TYPE, 0x403, 14, 0 IDC_COMBO_TYPE, 0x403, 14, 0
0x6850, 0x7361, 0x2065, 0x654c, 0x6576, 0x206c, 0x0031, 0x6850, 0x7361, 0x2065, 0x654c, 0x6576, 0x206c, 0x0031,
IDC_COMBO_TYPE, 0x403, 14, 0 IDC_COMBO_TYPE, 0x403, 14, 0
0x6850, 0x7361, 0x2065, 0x654c, 0x6576, 0x206c, 0x0032, 0x6850, 0x7361, 0x2065, 0x654c, 0x6576, 0x206c, 0x0032,
0 0
END END
@ -193,7 +193,7 @@ END
// String Table // String Table
// //
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_LIBDESCRIPTION "Vertex tree painting modifier (Kinetix/Nel)" IDS_LIBDESCRIPTION "Vertex tree painting modifier (Kinetix/Nel)"
IDS_CATEGORY "NeL Tools" IDS_CATEGORY "NeL Tools"

View file

@ -31,7 +31,7 @@ STYLE WS_CHILD | WS_VISIBLE
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
PUSHBUTTON "Button1",IDC_BANK_PATH,5,5,95,14 PUSHBUTTON "Button1",IDC_BANK_PATH,5,5,95,14
COMBOBOX IDC_LAND,5,25,95,75,CBS_DROPDOWNLIST | CBS_SORT | COMBOBOX IDC_LAND,5,25,95,75,CBS_DROPDOWNLIST | CBS_SORT |
WS_DISABLED | WS_VSCROLL | WS_TABSTOP WS_DISABLED | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Setup material",IDC_SETUP,20,80,70,15,WS_DISABLED PUSHBUTTON "Setup material",IDC_SETUP,20,80,70,15,WS_DISABLED
LTEXT "Static",IDC_TILE_COUNT1,10,45,85,8 LTEXT "Static",IDC_TILE_COUNT1,10,45,85,8
@ -56,9 +56,9 @@ BEGIN
CONTROL "",IDC_MAPON2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,201, CONTROL "",IDC_MAPON2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,201,
38,8,10 38,8,10
GROUPBOX "Alpha From:",IDC_STATIC,23,66,89,57 GROUPBOX "Alpha From:",IDC_STATIC,23,66,89,57
CONTROL "Map #1",IDC_MULT_ALPHA1,"Button",BS_AUTORADIOBUTTON | CONTROL "Map #1",IDC_MULT_ALPHA1,"Button",BS_AUTORADIOBUTTON |
WS_GROUP | WS_TABSTOP,36,77,41,10 WS_GROUP | WS_TABSTOP,36,77,41,10
CONTROL "Map #2",IDC_MULT_ALPHA2,"Button",BS_AUTORADIOBUTTON | CONTROL "Map #2",IDC_MULT_ALPHA2,"Button",BS_AUTORADIOBUTTON |
WS_TABSTOP,36,91,41,10 WS_TABSTOP,36,91,41,10
CONTROL "Multiply Alphas",IDC_MULT_ALPHA3,"Button", CONTROL "Multiply Alphas",IDC_MULT_ALPHA3,"Button",
BS_AUTORADIOBUTTON | WS_TABSTOP,36,106,63,10 BS_AUTORADIOBUTTON | WS_TABSTOP,36,106,63,10
@ -73,7 +73,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO DISCARDABLE
BEGIN BEGIN
IDD_PANEL, DIALOG IDD_PANEL, DIALOG
BEGIN BEGIN
@ -97,18 +97,18 @@ END
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE DISCARDABLE 1 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE DISCARDABLE 2 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"#include ""afxres.h""\r\n" "#include ""afxres.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE DISCARDABLE 3 TEXTINCLUDE DISCARDABLE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
@ -124,8 +124,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0, 11, 0, 0 FILEVERSION 0, 11, 3, 0
PRODUCTVERSION 0, 11, 0, 0 PRODUCTVERSION 0, 11, 3, 0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -142,12 +142,12 @@ BEGIN
BEGIN BEGIN
VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0" VALUE "Comments", "Based on Kinetix 3D Studio Max 3.0 plugin sample\0"
VALUE "CompanyName", "Ryzom Core\0" VALUE "CompanyName", "Ryzom Core\0"
VALUE "FileVersion", "0.11.0\0" VALUE "FileVersion", "0.11.3\0"
VALUE "InternalName", "Tile_utility\0" VALUE "InternalName", "Tile_utility\0"
VALUE "LegalCopyright", "\0" VALUE "LegalCopyright", "\0"
VALUE "OriginalFilename", "Tile_utility.dlu\0" VALUE "OriginalFilename", "Tile_utility.dlu\0"
VALUE "ProductName", "Ryzom Core\0" VALUE "ProductName", "Ryzom Core\0"
VALUE "ProductVersion", "0.11.0\0" VALUE "ProductVersion", "0.11.3\0"
VALUE "FileDescription", "Create material for tiles\0" VALUE "FileDescription", "Create material for tiles\0"
VALUE "Comments", "TECH: \0" VALUE "Comments", "TECH: \0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
@ -167,7 +167,7 @@ END
// String Table // String Table
// //
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_LIBDESCRIPTION "Create material for tiles" IDS_LIBDESCRIPTION "Create material for tiles"
IDS_CATEGORY "Rykol Tools" IDS_CATEGORY "Rykol Tools"
@ -177,7 +177,7 @@ BEGIN
IDS_COLOR1 "Color 1" IDS_COLOR1 "Color 1"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_PHASE "Phase" IDS_DS_PHASE "Phase"
IDS_DS_AMBIENT "Ambient Color" IDS_DS_AMBIENT "Ambient Color"
@ -185,7 +185,7 @@ BEGIN
IDS_DS_SPECULAR "Specular Color" IDS_DS_SPECULAR "Specular Color"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_WIREFRAME "Wire" IDS_DS_WIREFRAME "Wire"
IDS_DS_SHININESS "Glossiness" IDS_DS_SHININESS "Glossiness"
@ -203,7 +203,7 @@ BEGIN
IDS_GRAD_TYPE "Gradient Type" IDS_GRAD_TYPE "Gradient Type"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_JW_MAPENABLES "Map Enables" IDS_JW_MAPENABLES "Map Enables"
IDS_DS_THRESH "Position" IDS_DS_THRESH "Position"
@ -223,7 +223,7 @@ BEGIN
IDS_DS_ANGLE "Angle" IDS_DS_ANGLE "Angle"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_COLOR1 "Color 1" IDS_DS_COLOR1 "Color 1"
IDS_DS_COLOR2 "Color 2" IDS_DS_COLOR2 "Color 2"
@ -243,7 +243,7 @@ BEGIN
IDS_DS_MIXAMT "Mix Amount" IDS_DS_MIXAMT "Mix Amount"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_SHRINK_ENV "Shrink-wrap Environment" IDS_DS_SHRINK_ENV "Shrink-wrap Environment"
IDS_DS_SCREEN "Screen" IDS_DS_SCREEN "Screen"
@ -263,7 +263,7 @@ BEGIN
IDS_JW_MAPS "Maps" IDS_JW_MAPS "Maps"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_JW_MAPAMOUNTS "Map Amounts" IDS_JW_MAPAMOUNTS "Map Amounts"
IDS_DS_MATTE_SHADOW_PAR "Matte/Shadow Basic Parameters" IDS_DS_MATTE_SHADOW_PAR "Matte/Shadow Basic Parameters"
@ -280,7 +280,7 @@ BEGIN
IDS_JW_SAMPLERBYNAME "Sampler Name" IDS_JW_SAMPLERBYNAME "Sampler Name"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_NOISEPARMS "Noise Parameters" IDS_DS_NOISEPARMS "Noise Parameters"
IDS_DS_MIXPARMS "Mix Parameters" IDS_DS_MIXPARMS "Mix Parameters"
@ -300,7 +300,7 @@ BEGIN
IDS_DS_CYL_ENV "Cylindrical Environment" IDS_DS_CYL_ENV "Cylindrical Environment"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_XLABEL "X:" IDS_DS_XLABEL "X:"
IDS_DS_YLABEL "Y:" IDS_DS_YLABEL "Y:"
@ -311,7 +311,7 @@ BEGIN
IDS_DS_BITMAP_TEXTURE_ERR "Bitmap Texture Error" IDS_DS_BITMAP_TEXTURE_ERR "Bitmap Texture Error"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_NOISE "Noise" IDS_RB_NOISE "Noise"
IDS_RB_MULTISUBOBJECT "Multi/Sub-Object" IDS_RB_MULTISUBOBJECT "Multi/Sub-Object"
@ -320,7 +320,7 @@ BEGIN
IDS_RB_BACK "Back" IDS_RB_BACK "Back"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_FACING "Facing" IDS_RB_FACING "Facing"
IDS_RB_MASK "Mask" IDS_RB_MASK "Mask"
@ -340,7 +340,7 @@ BEGIN
IDS_RB_CENTER2 "Color 2 Position" IDS_RB_CENTER2 "Color 2 Position"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_HIGHTHRESHOLD "High Threshold" IDS_RB_HIGHTHRESHOLD "High Threshold"
IDS_RB_LOWTHRESHOLD "Low Threshold" IDS_RB_LOWTHRESHOLD "Low Threshold"
@ -360,12 +360,12 @@ BEGIN
IDS_DS_BOTTOM "Bottom" IDS_DS_BOTTOM "Bottom"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_AMOUNT "Amount" IDS_RB_AMOUNT "Amount"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_CURVITURE "Curvature" IDS_RB_CURVITURE "Curvature"
IDS_RB_AMPLITUDE "Amplitude" IDS_RB_AMPLITUDE "Amplitude"
@ -374,13 +374,13 @@ BEGIN
IDS_RB_DECAY "Decay" IDS_RB_DECAY "Decay"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_RB_LOWTHRESH "Low Threshold" IDS_RB_LOWTHRESH "Low Threshold"
IDS_RB_HIGHTHRESH "High Threshold" IDS_RB_HIGHTHRESH "High Threshold"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_MARBLE "Marble" IDS_DS_MARBLE "Marble"
IDS_DS_MIX "Mix" IDS_DS_MIX "Mix"
@ -400,7 +400,7 @@ BEGIN
IDS_DS_CHECKER "Checker" IDS_DS_CHECKER "Checker"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_NONE "None" IDS_DS_NONE "None"
IDS_DS_TRANS "Opacity" IDS_DS_TRANS "Opacity"
@ -420,12 +420,12 @@ BEGIN
IDS_DS_CLIPV "Clip V Offset" IDS_DS_CLIPV "Clip V Offset"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_PARAMCHG "Param Change" IDS_DS_PARAMCHG "Param Change"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_CLIPW "Clip U Width" IDS_DS_CLIPW "Clip U Width"
IDS_DS_CLIPH "Clip V Width" IDS_DS_CLIPH "Clip V Width"
@ -445,7 +445,7 @@ BEGIN
IDS_DS_FALLOFF "Falloff" IDS_DS_FALLOFF "Falloff"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_FALLOFFPARAMS "Falloff Parameters" IDS_DS_FALLOFFPARAMS "Falloff Parameters"
IDS_DS_PERVAL "Perpendicular Value:" IDS_DS_PERVAL "Perpendicular Value:"
@ -465,7 +465,7 @@ BEGIN
IDS_DS_PLATE_PARAMS "Thin Wall Refraction Parameters" IDS_DS_PLATE_PARAMS "Thin Wall Refraction Parameters"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_THICKFACT "Thickness Offset" IDS_DS_THICKFACT "Thickness Offset"
IDS_DS_REFRAMT "Bump Map Effect" IDS_DS_REFRAMT "Bump Map Effect"
@ -485,7 +485,7 @@ BEGIN
IDS_DS_GREEN "Green" IDS_DS_GREEN "Green"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_BLUE "Blue" IDS_DS_BLUE "Blue"
IDS_DS_SOFTEN "Soften Level" IDS_DS_SOFTEN "Soften Level"
@ -505,7 +505,7 @@ BEGIN
IDS_KE_OREN_NAYAR_BLINN "Oren-Nayar-Blinn" IDS_KE_OREN_NAYAR_BLINN "Oren-Nayar-Blinn"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_KE_DIFF_LEVEL "Diffuse Level" IDS_KE_DIFF_LEVEL "Diffuse Level"
IDS_KE_DIFF_ROUGH "Diff. Roughness" IDS_KE_DIFF_ROUGH "Diff. Roughness"
@ -525,7 +525,7 @@ BEGIN
IDS_KE_COLOR "Color" IDS_KE_COLOR "Color"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_KE_ANISOTROPY "Anisotropy" IDS_KE_ANISOTROPY "Anisotropy"
IDS_KE_ORIENTATION "Orientation" IDS_KE_ORIENTATION "Orientation"
@ -545,7 +545,7 @@ BEGIN
IDS_KE_GLOSS1 "Glossiness 1" IDS_KE_GLOSS1 "Glossiness 1"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_KE_GLOSS2 "Glossiness 2" IDS_KE_GLOSS2 "Glossiness 2"
IDS_KE_ANISO1 "Anisotropy 1" IDS_KE_ANISO1 "Anisotropy 1"
@ -565,7 +565,7 @@ BEGIN
IDS_JW_APPLYREFDIM "Apply Reflection Dimming" IDS_JW_APPLYREFDIM "Apply Reflection Dimming"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_JW_PIXELSAMPLER "Pixel Sampler" IDS_JW_PIXELSAMPLER "Pixel Sampler"
IDS_JW_SAMPLERQUAL "Sampler Quality" IDS_JW_SAMPLERQUAL "Sampler Quality"
@ -585,7 +585,7 @@ BEGIN
IDS_RB_BLENDMAT_CDESC "Blend" IDS_RB_BLENDMAT_CDESC "Blend"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_DS_MIX_CDESC "Mix" IDS_DS_MIX_CDESC "Mix"
IDS_DS_FLATMIRROR_CDESC "Flat Mirror" IDS_DS_FLATMIRROR_CDESC "Flat Mirror"
@ -602,7 +602,7 @@ BEGIN
IDS_JW_ADTEXLOCK "Ambient-Diffuse Texture Lock" IDS_JW_ADTEXLOCK "Ambient-Diffuse Texture Lock"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_JW_ADLOCK "Ambient-Diffuse Lock" IDS_JW_ADLOCK "Ambient-Diffuse Lock"
IDS_JW_DSLOCK "Diffuse-Specular Lock" IDS_JW_DSLOCK "Diffuse-Specular Lock"
@ -621,7 +621,7 @@ BEGIN
IDS_PW_APPLYATMOS "ApplyAtmosphere" IDS_PW_APPLYATMOS "ApplyAtmosphere"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_PW_ATMOSDEPTH "AtmossphereDepth" IDS_PW_ATMOSDEPTH "AtmossphereDepth"
IDS_PW_RECEIVESHADOWS "RecieveShadows" IDS_PW_RECEIVESHADOWS "RecieveShadows"
@ -641,7 +641,7 @@ BEGIN
IDS_PW_STARTTIME "StartTime" IDS_PW_STARTTIME "StartTime"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_PW_PLAYBACK "PlayBackRate" IDS_PW_PLAYBACK "PlayBackRate"
IDS_PW_ENDCONDITION "EndCondition" IDS_PW_ENDCONDITION "EndCondition"
@ -661,7 +661,7 @@ BEGIN
IDS_PW_APPLYBLUR "ApplyBlur" IDS_PW_APPLYBLUR "ApplyBlur"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_KE_FACETED "Faceted" IDS_KE_FACETED "Faceted"
IDS_KE_ORIENTATION1 "Orientation 1" IDS_KE_ORIENTATION1 "Orientation 1"
@ -680,7 +680,7 @@ BEGIN
IDS_PW_MAT "Mat." IDS_PW_MAT "Mat."
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_PW_BASE "Base" IDS_PW_BASE "Base"
IDS_DS_USEREFL "UseReflMap" IDS_DS_USEREFL "UseReflMap"
@ -695,7 +695,7 @@ BEGIN
IDS_ACUBIC_SELECT_INPUT_FILE "Select Input Reflection Map" IDS_ACUBIC_SELECT_INPUT_FILE "Select Input Reflection Map"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
65505 "RGB Level" 65505 "RGB Level"
65506 "RGB Offset" 65506 "RGB Offset"

View file

@ -45,20 +45,20 @@ void CHairSet::init (NLMISC::IProgressCallback &progress)
progress.progress ((float)k/(float)numHairItem); progress.progress ((float)k/(float)numHairItem);
const CItemSheet *item = SheetMngr.getItem(SLOTTYPE::HEAD_SLOT, k); const CItemSheet *item = SheetMngr.getItem(SLOTTYPE::HEAD_SLOT, k);
if( (item) && (!item->getShape().empty()) ) if (item && !item->getShape().empty())
{ {
std::string itemName = NLMISC::toLower(item->getShape());
if (item->getShape().find("cheveux", 0) != std::string::npos) if (item->getShape().find("cheveux", 0) != std::string::npos)
{ {
// get race // get race
uint16 race = (uint16) itemName[1] | ((uint16) itemName[0] << 8); std::string itemName = NLMISC::toLower(item->getShape());
switch(race)
// fortunately, first character of each race is distinct
switch(itemName[0])
{ {
case 'ma': _Hairs[Matis].push_back(k); break; case 'm': _Hairs[Matis].push_back(k); break;
case 'tr': _Hairs[Tryker].push_back(k); break; case 't': _Hairs[Tryker].push_back(k); break;
case 'zo': _Hairs[Zorai].push_back(k); break; case 'z': _Hairs[Zorai].push_back(k); break;
case 'fy': _Hairs[Fyros].push_back(k); break; case 'f': _Hairs[Fyros].push_back(k); break;
} }
} }
} }

View file

@ -556,10 +556,9 @@ void checkDriverDepth ()
static std::string replaceApplicationDirToken(const std::string &dir) static std::string replaceApplicationDirToken(const std::string &dir)
{ {
#ifdef NL_OS_MAC #ifdef NL_OS_MAC
// if client_default.cfg is not in current directory, and it's not an absolute path, use application default directory // if client_default.cfg is not in current directory, and it's not an absolute path, use application default directory
if (!CFile::isExists("client_default.cfg") && dir.size()>0 && dir[0]!='/') if (!CFile::isExists("client_default.cfg") && !dir.empty() && dir[0]!='/')
{ {
return getAppBundlePath() + "/Contents/Resources/" + dir; return getAppBundlePath() + "/Contents/Resources/" + dir;
} }

View file

@ -797,7 +797,7 @@ void CCharacter3D::setup (const SCharacter3DSetup &c3ds)
} }
// Instance skin color // Instance skin color
if (c3ds.People != -1) if (c3ds.People != EGSPD::CPeople::Undefined)
if ((c3ds.People != _CurrentSetup.People) || bInstanceRebuilt || bQualityRebuilt) if ((c3ds.People != _CurrentSetup.People) || bInstanceRebuilt || bQualityRebuilt)
{ {
if (!_Instances[i].empty()) if (!_Instances[i].empty())

View file

@ -604,7 +604,11 @@ void CChatGroupWindow::displayMessage(const ucstring &msg, NLMISC::CRGBA col, CC
pos = newmsg.find(ucstring("}"));; pos = newmsg.find(ucstring("}"));;
prefix += " "; prefix += " ";
} }
newmsg = newmsg.substr(0, pos + 1) + prefix + newmsg.substr(pos + 1);
if (pos == ucstring::npos)
newmsg = prefix + newmsg;
else
newmsg = newmsg.substr(0, pos + 1) + prefix + newmsg.substr(pos + 1);
// Add dynchannel number and optionally name before text if user channel // Add dynchannel number and optionally name before text if user channel
CCDBNodeLeaf* node = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:SHOW_DYN_CHANNEL_NAME_IN_CHAT_CB", false); CCDBNodeLeaf* node = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:SHOW_DYN_CHANNEL_NAME_IN_CHAT_CB", false);
@ -615,7 +619,11 @@ void CChatGroupWindow::displayMessage(const ucstring &msg, NLMISC::CRGBA col, CC
STRING_MANAGER::CStringManagerClient::instance()->getDynString(textId, title); STRING_MANAGER::CStringManagerClient::instance()->getDynString(textId, title);
prefix = title.empty() ? ucstring("") : ucstring(" ") + title; prefix = title.empty() ? ucstring("") : ucstring(" ") + title;
pos = newmsg.find(ucstring("] ")); pos = newmsg.find(ucstring("] "));
newmsg = newmsg.substr(0, pos) + prefix + newmsg.substr(pos);
if (pos == ucstring::npos)
newmsg = prefix + newmsg;
else
newmsg = newmsg.substr(0, pos) + prefix + newmsg.substr(pos);
} }
} }
break; break;

View file

@ -456,7 +456,7 @@ bool CCtrlSheetInfo::parseCtrlInfo(xmlNodePtr cur, CInterfaceGroup * /* parentGr
else else
{ {
// must not have so much brick type, else must change code! // must not have so much brick type, else must change code!
nlassert(brickType<32); // nlassert(brickType<32);
// Ok set the bit associated // Ok set the bit associated
_BrickTypeBitField|= 1<<brickType; _BrickTypeBitField|= 1<<brickType;

View file

@ -22,6 +22,7 @@
#include "../user_entity.h" #include "../user_entity.h"
#include "../entities.h" #include "../entities.h"
#include "interface_manager.h" #include "interface_manager.h"
#include "user_agent.h"
// used for login cookie to be sent to the web server // used for login cookie to be sent to the web server
#include "../net_manager.h" #include "../net_manager.h"
@ -157,7 +158,7 @@ struct CWebigNotificationThread : public NLMISC::IRunnable
if(!Curl) return; if(!Curl) return;
curl_easy_setopt(Curl, CURLOPT_COOKIEFILE, ""); curl_easy_setopt(Curl, CURLOPT_COOKIEFILE, "");
curl_easy_setopt(Curl, CURLOPT_NOPROGRESS, 1); curl_easy_setopt(Curl, CURLOPT_NOPROGRESS, 1);
curl_easy_setopt(Curl, CURLOPT_USERAGENT, "Ryzom"); curl_easy_setopt(Curl, CURLOPT_USERAGENT, getUserAgent().c_str());
curl_easy_setopt(Curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(Curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, writeDataFromCurl); curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, writeDataFromCurl);
//nlinfo("ctor CWebigNotificationThread"); //nlinfo("ctor CWebigNotificationThread");

View file

@ -467,8 +467,8 @@ CInterfaceManager::CInterfaceManager()
CGroupHTML::options.trustedDomains = ClientCfg.WebIgTrustedDomains; CGroupHTML::options.trustedDomains = ClientCfg.WebIgTrustedDomains;
CGroupHTML::options.languageCode = ClientCfg.getHtmlLanguageCode(); CGroupHTML::options.languageCode = ClientCfg.getHtmlLanguageCode();
CGroupHTML::options.appName = "Ryzom"; CGroupHTML::options.appName = getUserAgentName();
CGroupHTML::options.appVersion = getUserAgent(); CGroupHTML::options.appVersion = getUserAgentVersion();
NLGUI::CDBManager::getInstance()->resizeBanks( NB_CDB_BANKS ); NLGUI::CDBManager::getInstance()->resizeBanks( NB_CDB_BANKS );
interfaceLinkUpdater = new CInterfaceLink::CInterfaceLinkUpdater(); interfaceLinkUpdater = new CInterfaceLink::CInterfaceLinkUpdater();
@ -2925,7 +2925,7 @@ void CInterfaceManager::initEmotes()
CSkillManager *pSM = CSkillManager::getInstance(); CSkillManager *pSM = CSkillManager::getInstance();
betaTester = pSM->isTitleUnblocked(CHARACTER_TITLE::FBT); betaTester = pSM->isTitleUnblocked(CHARACTER_TITLE::FBT);
string previousMind = ""; string previousMind;
CGroupSubMenu *pFirstMenu = 0; CGroupSubMenu *pFirstMenu = 0;
for (list<CEmoteEntry>::const_iterator it = entries.begin(); it != entries.end(); it++) for (list<CEmoteEntry>::const_iterator it = entries.begin(); it != entries.end(); it++)

View file

@ -1068,12 +1068,12 @@ float CPatchManager::getCurrentFileProgress() const
} }
// **************************************************************************** // ****************************************************************************
void CPatchManager::setRWAccess (const string &filename) void CPatchManager::setRWAccess (const string &filename, bool bThrowException)
{ {
ucstring s = CI18N::get("uiSetAttrib") + " " + filename; ucstring s = CI18N::get("uiSetAttrib") + " " + filename;
setState(true, s); setState(true, s);
if (!NLMISC::CFile::setRWAccess(filename)) if (!NLMISC::CFile::setRWAccess(filename) && bThrowException)
{ {
s = CI18N::get("uiAttribErr") + " " + filename + " (" + toString(errno) + "," + strerror(errno) + ")"; s = CI18N::get("uiAttribErr") + " " + filename + " (" + toString(errno) + "," + strerror(errno) + ")";
setState(true, s); setState(true, s);
@ -1351,7 +1351,7 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de
// create the local file // create the local file
if (NLMISC::CFile::fileExists(dest)) if (NLMISC::CFile::fileExists(dest))
{ {
setRWAccess(dest); setRWAccess(dest, false);
NLMISC::CFile::deleteFile(dest.c_str()); NLMISC::CFile::deleteFile(dest.c_str());
} }
FILE *fp = fopen (dest.c_str(), "wb"); FILE *fp = fopen (dest.c_str(), "wb");
@ -1492,7 +1492,7 @@ void CPatchManager::decompressFile (const string &filename)
} }
string dest = filename.substr(0, filename.size ()-4); string dest = filename.substr(0, filename.size ()-4);
setRWAccess(dest); setRWAccess(dest, false);
//if(isVerboseLog()) nlinfo("Calling fopen('%s','wb')", dest.c_str()); //if(isVerboseLog()) nlinfo("Calling fopen('%s','wb')", dest.c_str());
FILE *fp = fopen (dest.c_str(), "wb"); FILE *fp = fopen (dest.c_str(), "wb");
if (fp == NULL) if (fp == NULL)
@ -1566,7 +1566,7 @@ void CPatchManager::applyDate (const string &sFilename, uint32 nDate)
{ {
// _utimbuf utb; // _utimbuf utb;
// utb.actime = utb.modtime = nDate; // utb.actime = utb.modtime = nDate;
setRWAccess(sFilename); setRWAccess(sFilename, false);
ucstring s = CI18N::get("uiChangeDate") + " " + NLMISC::CFile::getFilename(sFilename) + " " + toString(NLMISC::CFile::getFileModificationDate (sFilename)) + ucstring s = CI18N::get("uiChangeDate") + " " + NLMISC::CFile::getFilename(sFilename) + " " + toString(NLMISC::CFile::getFileModificationDate (sFilename)) +
" -> " + toString(nDate); " -> " + toString(nDate);
setState(true,s); setState(true,s);
@ -3398,6 +3398,7 @@ bool CPatchManager::extract(const std::string& patchPath,
ok = true; ok = true;
} }
} }
if (!ok) if (!ok)
{ {
// nothing to extract // nothing to extract
@ -3407,15 +3408,21 @@ bool CPatchManager::extract(const std::string& patchPath,
// extract // extract
uint nblab = 0; uint nblab = 0;
pPM->deleteFile(updateBatchFilename, false, false); pPM->deleteFile(updateBatchFilename, false, false);
FILE *fp = fopen (updateBatchFilename.c_str(), "wt"); FILE *fp = fopen (updateBatchFilename.c_str(), "wt");
if (fp == 0) if (fp == 0)
{ {
string err = toString("Can't open file '%s' for writing: code=%d %s (error code 29)", updateBatchFilename.c_str(), errno, strerror(errno)); 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); throw Exception (err);
} }
#ifdef NL_OS_WINDOWS
fprintf(fp, "@echo off\n"); fprintf(fp, "@echo off\n");
fprintf(fp, "ping 127.0.0.1 -n 7 -w 1000 > nul\n"); // wait fprintf(fp, "ping 127.0.0.1 -n 7 -w 1000 > nul\n"); // wait
#else
// TODO: for Linux and OS X
#endif
// Unpack files with category ExtractPath non empty // Unpack files with category ExtractPath non empty
for (uint32 j = 0; j < sourceFilename.size(); ++j) for (uint32 j = 0; j < sourceFilename.size(); ++j)
@ -3442,21 +3449,32 @@ bool CPatchManager::extract(const std::string& patchPath,
string DstPath = CPath::standardizeDosPath(extractPath[j]); string DstPath = CPath::standardizeDosPath(extractPath[j]);
string DstName = DstPath + vFilenames[fff]; string DstName = DstPath + vFilenames[fff];
NLMISC::CFile::createDirectoryTree(extractPath[j]); NLMISC::CFile::createDirectoryTree(extractPath[j]);
// this file must be moved
// this file must be moved
#ifdef NL_OS_WINDOWS
fprintf(fp, ":loop%u\n", nblab); fprintf(fp, ":loop%u\n", nblab);
fprintf(fp, "attrib -r -a -s -h %s\n", DstName.c_str()); fprintf(fp, "attrib -r -a -s -h %s\n", DstName.c_str());
fprintf(fp, "del %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, "if exist %s goto loop%u\n", DstName.c_str(), nblab);
fprintf(fp, "move %s %s\n", SrcName.c_str(), DstPath.c_str()); fprintf(fp, "move %s %s\n", SrcName.c_str(), DstPath.c_str());
#else
// TODO: for Linux and OS X
#endif
nblab++; nblab++;
} }
} }
} }
} }
#ifdef NL_OS_WINDOWS
fprintf(fp, "start %s %%1 %%2 %%3\n", execName.c_str()); fprintf(fp, "start %s %%1 %%2 %%3\n", execName.c_str());
#else
// TODO: for Linux and OS X
#endif
fclose(fp); fclose(fp);
if (stopFun) if (stopFun)

View file

@ -302,7 +302,7 @@ private:
/// Read the description of the highest client version file found /// Read the description of the highest client version file found
void readClientVersionAndDescFile(); void readClientVersionAndDescFile();
void setRWAccess (const std::string &filename); void setRWAccess (const std::string &filename, bool bThrowException=true);
std::string deleteFile (const std::string &filename, bool bThrowException=true, bool bWarning=true); std::string deleteFile (const std::string &filename, bool bThrowException=true, bool bWarning=true);

View file

@ -85,7 +85,7 @@ static std::string sizeToHumanStd(uint64 size)
static std::string getVideoInfoDeviceName() static std::string getVideoInfoDeviceName()
{ {
uint64 version; uint64 version;
std::string ret = ""; std::string ret;
bool ok = CSystemInfo::getVideoInfo(ret, version); bool ok = CSystemInfo::getVideoInfo(ret, version);
if (ok) if (ok)
{ {

View file

@ -920,7 +920,7 @@ std::string getStringCategory(const ucstring &src, ucstring &dest, bool alwaysAd
std::string getStringCategoryIfAny(const ucstring &src, ucstring &dest) std::string getStringCategoryIfAny(const ucstring &src, ucstring &dest)
{ {
std::string colorCode = ""; std::string colorCode;
if (src.size() >= 3) if (src.size() >= 3)
{ {
uint startPos = 0; uint startPos = 0;

View file

@ -4109,7 +4109,7 @@ void CNetManagerMulti::init( const std::string& cookie, const std::string& addr
// //
uint32 ShardId = 0; uint32 ShardId = 0;
std::string WebServer = ""; std::string WebServer;

View file

@ -564,7 +564,7 @@ void CDisplayerVisualEntity::updateWorldMapPresence()
_MapDeco.setDisplayedInstance(getDisplayedInstance(), true); _MapDeco.setDisplayedInstance(getDisplayedInstance(), true);
// retrieve icon from the displayed object (lua code) // retrieve icon from the displayed object (lua code)
CLuaState &ls = getEditor().getLua(); CLuaState &ls = getEditor().getLua();
std::string texName = ""; std::string texName;
{ {
CLuaStackChecker lsc(&ls); CLuaStackChecker lsc(&ls);
if (getDisplayedInstance()->getLuaProjection().callMethodByNameNoThrow("getSelectBarIcon", 0, 1)) if (getDisplayedInstance()->getLuaProjection().callMethodByNameNoThrow("getSelectBarIcon", 0, 1))
@ -984,7 +984,7 @@ void CDisplayerVisualEntity::updateName()
break; break;
} }
} }
std::string firstPart = ""; std::string firstPart;
if(actNb>0) if(actNb>0)
firstPart = CI18N::get("uiR2EDDefaultActTitle").toString() + " " + NLMISC::toString(actNb); firstPart = CI18N::get("uiR2EDDefaultActTitle").toString() + " " + NLMISC::toString(actNb);

View file

@ -1116,12 +1116,12 @@ void CClientEditionModule::startingScenario(class NLNET::IModuleProxy * /* serve
uint32 myUserId = NetMngr.getUserId(); uint32 myUserId = NetMngr.getUserId();
std::string connectionState = ""; std::string connectionState;
if (myUserId == (charId>>4) || ClientCfg.Local) if (myUserId == (charId>>4) || ClientCfg.Local)
{ {
std::string errorMsg = ""; std::string errorMsg;
CObject* hlScenario = _Scenario->getHighLevel(); CObject* hlScenario = _Scenario->getHighLevel();
hlData.setData(hlScenario); // clone before modify by translateFeatures hlData.setData(hlScenario); // clone before modify by translateFeatures
@ -2425,10 +2425,10 @@ bool CClientEditionModule::addToLoadList( const std::string& filename, CScenario
void CClientEditionModule::loadScenarioSucceded(const std::string& filename, const std::string& body, const CScenarioValidator::TValues& values) void CClientEditionModule::loadScenarioSucceded(const std::string& filename, const std::string& body, const CScenarioValidator::TValues& values)
{ {
//H_AUTO(R2_CClientEditionModule_loadScenarioSucceded) //H_AUTO(R2_CClientEditionModule_loadScenarioSucceded)
string initialIsland="", initialEntryPoint="", initialSeason = ""; string initialIsland, initialEntryPoint, initialSeason;
string creatorMD5 = "", modifiedByMD5=""; string creatorMD5, modifiedByMD5;
string name = ""; string name;
string locked = ""; string locked;
for(uint i=0; i<values.size(); i++) for(uint i=0; i<values.size(); i++)
{ {
const std::pair<std::string, std::string>& pair = values[i]; const std::pair<std::string, std::string>& pair = values[i];

View file

@ -834,7 +834,7 @@ sint CComLuaModule::luaRequestEraseNode(lua_State* state)
if (args>2) { luaL_checknumber(state, 3); } if (args>2) { luaL_checknumber(state, 3); }
std::string instanceId(lua_tostring(state, 1)); std::string instanceId(lua_tostring(state, 1));
std::string attrName = ""; std::string attrName;
sint position = -1; sint position = -1;
if (args>1){ attrName = lua_tostring(state, 2);} if (args>1){ attrName = lua_tostring(state, 2);}
if (args>2){ position = static_cast<sint>(lua_tonumber(state, 3));} if (args>2){ position = static_cast<sint>(lua_tonumber(state, 3));}
@ -1255,7 +1255,7 @@ CObject* CComLuaModule::getObjectFromLua(lua_State* state, sint idx)
lua_pushnil(state); lua_pushnil(state);
while (lua_next(state, -2) != 0) while (lua_next(state, -2) != 0)
{ {
std::string key = ""; std::string key;
if ( lua_type(state, -2) == LUA_TSTRING) if ( lua_type(state, -2) == LUA_TSTRING)
{ {
key = lua_tostring(state, -2); key = lua_tostring(state, -2);
@ -1285,7 +1285,7 @@ CObject* CComLuaModule::getObjectFromLua(lua_State* state, sint idx)
CObject* CComLuaModule::loadLocal(const std::string& filename, const CScenarioValidator::TValues& values) CObject* CComLuaModule::loadLocal(const std::string& filename, const CScenarioValidator::TValues& values)
{ {
CScenarioValidator::TValues::const_iterator first(values.begin()), last(values.end()); CScenarioValidator::TValues::const_iterator first(values.begin()), last(values.end());
std::string name = ""; std::string name;
for (; first != last; ++first) for (; first != last; ++first)
{ {
if (first->first == "Name" ) { name = first->second; } if (first->first == "Name" ) { name = first->second; }
@ -1347,7 +1347,7 @@ bool CComLuaModule::loadUserComponent(const std::string& filename)
CObject* CComLuaModule::loadFromBuffer(const std::string& data, const std::string& filename, const CScenarioValidator::TValues& values) CObject* CComLuaModule::loadFromBuffer(const std::string& data, const std::string& filename, const CScenarioValidator::TValues& values)
{ {
CScenarioValidator::TValues::const_iterator first(values.begin()), last(values.end()); CScenarioValidator::TValues::const_iterator first(values.begin()), last(values.end());
std::string name = ""; std::string name;
for (; first != last; ++first) for (; first != last; ++first)
{ {
if (first->first == "Name" ) { name = first->second; } if (first->first == "Name" ) { name = first->second; }

View file

@ -267,7 +267,7 @@ void CDynamicMapClient::save(const std::string& /* filename */)
void CDynamicMapClient::saveRtData(const std::string& filename) void CDynamicMapClient::saveRtData(const std::string& filename)
{ {
//H_AUTO(R2_CDynamicMapClient_saveRtData) //H_AUTO(R2_CDynamicMapClient_saveRtData)
std::string name = ""; std::string name;
name += filename; name += filename;
//std::ostringstream out2; //std::ostringstream out2;
std::string out2; std::string out2;

View file

@ -21,7 +21,6 @@
#include "session_browser.h" #include "session_browser.h"
#include "game_share/ring_session_manager_itf.h" #include "game_share/ring_session_manager_itf.h"
#include "nel/gui/lua_helper.h" #include "nel/gui/lua_helper.h"
using namespace NLGUI;
#include "far_tp.h" #include "far_tp.h"
class CSessionBrowserImpl : public CSessionBrowser, class CSessionBrowserImpl : public CSessionBrowser,
@ -37,7 +36,7 @@ public:
* - RingAccessPoint:onConnectionClosed() * - RingAccessPoint:onConnectionClosed()
* - RingAccessPoint:onConnectionFailed() * - RingAccessPoint:onConnectionFailed()
*/ */
void init(CLuaState *ls); void init(NLGUI::CLuaState *ls);
// from CSessionBrowser // from CSessionBrowser
virtual void on_connectionFailed(); virtual void on_connectionFailed();
virtual void on_connectionClosed(); virtual void on_connectionClosed();
@ -99,17 +98,17 @@ public:
static const std::string &getFrontEndAddress(); static const std::string &getFrontEndAddress();
private: private:
CLuaState::TRefPtr _Lua; NLGUI::CLuaState::TRefPtr _Lua;
static int luaGetRingSessionList(CLuaState &ls); static int luaGetRingSessionList(NLGUI::CLuaState &ls);
static int luaGetRingCharList(CLuaState &ls); static int luaGetRingCharList(NLGUI::CLuaState &ls);
static int luaJoinRingSession(CLuaState &ls); static int luaJoinRingSession(NLGUI::CLuaState &ls);
static int luaCheckRingAccess(CLuaState &ls); static int luaCheckRingAccess(NLGUI::CLuaState &ls);
static int luaGetFileHeader(CLuaState &ls); static int luaGetFileHeader(NLGUI::CLuaState &ls);
static int luaGetRingStats(CLuaState &ls); static int luaGetRingStats(NLGUI::CLuaState &ls);
static int luaGetScenarioScores(CLuaState &ls); static int luaGetScenarioScores(NLGUI::CLuaState &ls);
static int luaUpdateScenarioScores(CLuaState &ls); static int luaUpdateScenarioScores(NLGUI::CLuaState &ls);
static int luaGetSessionAverageScores(CLuaState &ls); static int luaGetSessionAverageScores(NLGUI::CLuaState &ls);
static int luaGetScenarioAverageScores(CLuaState &ls); static int luaGetScenarioAverageScores(NLGUI::CLuaState &ls);
// Call a method inside the 'RingAccessPoint' lua table // Call a method inside the 'RingAccessPoint' lua table
void callRingAccessPointMethod(const char *name, int numArg, int numResult); void callRingAccessPointMethod(const char *name, int numArg, int numResult);
void callRingCharTrackingMethod(const char *name, int numArg, int numResult); void callRingCharTrackingMethod(const char *name, int numArg, int numResult);

View file

@ -21,7 +21,7 @@
#include "game_share/ryzom_version.h" #include "game_share/ryzom_version.h"
#ifdef HAVE_REVISION_H #if defined(RYZOM_COMPATIBILITY_VERSION) && defined(HAVE_REVISION_H)
#include "revision.h" #include "revision.h"
#endif #endif
@ -45,6 +45,16 @@
#endif #endif
std::string getUserAgent() std::string getUserAgent()
{
return getUserAgentName() + "/" + getUserAgentVersion();
}
std::string getUserAgentName()
{
return "Ryzom";
}
std::string getUserAgentVersion()
{ {
static std::string s_userAgent; static std::string s_userAgent;
@ -52,8 +62,9 @@ std::string getUserAgent()
{ {
char buffer[256]; char buffer[256];
#ifdef REVISION #if defined(REVISION) && defined(RYZOM_COMPATIBILITY_VERSION)
sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH); // we don't need RYZOM_VERSION if we already have a numeric form a.b.c, we just need to append revision to it
sprintf(buffer, "%s.%s-%s-%s", RYZOM_COMPATIBILITY_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH);
#else #else
sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH); sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH);
#endif #endif

View file

@ -18,6 +18,8 @@
#define CL_USER_AGENT_H #define CL_USER_AGENT_H
std::string getUserAgent(); std::string getUserAgent();
std::string getUserAgentName();
std::string getUserAgentVersion();
#endif // CL_USER_AGENT_H #endif // CL_USER_AGENT_H

View file

@ -43,7 +43,7 @@ namespace BRICK_TYPE
TIMED_ACTION, TIMED_ACTION,
BRICK_TYPE_COUNT, BRICK_TYPE_COUNT,
BONUS, BONUS,
UNKNOWN UNKNOWN // Warning: Shouldn't exceed 32
}; };

View file

@ -51,6 +51,7 @@ public:
enum TPeople enum TPeople
{ {
Undefined = -1,
Humanoid = 0, Humanoid = 0,
Playable = 0, Playable = 0,
Fyros = 0, Fyros = 0,

View file

@ -138,7 +138,7 @@ void initRyzomVisualPropertyIndices( CMirroredDataSet& dataset );
#define TYPE_BOT_TRADE_SELECTOR2 uint64 #define TYPE_BOT_TRADE_SELECTOR2 uint64
#define TYPE_EVENT_FACTION_ID uint32 #define TYPE_EVENT_FACTION_ID uint32
#define TYPE_PVP_MODE uint32 #define TYPE_PVP_MODE uint16
#define TYPE_PVP_CLAN uint32 #define TYPE_PVP_CLAN uint32
#define TYPE_FUEL bool #define TYPE_FUEL bool

View file

@ -19,7 +19,7 @@
#define RYZOM_VERSION "ryzomcore" \ #define RYZOM_VERSION "ryzomcore" \
"/" \ "/" \
"v0.11.2" \ "v0.11.3" \
"" ""
#endif // RYZOM_VERSION_H #endif // RYZOM_VERSION_H

View file

@ -292,14 +292,14 @@
</STRUCT> </STRUCT>
<STRUCT> <STRUCT>
<ATOM Name="name" Value="PvpMode"/> <ATOM Name="name" Value="PvpMode"/>
<ATOM Name="type" Value="uint8"/> <ATOM Name="type" Value="uint16"/>
<ATOM Name="persistant" Value="true"/> <ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/> <ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/> <ATOM Name="weight" Value="1"/>
</STRUCT> </STRUCT>
<STRUCT> <STRUCT>
<ATOM Name="name" Value="PvpClan"/> <ATOM Name="name" Value="PvpClan"/>
<ATOM Name="type" Value="uint8"/> <ATOM Name="type" Value="uint32"/>
<ATOM Name="persistant" Value="true"/> <ATOM Name="persistant" Value="true"/>
<ATOM Name="mirror" Value="true"/> <ATOM Name="mirror" Value="true"/>
<ATOM Name="weight" Value="1"/> <ATOM Name="weight" Value="1"/>

View file

@ -11,4 +11,8 @@ NL_ADD_LIB_SUFFIX(ryzom_adminmodules)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS})
IF(WITH_PCH)
ADD_NATIVE_PRECOMPILED_HEADER(ryzom_adminmodules ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp)
ENDIF(WITH_PCH)
INSTALL(TARGETS ryzom_adminmodules LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) INSTALL(TARGETS ryzom_adminmodules LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries)

View file

@ -18,6 +18,7 @@
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
#include "stdpch.h"
#include "admin_modules_itf.h" #include "admin_modules_itf.h"
namespace ADMIN namespace ADMIN

View file

@ -15,6 +15,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "nel/misc/singleton.h" #include "nel/misc/singleton.h"
#include "nel/net/module.h" #include "nel/net/module.h"
#include "nel/net/module_builder_parts.h" #include "nel/net/module_builder_parts.h"

View file

@ -15,6 +15,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "nel/misc/singleton.h" #include "nel/misc/singleton.h"
#include <time.h> #include <time.h>
#include "nel/misc/path.h" #include "nel/misc/path.h"
@ -573,7 +574,7 @@ namespace ADMIN
time_t t = now; time_t t = now;
fprintf(fp, "AESReportDate=%s", ::ctime(&t)); fprintf(fp, "AESReportDate=%s", ::ctime(&t));
fprintf(fp, "NBService=%u\n", _ServiceStates.size()); fprintf(fp, "NBService=%u\n", (uint)_ServiceStates.size());
// output state of each service // output state of each service
TServiceStates::iterator first(_ServiceStates.begin()), last(_ServiceStates.end()); TServiceStates::iterator first(_ServiceStates.begin()), last(_ServiceStates.end());
for (; first != last; ++first) for (; first != last; ++first)

View file

@ -14,6 +14,7 @@
// You should have received a copy of the GNU Affero General Public License // 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/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"
#include <time.h> #include <time.h>
#include "nel/misc/file.h" #include "nel/misc/file.h"

View file

@ -0,0 +1,17 @@
// 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"

View file

@ -0,0 +1,45 @@
// 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 ADMIN_MODULES_STDPCH_H
#define ADMIN_MODULES_STDPCH_H
#include <time.h>
#include <memory>
#include "nel/misc/types_nl.h"
#include "nel/misc/file.h"
#include "nel/misc/hierarchical_timer.h"
#include "nel/misc/mutable_container.h"
#include "nel/misc/path.h"
#include "nel/misc/singleton.h"
#include "nel/misc/sstring.h"
#include "nel/misc/string_conversion.h"
#include "nel/misc/time_nl.h"
#include "nel/net/message.h"
#include "nel/net/module.h"
#include "nel/net/module_builder_parts.h"
#include "nel/net/module_gateway.h"
#include "nel/net/module_manager.h"
#include "nel/net/module_message.h"
#include "nel/net/service.h"
#include "nel/net/unified_network.h"
#include "game_share/callback_adaptor.h"
#include "game_share/utils.h"
#endif

View file

@ -714,9 +714,12 @@ void CBotNpc::sendVPA() // alternate VPA
void CBotNpc::sendVisualProperties() // VisualPropertyA, B, C void CBotNpc::sendVisualProperties() // VisualPropertyA, B, C
{ {
CMirrors::setVisualPropertyA( getSpawn()->dataSetRow(), _VisualPropertyA ); if (getSpawn())
CMirrors::setVisualPropertyB( getSpawn()->dataSetRow(), _VisualPropertyB ); {
CMirrors::setVisualPropertyC( getSpawn()->dataSetRow(), _VisualPropertyC ); CMirrors::setVisualPropertyA( getSpawn()->dataSetRow(), _VisualPropertyA );
CMirrors::setVisualPropertyB( getSpawn()->dataSetRow(), _VisualPropertyB );
CMirrors::setVisualPropertyC( getSpawn()->dataSetRow(), _VisualPropertyC );
}
} }
bool CBotNpc::reSpawn(bool sendMessage) bool CBotNpc::reSpawn(bool sendMessage)

View file

@ -577,10 +577,10 @@ NLMISC_COMMAND(createStaticAIInstance, "Create a new static AIInstance for a giv
CUsedContinent &uc = CUsedContinent::instance(); CUsedContinent &uc = CUsedContinent::instance();
const uint32 in = uc.getInstanceForContinent(args[0]); const uint32 in = uc.getInstanceForContinent(args[0]);
if (in == ~0) if (in == INVALID_AI_INSTANCE)
{ {
nlwarning("The continent '%s' is unknow or not active. Can't create instance, FATAL", args[0].c_str()); nlwarning("The continent '%s' is unknow or not active. Can't create instance, FATAL", args[0].c_str());
nlassert(in != ~0); nlassert(in != INVALID_AI_INSTANCE);
// nlassertex(in != ~0, ("The continent '%s' is unknow or not active. Can't create instance, FATAL", args[0].c_str())); // nlassertex(in != ~0, ("The continent '%s' is unknow or not active. Can't create instance, FATAL", args[0].c_str()));
} }

View file

@ -97,16 +97,16 @@ class CMsgAIFeedback : public NLNET::CTransportClass
public: public:
std::string Message; std::string Message;
CMsgAIFeedback() CMsgAIFeedback()
{ {
} }
CMsgAIFeedback(std::string message) CMsgAIFeedback(const std::string &message)
{ {
Message=message; Message=message;
} }
CMsgAIFeedback(char *msgStr) CMsgAIFeedback(const char *msgStr)
{ {
Message=std::string(msgStr); Message=std::string(msgStr);
} }
@ -120,6 +120,5 @@ public:
virtual void callback (const std::string &name, NLNET::TServiceId id); virtual void callback (const std::string &name, NLNET::TServiceId id);
}; };
#endif #endif

View file

@ -4176,7 +4176,7 @@ NLMISC_COMMAND(loadMap,"load a complete set of primitive files","<map name>")
// check that the continent is active // check that the continent is active
CUsedContinent &uc = CUsedContinent::instance(); CUsedContinent &uc = CUsedContinent::instance();
uint32 in = uc.getInstanceForContinent(continentName); uint32 in = uc.getInstanceForContinent(continentName);
if (in == ~0) if (in == INVALID_AI_INSTANCE)
{ {
log.displayNL("loadMap : while loading map '%s', can't load primitive '%s' coz continent '%s' is not active", log.displayNL("loadMap : while loading map '%s', can't load primitive '%s' coz continent '%s' is not active",
args[0].c_str(), args[0].c_str(),
@ -4216,7 +4216,7 @@ NLMISC_COMMAND(unloadMap,"unload a complete set of primitive files","<map name>"
// check that the continent is active // check that the continent is active
CUsedContinent &uc = CUsedContinent::instance(); CUsedContinent &uc = CUsedContinent::instance();
uint32 in = uc.getInstanceForContinent(continentName); uint32 in = uc.getInstanceForContinent(continentName);
if (in == ~0) if (in == INVALID_AI_INSTANCE)
{ {
log.displayNL("unloadMap : while loading map '%s', can't load primitive '%s' coz continent '%s' is not active", log.displayNL("unloadMap : while loading map '%s', can't load primitive '%s' coz continent '%s' is not active",
args[0].c_str(), args[0].c_str(),

View file

@ -420,7 +420,7 @@ bool getAIInstanceFromGroupName(string& groupName, uint32& instanceNumber)
{ {
string continent = groupName.substr(0, groupName.find('@')); string continent = groupName.substr(0, groupName.find('@'));
uint32 nr = CUsedContinent::instance().getInstanceForContinent(continent); uint32 nr = CUsedContinent::instance().getInstanceForContinent(continent);
if (nr == ~0) if (nr == INVALID_AI_INSTANCE)
{ {
return false; return false;
} }

View file

@ -242,11 +242,11 @@ float CItemCraftParameters::getCraftParameterValue( RM_FABER_STAT_TYPE::TRMStatT
case RM_FABER_STAT_TYPE::ShockWaveProtection: case RM_FABER_STAT_TYPE::ShockWaveProtection:
case RM_FABER_STAT_TYPE::PoisonProtection: case RM_FABER_STAT_TYPE::PoisonProtection:
case RM_FABER_STAT_TYPE::ElectricityProtection: case RM_FABER_STAT_TYPE::ElectricityProtection:
if (Protection1 == statType) if (Protection1 == (PROTECTION_TYPE::TProtectionType)statType)
return Protection1Factor; return Protection1Factor;
else if (Protection2 == statType) else if (Protection2 == (PROTECTION_TYPE::TProtectionType)statType)
return Protection2Factor; return Protection2Factor;
else if (Protection3 == statType) else if (Protection3 == (PROTECTION_TYPE::TProtectionType)statType)
return Protection3Factor; return Protection3Factor;
else return 0.0f; else return 0.0f;
case RM_FABER_STAT_TYPE::DesertResistance: case RM_FABER_STAT_TYPE::DesertResistance:

View file

@ -201,7 +201,7 @@ bool CTpSpawnZone::build(const NLLIGO::CPrimPoint * point)
nlwarning("<CTpSpawnZone build> : no z in CTpSpawnZone '%s'",_Name.c_str() ); nlwarning("<CTpSpawnZone build> : no z in CTpSpawnZone '%s'",_Name.c_str() );
return false; return false;
} }
Point.z = ( float ) atof( value.c_str() ); NLMISC::fromString(value, Point.z);
Point.z = float( sint32 (1000.0f* Point.z) ); Point.z = float( sint32 (1000.0f* Point.z) );
} }
else else

View file

@ -650,7 +650,7 @@ bool CStringManager::parseBlock(const ucstring &block, CPhrase &phrase)
&& (first - clause.String.begin()) == (sint) clause.Replacements[repCount].InsertPlace) && (first - clause.String.begin()) == (sint) clause.Replacements[repCount].InsertPlace)
{ {
// check parameter type // check parameter type
char *subst; const char *subst;
uint paramIndex = clause.Replacements[repCount].ParamIndex; uint paramIndex = clause.Replacements[repCount].ParamIndex;
TParamId &paramId = phrase.Params[paramIndex]->ParamId; TParamId &paramId = phrase.Params[paramIndex]->ParamId;

View file

@ -905,14 +905,16 @@ bool CDatabase::set(RY_PDS::TTableIndex table, RY_PDS::TRowIndex row, RY_PDS::TC
case PDS_float: case PDS_float:
{ {
float data = (float)atof(value.c_str()); float data;
NLMISC::fromString(value, data);
return set(table, row, column, sizeof(data), &data); return set(table, row, column, sizeof(data), &data);
} }
break; break;
case PDS_double: case PDS_double:
{ {
double data = (double)atof(value.c_str()); double data;
NLMISC::fromString(value, data);
return set(table, row, column, sizeof(data), &data); return set(table, row, column, sizeof(data), &data);
} }
break; break;

View file

@ -17,8 +17,9 @@
#include "stdpch.h" #include "stdpch.h"
#include <nel/net/service.h>
#include "used_continent.h" #include "used_continent.h"
#include "nel/net/service.h"
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
@ -105,7 +106,7 @@ uint32 CUsedContinent::getInstanceForContinent(const std::string &continentName)
if (it != _Continents.end()) if (it != _Continents.end())
return it->ContinentInstance; return it->ContinentInstance;
else else
return ~0; return INVALID_AI_INSTANCE;
} }
uint32 CUsedContinent::getInstanceForContinent(CONTINENT::TContinent continentEnum) const uint32 CUsedContinent::getInstanceForContinent(CONTINENT::TContinent continentEnum) const
@ -115,7 +116,7 @@ uint32 CUsedContinent::getInstanceForContinent(CONTINENT::TContinent continentEn
if (it != _Continents.end()) if (it != _Continents.end())
return it->ContinentInstance; return it->ContinentInstance;
else else
return ~0; return INVALID_AI_INSTANCE;
} }
const std::string &CUsedContinent::getContinentForInstance(uint32 instanceNumber) const const std::string &CUsedContinent::getContinentForInstance(uint32 instanceNumber) const

View file

@ -21,6 +21,7 @@
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"
#include "nel/net/service.h" #include "nel/net/service.h"
#include "game_share/continent.h" #include "game_share/continent.h"
#include "game_share/misc_const.h"
#include <algorithm> #include <algorithm>

View file

@ -1,161 +1,161 @@
{block name=content} {block name=content}
<tr><td> <tr><td>
<table width="100%" cellspacing="0" cellpadding="0" border="0"> <table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr bgcolor="{$second_menu_bg_color}" valign="middle"> <tr bgcolor="{$second_menu_bg_color}" valign="middle">
<td> <td>
<table> <table>
<tr> <tr>
<td> <td>
<table cellspacing="0" cellpadding="4"> <table cellspacing="0" cellpadding="4">
<tr> <tr>
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=show_user&id={$target_id}"><h7>Browse User</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=show_user&id={$target_id}"><h7>Browse User</h7></a></td>
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=createticket&user_id={$target_id}"><h7>Send Ticket</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=createticket&user_id={$target_id}"><h7>Send Ticket</h7></a></td>
{if isset($isAdmin) and $isAdmin eq 'TRUE' and $target_id neq 1} {if isset($isAdmin) and $isAdmin eq 'TRUE' and $target_id neq 1}
{if $userPermission eq 1} {if $userPermission eq 1}
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=2"><h7>Make Moderator</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=2"><h7>Make Moderator</h7></a></td>
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=3"><h7>Make Admin</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=3"><h7>Make Admin</h7></a></td>
{else if $userPermission eq 2 } {else if $userPermission eq 2 }
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=1"><h7>Demote to User</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=1"><h7>Demote to User</h7></a></td>
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=3"><h7>Make Admin</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=3"><h7>Make Admin</h7></a></td>
{else if $userPermission eq 3 } {else if $userPermission eq 3 }
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=1"><h7>Demote to User</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=1"><h7>Demote to User</h7></a></td>
<td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=2"><h7>Demote to Moderator</h7></a></td> <td valign="middle" nowrap><a href="{$ingame_webpath}?page=change_permission&user_id={$target_id}&value=2"><h7>Demote to Moderator</h7></a></td>
{/if} {/if}
{/if} {/if}
</tr> </tr>
</table> </table>
</td> </td>
</tr> </tr>
</table> </table>
</td> </td>
</tr> </tr>
<tr> <tr>
<td height="3" bgcolor="#000000"></td> <td height="3" bgcolor="#000000"></td>
</tr> </tr>
</table> </table>
</td></tr> </td></tr>
<tr><td> <tr><td>
<table width="100%" bgcolor="{$title_bg_color}" cellspacing="2"> <table width="100%" bgcolor="{$title_bg_color}" cellspacing="2">
<tr><td height="7"></td><td></td></tr> <tr><td height="7"></td><td></td></tr>
<tr> <tr>
<td width="3%"></td> <td width="3%"></td>
<td width="100%" height="12" valign="middle"><h1>Change Settings of {$target_username}</h1></td> <td width="100%" height="12" valign="middle"><h1>Change Settings of {$target_username}</h1></td>
</tr> </tr>
<tr> <tr>
<td height="5"></td><td></td> <td height="5"></td><td></td>
</tr> </tr>
</table> </table>
</td></tr> </td></tr>
<tr><td> <tr><td>
<table width="100%" cellspacing="0" cellpadding="0" border="0"> <table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr bgcolor="#000000" valign="middle"> <tr bgcolor="#000000" valign="middle">
<td> <td>
<table> <table>
<tr><td height="8"></td></tr> <tr><td height="8"></td></tr>
</table> </table>
</td> </td>
</tr> </tr>
<tr><td height="2"></td></tr> <tr><td height="2"></td></tr>
<tr><td height="1" bgcolor="#000000"></td></tr> <tr><td height="1" bgcolor="#000000"></td></tr>
<tr><td height="10"></td></tr> <tr><td height="10"></td></tr>
<tr valign="middle"> <tr valign="middle">
<td> <td>
<table width="100%" height="100%" cellpadding="10"> <table width="100%" height="100%" cellpadding="10">
<tr><td> <tr><td>
<table width="100%" bgcolor="{$main_tbl_color}" border="2"> <table width="100%" bgcolor="{$main_tbl_color}" border="2">
<tr><td> <tr><td>
<table cellpadding="10"> <table cellpadding="10">
<tr><td> <tr><td>
<p><h3>Change Password</h3></p> <p><h3>Change Password</h3></p>
<form id="changePassword" method="post" action="{$ingame_webpath}?page=settings&id={$target_id}"> <form id="changePassword" method="post" action="{$ingame_webpath}?page=settings&id={$target_id}">
<table cellpadding="1"> <table cellpadding="1">
{if !isset($changesOther) or $changesOther eq "FALSE"} {if !isset($changesOther) or $changesOther eq "FALSE"}
<tr> <tr>
<td valign="middle"> <td valign="middle">
Current Password: Current Password:
</td> </td>
<td> <td>
<input type="text" id="CurrentPass" name="CurrentPass" {if isset($prevCurrentPass)}value="{$prevCurrentPass}"{/if}> <input type="text" id="CurrentPass" name="CurrentPass" {if isset($prevCurrentPass)}value="{$prevCurrentPass}"{/if}>
{if isset($MATCH_ERROR) and $MATCH_ERROR eq "TRUE"}<font color="red">The password is incorrect</font>{/if} {if isset($MATCH_ERROR) and $MATCH_ERROR eq "TRUE"}<font color="red">The password is incorrect</font>{/if}
</td> </td>
</p> </p>
</tr> </tr>
{/if} {/if}
<tr><td valign="middle"> <tr><td valign="middle">
New Password: New Password:
</td><td> </td><td>
<input type="text" class="input-xlarge" id="NewPass" name="NewPass" placeholder="Your new password" {if isset($prevNewPass)}value="{$prevNewPass}"{/if}> <input type="text" class="input-xlarge" id="NewPass" name="NewPass" placeholder="Your new password" {if isset($prevNewPass)}value="{$prevNewPass}"{/if}>
{if isset($NEWPASSWORD_ERROR) and $NEWPASSWORD_ERROR eq "TRUE"}<font color="red">{$newpass_error_message}</font>{/if} {if isset($NEWPASSWORD_ERROR) and $NEWPASSWORD_ERROR eq "TRUE"}<font color="red">{$newpass_error_message}</font>{/if}
</td></tr> </td></tr>
<tr><td valign="middle"> <tr><td valign="middle">
Confirm New Password: Confirm New Password:
</td><td> </td><td>
<input type="text" class="input-xlarge" id="ConfirmNewPass" name="ConfirmNewPass" placeholder="Re-enter the new password" {if isset($prevConfirmNewPass)}value="{$prevConfirmNewPass}"{/if}> <input type="text" class="input-xlarge" id="ConfirmNewPass" name="ConfirmNewPass" placeholder="Re-enter the new password" {if isset($prevConfirmNewPass)}value="{$prevConfirmNewPass}"{/if}>
{if isset($CNEWPASSWORD_ERROR) and $CNEWPASSWORD_ERROR eq "TRUE"}<font color="red">{$confirmnewpass_error_message}</font>{/if} {if isset($CNEWPASSWORD_ERROR) and $CNEWPASSWORD_ERROR eq "TRUE"}<font color="red">{$confirmnewpass_error_message}</font>{/if}
</td></tr> </td></tr>
</table> </table>
{if isset($SUCCESS_PASS) and $SUCCESS_PASS eq "OK"} {if isset($SUCCESS_PASS) and $SUCCESS_PASS eq "OK"}
<p><font color="green"> <p><font color="green">
The password has been changed! The password has been changed!
</font></p> </font></p>
{/if} {/if}
<input type="hidden" name="function" value="change_password"> <input type="hidden" name="function" value="change_password">
<input type="hidden" name="target_id" value="{$target_id}"> <input type="hidden" name="target_id" value="{$target_id}">
<p><input type="submit" value="Change Password"/></p> <p><input type="submit" value="Change Password"/></p>
</form> </form>
</td></tr> </td></tr>
</table> </table>
</td></tr> </td></tr>
</table> </table>
</td></tr> </td></tr>
<tr><td> <tr><td>
<table width="100%" bgcolor="{$main_tbl_color}" border="2"> <table width="100%" bgcolor="{$main_tbl_color}" border="2">
<tr><td> <tr><td>
<table cellpadding="10"> <table cellpadding="10">
<tr><td> <tr><td>
<p><h3>Change Email</h3></p> <p><h3>Change Email</h3></p>
<form id="changeEmail" class="form-vertical" method="post" action="{$ingame_webpath}?page=settings&id={$target_id}"> <form id="changeEmail" class="form-vertical" method="post" action="{$ingame_webpath}?page=settings&id={$target_id}">
<table> <table>
<tr><td valign="middle"> <tr><td valign="middle">
New Email: New Email:
</td><td> </td><td>
<input type="text" class="input-xlarge" id="NewEmail" size="200" name="NewEmail" placeholder="Your new email" {if isset($prevNewEmail)}value="{$prevNewEmail}"{else if isset($current_mail)}value="{$current_mail}"{/if}> <input type="text" class="input-xlarge" id="NewEmail" size="200" name="NewEmail" placeholder="Your new email" {if isset($prevNewEmail)}value="{$prevNewEmail}"{else if isset($current_mail)}value="{$current_mail}"{/if}>
{if isset($EMAIL_ERROR) and $EMAIL_ERROR eq "TRUE"}<font color="red">{$EMAIL}</font>{/if} {if isset($EMAIL_ERROR) and $EMAIL_ERROR eq "TRUE"}<font color="red">{$EMAIL}</font>{/if}
</td></tr> </td></tr>
</table> </table>
{if isset($SUCCESS_MAIL) and $SUCCESS_MAIL eq "OK"} {if isset($SUCCESS_MAIL) and $SUCCESS_MAIL eq "OK"}
<p> <p>
<font color="green">The email has been changed!</green> <font color="green">The email has been changed!</green>
</p> </p>
{/if} {/if}
<input type="hidden" name="function" value="change_mail"> <input type="hidden" name="function" value="change_mail">
<input type="hidden" name="target_id" value="{$target_id}"> <input type="hidden" name="target_id" value="{$target_id}">
<p> <p>
<input type="submit" value="Change Email"/> <input type="submit" value="Change Email"/>
</p> </p>
</form> </form>
</td></tr> </td></tr>
</table> </table>
</td></tr> </td></tr>
</table> </table>
</td></tr> </td></tr>
</table> </table>
</td> </td>
</tr> </tr>
</table> </table>
</td></tr> </td></tr>
{/block} {/block}

View file

@ -10,15 +10,18 @@ IF(WIN32)
SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_SPECS_DIR "plugins")
SET(OVQT_PLUGIN_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins")
SET(OVQT_DATA_DIR ".") SET(OVQT_DATA_DIR ".")
SET(OVQT_IMP_DATA_DIR "${OVQT_DATA_DIR}")
ELSEIF(APPLE) ELSEIF(APPLE)
# TODO: under Mac OS X, don't install but copy files in application package # TODO: under Mac OS X, don't install but copy files in application package
SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_SPECS_DIR "plugins")
SET(OVQT_PLUGIN_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins")
SET(OVQT_DATA_DIR ".") SET(OVQT_DATA_DIR ".")
SET(OVQT_IMP_DATA_DIR "${OVQT_DATA_DIR}")
ELSE(WIN32) ELSE(WIN32)
SET(OVQT_PLUGIN_SPECS_DIR ${NL_SHARE_PREFIX}/studio/plugins) SET(OVQT_PLUGIN_SPECS_DIR ${NL_SHARE_PREFIX}/studio/plugins)
SET(OVQT_PLUGIN_DIR ${NL_LIB_PREFIX}/studio) SET(OVQT_PLUGIN_DIR ${NL_LIB_PREFIX}/studio)
SET(OVQT_DATA_DIR ${NL_SHARE_PREFIX}/studio/data) SET(OVQT_DATA_DIR ${NL_SHARE_PREFIX}/studio/data)
SET(OVQT_IMP_DATA_DIR "${CMAKE_INSTALL_PREFIX}/${OVQT_DATA_DIR}")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ovqt_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ovqt_config.h) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ovqt_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ovqt_config.h)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

View file

@ -11,7 +11,7 @@ FILE(GLOB STUDIO_SRC extension_system/*.h
SET(STUDIO_HDR extension_system/iplugin_manager.h SET(STUDIO_HDR extension_system/iplugin_manager.h
extension_system/plugin_manager.h extension_system/plugin_manager.h
settings_dialog.h startup_settings_dlg.h
splash_screen.h splash_screen.h
pm_watcher.h ) pm_watcher.h )
@ -22,7 +22,7 @@ SET(STUDIO_TS translations/object_viewer_qt_en.ts
translations/object_viewer_qt_de.ts translations/object_viewer_qt_de.ts
translations/object_viewer_qt_ru.ts) translations/object_viewer_qt_ru.ts)
SET(STUDIO_PLUGIN_UIS settings_dialog.ui ) SET(STUDIO_PLUGIN_UIS startup_settings_dlg.ui )
SET(QT_USE_QTGUI TRUE) SET(QT_USE_QTGUI TRUE)
SET(QT_USE_QTOPENGL TRUE) SET(QT_USE_QTOPENGL TRUE)

View file

@ -41,7 +41,7 @@
#include <QtGui/QFileDialog> #include <QtGui/QFileDialog>
#include <QtGui/QInputDialog> #include <QtGui/QInputDialog>
#include "settings_dialog.h" #include "startup_settings_dlg.h"
#include "splash_screen.h" #include "splash_screen.h"
#include "pm_watcher.h" #include "pm_watcher.h"
@ -160,7 +160,7 @@ int main(int argc, char **argv)
{ {
settings->setValue( "FirstRun", false ); settings->setValue( "FirstRun", false );
SettingsDialog sd; StartupSettingsDlg sd;
sd.setSettings( settings ); sd.setSettings( settings );
sd.load(); sd.load();
sd.exec(); sd.exec();

View file

@ -38,6 +38,10 @@ SET(OVQT_CORE_PLUGIN_UIS settings_dialog.ui
SET(OVQT_CORE_PLUGIN_RCS core.qrc) SET(OVQT_CORE_PLUGIN_RCS core.qrc)
IF(NOT WIN32)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/core_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/core_config.h)
ENDIF(NOT WIN32)
SET(QT_USE_QTGUI TRUE) SET(QT_USE_QTGUI TRUE)
SET(QT_USE_QTOPENGL TRUE) SET(QT_USE_QTOPENGL TRUE)

View file

@ -0,0 +1,7 @@
#ifndef CORE_CONFIG_H
#define CORE_CONFIG_H
#define STUDIO_DATA_DIR "${OVQT_IMP_DATA_DIR}"
#endif

View file

@ -28,6 +28,10 @@
#include <QtGui/QWidget> #include <QtGui/QWidget>
#include <QtGui/QFileDialog> #include <QtGui/QFileDialog>
#if !defined NL_OS_WINDOWS
#include "core_config.h"
#endif
namespace Core namespace Core
{ {
@ -118,6 +122,10 @@ void SearchPathsSettingsPage::applySearchPaths()
for (int i = 1; i < remapExt.size(); i += 2) for (int i = 1; i < remapExt.size(); i += 2)
NLMISC::CPath::remapExtension(remapExt.at(i - 1).toUtf8().constData(), remapExt.at(i).toUtf8().constData(), true); NLMISC::CPath::remapExtension(remapExt.at(i - 1).toUtf8().constData(), remapExt.at(i).toUtf8().constData(), true);
#if !defined NL_OS_WINDOWS
NLMISC::CPath::addSearchPath(std::string(STUDIO_DATA_DIR), false, false);
#endif
Q_FOREACH(QString path, paths) Q_FOREACH(QString path, paths)
{ {
NLMISC::CPath::addSearchPath(path.toUtf8().constData(), m_recurse, false); NLMISC::CPath::addSearchPath(path.toUtf8().constData(), m_recurse, false);
@ -216,4 +224,4 @@ void SearchPathsSettingsPage::checkEnabledButton()
m_ui.downToolButton->setEnabled(bEnabled); m_ui.downToolButton->setEnabled(bEnabled);
} }
} /* namespace Core */ } /* namespace Core */

View file

@ -145,11 +145,17 @@ void SettingsDialog::pageSelected()
void SettingsDialog::accept() void SettingsDialog::accept()
{ {
m_applied = true; m_applied = true;
setCursor( Qt::WaitCursor );
Q_FOREACH(IOptionsPage *page, m_pages) Q_FOREACH(IOptionsPage *page, m_pages)
{ {
page->apply(); page->apply();
page->finish(); page->finish();
} }
setCursor( Qt::ArrowCursor );
done(QDialog::Accepted); done(QDialog::Accepted);
} }
@ -162,8 +168,13 @@ void SettingsDialog::reject()
void SettingsDialog::apply() void SettingsDialog::apply()
{ {
setCursor( Qt::WaitCursor );
Q_FOREACH(IOptionsPage *page, m_pages) Q_FOREACH(IOptionsPage *page, m_pages)
page->apply(); page->apply();
setCursor( Qt::ArrowCursor );
m_applied = true; m_applied = true;
} }

View file

@ -19,7 +19,7 @@
#ifndef SETTINGS_DIALOG_H #ifndef SETTINGS_DIALOG_H
#define SETTINGS_DIALOG_H #define SETTINGS_DIALOG_H
#include "../core/ui_settings_dialog.h" #include "ui_settings_dialog.h"
// Qt includes // Qt includes
#include <QtCore/QList> #include <QtCore/QList>

View file

@ -4,6 +4,8 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}
${QT_INCLUDES} ${QT_INCLUDES}
${LUA_INCLUDE_DIR}) ${LUA_INCLUDE_DIR})
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gui_editor_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/gui_editor_config.h)
FILE(GLOB SRC *.cpp *.h) FILE(GLOB SRC *.cpp *.h)
SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h
@ -112,3 +114,11 @@ ELSE(WIN32)
ENDIF(WIN32) ENDIF(WIN32)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/studio_plugin_gui_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/studio_plugin_gui_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d)
FILE(GLOB widgets "${CMAKE_CURRENT_SOURCE_DIR}/widgets/*.xml")
FILE(GLOB expressions "${CMAKE_CURRENT_SOURCE_DIR}/expressions/*.xml")
INSTALL(FILES ${widgets} DESTINATION "${OVQT_DATA_DIR}/widgets" COMPONENT tools3d)
INSTALL(FILES ${expressions} DESTINATION "${OVQT_DATA_DIR}/expressions" COMPONENT tools3d)
INSTALL(DIRECTORY fonts/ DESTINATION ${OVQT_DATA_DIR} COMPONENT data)

View file

@ -21,6 +21,7 @@
#include "expression_loader.h" #include "expression_loader.h"
#include <QMap> #include <QMap>
#include <QDir> #include <QDir>
#include "gui_editor_config.h"
class ExpressionStorePvt class ExpressionStorePvt
{ {
@ -50,7 +51,7 @@ ExpressionStore::~ExpressionStore()
bool ExpressionStore::load() bool ExpressionStore::load()
{ {
QDir d( "expressions" ); QDir d( EXPRESSIONS_DIR );
if( !d.exists() ) if( !d.exists() )
return false; return false;

Binary file not shown.

View file

@ -0,0 +1,8 @@
#ifndef GUI_EDITOR_CONFIG_H
#define GUI_EDITOR_CONFIG_H
#define WIDGETS_DIR "${OVQT_IMP_DATA_DIR}/widgets"
#define EXPRESSIONS_DIR "${OVQT_IMP_DATA_DIR}/expressions"
#endif

View file

@ -188,7 +188,7 @@ namespace GUIEditor
void NelGUICtrl::onGUILoaded() void NelGUICtrl::onGUILoaded()
{ {
timerID = startTimer( 200 ); timerID = startTimer( 25 );
guiLoaded = true; guiLoaded = true;
Q_EMIT guiLoadComplete(); Q_EMIT guiLoadComplete();

View file

@ -25,6 +25,9 @@ QDialog( parent )
{ {
m_ui.setupUi( this ); m_ui.setupUi( this );
// Login texture map - temporaty measure until we add default textures for widgets to use
m_ui.mapList->addItem( "texture_interfaces_v3_login.tga" );
connect( m_ui.okButton, SIGNAL( clicked( bool ) ), this, SLOT( onOKClicked() ) ); connect( m_ui.okButton, SIGNAL( clicked( bool ) ), this, SLOT( onOKClicked() ) );
connect( m_ui.cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( onCancelClicked() ) ); connect( m_ui.cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( onCancelClicked() ) );
connect( m_ui.projectDirTB, SIGNAL( clicked( bool ) ), this, SLOT( onProjectDirTBClicked() ) ); connect( m_ui.projectDirTB, SIGNAL( clicked( bool ) ), this, SLOT( onProjectDirTBClicked() ) );

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