Monthly Log 2016. 4.

### Apr 2016

#### 2016-04-30
Core Layer
* FBStringLib
  * Added BitManipulator
    * BigEndian<->LittleEndian
    * Data conversion functions
  * RealArray ConvertBytesToReals(const ByteArray& source, PODTypes sourceType, Endianness encodeType);
  * RealArray ConvertBytesToReals(char* source, size_t size, PODTypes sourceType, Endianness encodeType);
  * RealArray ConvertBytesToRealsEndianSwap(char* source, size_t size, PODTypes sourceType);
  * Added functions
    * void RemoveNewLine(std::string& str);
* void ReplaceCharacter(char* s, const std::string& target, char replace);
* void StripBoth(std::string& str);
* bool StringContainNoCase(const std::string& string, const std::string& find);
* bool EndsWith(const std::string& str, const char* pattern);
* size_t FindLastIndexOf(const char* sz, char c);
* size_t FindLastIndexOf(const char* sz, char c, size_t startIndex);
* std::string SubString(const char* sz, size_t s, size_t e);
* Endianness GetSystemEndianness();
* FBMathLib
  * Frustum transforming
  * Transform::ApplyForward(...), Transform::ApplyInverse(...) 최적화
  * Added
    * static Mat33 Mat33::FromAxisAngleStatic(const Vec3& axis, Real radian);
* static Mat44 Mat44::FromTranslation(const Vec3& translate);
* static Mat44 Mat44::FromRotationY(Real rotYRadian);
* static Mat44 Mat44::FromRotationX(Real rotXRadian);
* static Mat44 Mat44::FromRotationZ(Real rotZRadian);
* static Mat44 Mat44::FromAxisAngle(const Vec3& axis, Real radian);
* static Mat44 Mat44::FromViewLookAt(const Vec3& eye, const Vec3& center, const Vec3& up);
* static Quat Quat::CreateFromAngleAxis(const Real radian, const Vec3& axis);
* Mat44 MakeViewMatrix(const Vec3& eye, const Vec3& center, const Vec3& up);
* Real ComputePerspectiveNearDistance(Real farDistance, Real farResolution, int depthBits);
* Real ComputePerspectiveMaxNearDistance(Real halfFov, Real distantToObj);
* std::vector<Vec3> ComputePrincipalAxes(const Real* coordinates, int numelem, int stride);
* std::pair<Vec3, Vec3> ComputeExtrema(const Vec3* points, int numElem)
* Vec2ITuple Vec2I::ToTuple() const;
* Intersection class
  Represents the collision result: collision point, normal, length.
  * Changed class names
    * Plane3 -> Plane3
* Ray3 -> Ray

* FBFileSystem
  * Added functions
    * static FILE* FileSystem::OpenFile(const char* path, const char* mode, errno_t* errorNo = 0);
  Opne a file with out sharing.
* static FILE* FileSystem::::OpenFileShared(const char* path, const char* mode, SharingMode sharingMode, errno_t* errorNo = 0);
  Open a file with the sharing mode specified in sharingMode parameter.
* static FILE* FileSystem::::OpenFileByMode(const char* path, const char* mode, errno_t* errorNo = 0);
  When mode has 'r' flag, open with read sharing mode, otherwise no sharing.
* static std::string FileSystem::TempFileName(const char* prefix, const char* suffix);
* static void FileSystem::ReplaceIllegalFileNameCharacters(std::string& filepath);  
* static bool FileSystem::CanWrite(const char* filepath);  
* static void FileSystem::SetLastModified(const char* filepath);  
* static time_t FileSystem::GetLastModified(const char* filepath);  
* static std::string FileSystem::FormPath(int n, ...);  
  * Added class
    * FileSystem::Open     
* File  
* FBNetwork
  * Integrated CURL
    * URL_FILE *url_fopen(const char *url, const char *operation);
* void url_fclose(URL_FILE *file);
* etc...
  * Added
    * class Connection  
* static class Network  

* FBThreadLib
  * fixed bug in FB_READ_WRITE_CS
  * Added: bool TaskScheduler::IsFull()
* FBTimer
  * Fixed bug in class Profiler's hierarchical log writing bug
* TinyXmlLib
  * Added XMLHelper
Engine Libraries 
* FBRenderer
* equirectangular sky mapping
* Frustum information in class Camera now moved into FBMathLib/Frustum.h
* Added the vertex buffer cache.
* Fixed bug in forced wireframe mode
* VertexBuffer data now can be update with the following buffer if the buffer usage is not Dynamic and Immutable.
  * VertexBuffer::UpdateData(void* data)
* FBRendererD3D11
* Fixed: Color/Depth buffer doesn't have pixel format info.
* FBSceneObjectFactory
  * MeshObject : Position binding fuction for manual rendering.
  * SkySphere : setting .dae mesh.
Facade&Dedicated Layer
* FBPhysics
  * Prevent double registering of RigidBody.
  * Root component name is also sent to lua event function.
  * Fixed a crash in ListBox::ClearItemProperties()
  * Fixed a crash in ListBoxDataSet::FindRowIndexWithKey(...)
  * Added lua interface : int GetComponentFinalPos(lua_State* L);
* 182 files changed, 6933 insertions(+), 2083 deletions(-)