## 概要

SWIGというツールを使ってC++を呼び出す.NETのラッパが作られています。 ほとんどの場合、本家Irrlichtと同名のクラス、同名メソッドを使うことが出来ます。

## 変更点

### 1. 名前空間は全てIrrlichtNetSwigになります。

### 2. グローバル関数はIrrlichtNetクラスのメソッドになっています。

### 3. SWIGTYPE_p_voidなど、"SWIGTYPE_"で始まる型はポインタの戻り値やポインタのポインタなど.NETで対応できない型が使われているため使えません。

### 4. "I"から始まるクラスであってもinterfaceではなくclassです。これは本家Irrlichtの命名規則のためです。

### 5. drop、dropOwnメソッドはDisposeメソッドから呼ばれます。自ら使う必要はありません。

### 6. 継承関係があってもC#側でキャストは出来ません。「クラス名.cast(オブジェクト)」を使用してください。

### 7. "_"で始まるクラス・メソッドは非推奨です。内部的に使用しているものです。

### 8. 以下のクラスは.NET側で継承してIrrlichtに渡すことができます。

- IEventReceiver
- ISceneNode_ForInheritance
- IShaderConstantSetCallBack
- IMeshLoader
- ISceneNodeAnimator
- IFileReadCallBack_ForInheritance
- IFileSystem_ForInheritance
- IReadFile_ForInheritance
- IWriteFile_ForInheritance

### 9. 以下のメソッド名を変更しています。(.NETで名前がかぶるため)

オリジナル | 変更後
lock | Lock

### 10. 以下のメソッドを追加しています。

追加先クラス | 追加メソッド | メソッドの説明
IrrlichtDevice | BindEventRecieveControl | .NET側のボタンにIrrlichtから描画させる場合にイベントをIrrlichtが受け取れるようにします
ITexture | ImageDotNet | .NETのBitmapとテクスチャを相互変換します。
ITexture | Modify | 引数に渡されたコールバック関数に従ってテクスチャを加工します。
ITexture | Retrieve | テクスチャ上の各点の色を取り出します。
SMaterial | CopyFrom | 引数に渡されたオブジェクトのメンバから値をコピーします。

### 11. 以下のメソッドにインデクサを追加しています。

- IVertexBuffer
- CVertexBuffer
- SMD3QuaterionTagList
- arrayByte
- arrayInt
- arrayRectInt
- IrrStringc
- IrrStringw
- arrayVector3df
- arraySGUISpriteFrame
- arraySGUISprite
- arrayQuake3SShader
- arrayQuake3SVarGroup
- arrayQuake3SVariable
- arraySMD3QuaterionTag
- arraySMD3TexCoord
- arraySMD3Vertex
- arraySJoystickInfo
- arrayS3DVertex2TCoords
- arrayS3DVertexTangents
- arrayS3DVertex
- arrayUInt
- arrayUShort
- arrayMyJoint
- arrayMyRotationKey
- arrayMyScaleKey
- arrayMyPositionKey
- arrayMyWeight
- CMatrix4f
- arrayMeshBuffer
- arrayTexture
- arraySMD3MeshBuffer
- arrayMesh
- arraySceneNode
- arraySSkinMeshBuffer

### 12. 以下のクラス名を変更しています。

オリジナルクラス名 | 変更後クラス名
irr::SEvent::SGUIEvent | MyGUIEvent
irr::SEvent::SMouseInput | MyMouseInput
irr::SEvent::SKeyInput | MyKeyInput
irr::SEvent::SJoystickEvent | MyJoystickEvent
irr::SEvent::SLogEvent | MyLogEvent
irr::SEvent::SUserEvent | MyUserEvent
irr::scene::ISkinnedMesh::SWeight | MyWeight
irr::scene::ISkinnedMesh::SPositionKey | MyPositionKey
irr::scene::ISkinnedMesh::SScaleKey | MyScaleKey
irr::scene::ISkinnedMesh::SRotationKey | MyRotationKey
irr::scene::ISkinnedMesh::SJoint | MyJoint
irr::core::aabbox3d<float> | aabbox3df
irr::core::array<byte> | arrayByte
irr::core::array<int> | arrayInt
irr::core::array<rectInt> | arrayRectInt
irr::core::array<irr::core::stringc> | arrayStringc
irr::core::array<irr::core::stringw> | arrayStringw
irr::core::array<irr::core::vector3df> | arrayVector3df
irr::core::array<irr::gui::SGUISpriteFrame> | arraySGUISpriteFrame
irr::core::array<irr::gui::SGUISprite> | arraySGUISprite
irr::core::array<irr::scene::IMeshBuffer*> | arrayMeshBuffer
irr::core::array<irr::scene::IMesh*> | arrayMesh
irr::core::array<irr::scene::ISceneNode*> | arraySceneNode
irr::core::array<irr::scene::quake3::SShader> | arrayQuake3SShader
irr::core::array<irr::scene::quake3::SVarGroup> | arrayQuake3SVarGroup
irr::core::array<irr::scene::quake3::SVariable> | arrayQuake3SVariable
irr::core::array<irr::scene::SMD3MeshBuffer*> | arraySMD3MeshBuffer
irr::core::array<irr::scene::SMD3QuaterionTag> | arraySMD3QuaterionTag
irr::core::array<irr::scene::SMD3TexCoord> | arraySMD3TexCoord
irr::core::array<irr::scene::SMD3Vertex> | arraySMD3Vertex
irr::core::array<irr::SJoystickInfo> | arraySJoystickInfo
irr::core::array<irr::video::ITexture*> | arrayTexture
irr::core::array<irr::video::S3DVertex2TCoords> | arrayS3DVertex2TCoords
irr::core::array<irr::video::S3DVertexTangents> | arrayS3DVertexTangents
irr::core::array<irr::video::S3DVertex> | arrayS3DVertex
irr::core::array<unsigned int> | arrayUInt
irr::core::array<unsigned short> | arrayUShort
irr::core::array<MyJoint> | arrayMyJoint
irr::core::array<MyRotationKey> | arrayMyRotationKey
irr::core::array<MyScaleKey> | arrayMyScaleKey
irr::core::array<MyPositionKey> | arrayMyPositionKey
irr::core::array<MyWeight> | arrayMyWeight
irr::core::array<SSkinMeshBuffer> | arraySSkinMeshBuffer
irr::core::CMatrix4<float> | CMatrix4f
irr::core::dimension2d<float> | dimension2df
irr::core::dimension2d<int> | dimension2di
irr::core::dimension2d<unsigned int> | dimension2dui
irr::core::line2d<float> | line2df
irr::core::line3d<float> | line3df
irr::core::list<irr::gui::IGUIElement*> | listGUIElement
irr::core::list<irr::scene::ISceneNodeAnimator*> | listSceneNodeAnimator
irr::core::list<irr::scene::ISceneNode*> | listSceneNode
irr::core::plane3d<float> | plane3df
irr::core::position2d<float> | position2df
irr::core::position2d<int> | position2di
irr::core::rect<float> | rectf
irr::core::rect<int> | recti
irr::core::triangle3d<float> | triangle3df
irr::core::vector2d<float> | vector2df
irr::core::vector3d<float> | vector3df
irr::io::IIrrXMLReader<char,irr::io::IXMLBase> | IIrrXMLReaderCXMLBase
irr::io::IIrrXMLReader<char,irr::IReferenceCounted> | IIrrXMLReaderCReferenceCounted
irr::io::IIrrXMLReader<unsigned long,irr::io::IXMLBase> | IIrrXMLReaderLXMLBase
irr::io::IIrrXMLReader<unsigned short,irr::io::IXMLBase> | IIrrXMLReaderUSXMLBase
irr::io::IIrrXMLReader<wchar_t, irr::IReferenceCounted> | IIrrXMLReaderReferenceCounted

## To Do

- My～という名前は良くなかったので元に戻すようにする。