¼³Ä¡
ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio
2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼
»ç¿ë °¡´ÉÇÏ´Ù.
¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2015¸¦ ±âÁØÀ¸·Î ÇϰڴÙ.
2
NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â
l º» ¿¹Á¦ ÇÁ·Î±×·¥Àº Pixoneer.NXDL.NNCWÀÇ XncwObserver,
XncwTheater¸¦ ÀÌ¿ëÇÏ¿© NCW ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ È¯°æÀ» ±¸¼ºÇϰí, Pixoneer.NXDL.NEQUIPÀÇ XAircraft Ŭ·¡½º¸¦
ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀ» NCW(Network Centric Warfare) ȯ°æ¿¡ Ãß°¡Çغ¸µµ·Ï
ÇÑ´Ù.
l 3D
¸ðµ¨°ú ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ µ¥ÀÌÅÍ ÆÄÀÏÀ» ÀÌ¿ëÇØ XAircraft¸¦ Ãß°¡ÇÏ¿© 2D/3D Planet View¿¡¼ µµ½ÃÇϰí, 2D PlanetView¿¡¼
¸¶¿ì½º ´õºíŬ¸¯À¸·Î XAircraft¸¦ ¼±ÅÃÇÏ¸é ½Ã¹Ä·¹ÀÌ¼Ç ºñÇàüÀÇ µµ½Ã ¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦
¼³Á¤ÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç °üÃø ¸ðµå¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
2.1.1
Visual Studio 2015À»
ÀÌ¿ëÇÏ¿© ¿¹Á¦ ¡°XDL_PlanetView2¡±ÀÇ ¡°±âº»
ÇÁ·Î±×·¥ ÀÛ¼º¡± ¹æ¹ýÀ» Âü°í·Î ±âº» ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.
ÇÁ·ÎÁ§Æ®
À̸§Àº ¡°XDL_PlanetView4¡±·Î ÇÑ´Ù.
2.1.2
Pixoneer.NXDL.NNCW ¿Í
Pixoneer.NXDL.NEQUIPÀ» ÀÌ¿ëÇϱâ À§Çؼ ¡°NXDLncw.dll¡±À» ÇÁ·ÎÁ§Æ®ÀÇ
ÂüÁ¶·Î Ãß°¡ÇÑ´Ù.
2.1.3
Pixoneer.NXDL.NEQUIP.XAircraft °´Ã¼¸¦ ´Ù·ç±â À§ÇØ
½ÇÇàÆú´õ¿¡ ModelDrivers Æú´õ¸¦ º¹»çÇØ¼ ³Ö´Â´Ù.
º»
¿¹Á¦ ÇÁ·Î±×·¥Àº NCWÀÇ ½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÌ µÇ´Â XAircraft¸¦
ÀÌ¿ëÇÑ´Ù. XAircraft´Â 3D ¸ðµ¨ ÆÄÀÏÀ» ·ÎµùÇÏ¿©
ȸ鿡 µµ½ÃÇÑ´Ù. À̸¦ À§ÇØ ModelDrivers Æú´õ¸¦
½ÇÇàÆú´õ¿¡ º¹»çÇØ ÁÖ¾î¾ß ÇÑ´Ù.
XDL ¶óÀ̺귯¸®°¡ ¼³Ä¡µÈ °æ·Î(c:\Pixoneer\XDL1.2\bin)·Î
À̵¿ÇÏ¿© ¡°ModelDrivers¡± Æú´õ¸¦ º¹»çÇÏ¿© º» ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Æú´õ(.\XDL_PlanetView4\bin\Debug\)¿¡ º¹»çÇÏ¿© ³Ö´Â´Ù.


Number
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
menu1
|
Menu
|
|
¨è
|
separator
|
Separator
|
|
¨é
|
nxPlanetView2D
|
NXPlanetView
|
EarthMode : Planet2D
|
¨ê
|
nxPlanetView3D
|
NXPlanetView
|
EarthMode : Planet3D
|
2.2.1
MainWindow.xaml â¿¡¼ ±âº»À¸·Î »ý¼ºµÈ Grid ·¹À̾ƿô¿¡ Grid.RowDefinitionÀ» ÀÌ¿ëÇÏ¿©
µÎ °³ÀÇ Grid¸¦ »ý¼ºÇÑ´Ù. ù ¹øÂ° Grid¿¡ ¸Þ´º¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù.
º»
¿¹Á¦ ÇÁ·Î±×·¥ÀÇ Menu ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù.

Control Type
|
Header
|
Name
|
MenuItem
|
Model
|
|
MenuItem
|
Add
|
addModelMenuItem
|
2.2.2
½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÎ ºñÇàü¸¦ Ãß°¡ÇÏ´Â ÆäÀÌÁö(WPF)¸¦ ¼Ö·ç¼Ç¿¡ Ãß°¡Çϰí
µðÀÚÀÎÇÑ´Ù.
»õ·Î¿î
Window¸¦ Ãß°¡ÇÏ·Á¸é, Visual StudioÀÇ
¸Þ´º [ÇÁ·ÎÁ§Æ®]-[ÆäÀÌÁö Ãß°¡]¸¦ ¼±ÅÃÇϰųª, [¼Ö·ç¼Ç Ž»ö±â]¿¡¼
ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© »ý¼ºµÇ´Â ¸Þ´º¿¡¼ [Ãß°¡]-[ÆäÀÌÁö]À» ¼±ÅÃÇÑ´Ù.

ºñÇàü Ãß°¡¸¦ À§ÇÑ ÆäÀÌÁöÀÇ À̸§Àº
¡°AddPlane.xaml¡±·Î ÇÑ´Ù.

AddPlane.xamlÀÇ µðÀÚÀÎÀº ¾Æ·¡¿Í °°´Ù.

¹øÈ£
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
textBoxID
|
TextBox
|
|
¨è
|
textBoxName
|
TextBox
|
|
¨é
|
textBoxPathModel
|
TextBox
|
|
¨ê
|
buttonLoadModel
|
Button
|
|
¨ë
|
textBoxPathData
|
TextBox
|
|
¨ì
|
buttonLoadData
|
Button
|
|
¨í
|
buttonOK
|
Button
|
DialogResult : true
|
¨î
|
buttonCancel
|
Button
|
DialogResult : false
|
buttonOK¿Í buttonCancelÀÇ ´õºí Ŭ¸¯ÇÏ¿© ÀÚµ¿À¸·Î
Click À̺¥Æ®¸¦ ±¸ÇöÇϰí DialogResult¸¦
°¢°¢ true¿Í false·Î ¼³Á¤ÇÑ´Ù.

2.2.3
ºñÇàüÀÇ µµ½Ã ¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦ ¼³Á¤ÇÏ´Â ÆäÀÌÁö¸¦ ¼Ö·ç¼Ç¿¡ Ãß°¡ÇÏ°í µðÀÚÀÎÇÑ´Ù.
XDL_PlanetView4¿¡ ¡°PlaneProperty.xaml¡±¶ó´Â
ÆÄÀÏÀ̸§À¸·Î ÆäÀÌÁö¸¦ Ãß°¡ÇÑ´Ù.
PlaneProperty.xamlÀÇ µðÀÚÀÎÀº ¾Æ·¡¿Í °°´Ù.

Number
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
textBoxID
|
TextBox
|
ReadOnly :
True
|
¨è
|
textBoxName
|
TextBox
|
|
¨é
|
textBoxScaleX
|
TextBox
|
|
¨ê
|
textBoxScaleY
|
TextBox
|
|
¨ë
|
textBoxScaleZ
|
TextBox
|
|
¨ì
|
checkBoxScalable
|
CheckBox
|
|
¨í
|
comboBoxCameraMode
|
ComboBox
|
|
¨î
|
checkBoxShowBoundingBox
|
CheckBox
|
|
¨ï
|
buttonOK
|
Button
|
DialogResult
: true
|
¨ð
|
buttonCancel
|
Button
|
DialogResult
: false
|
comboBoxCameraMode´Â
Pixoneer.NXDL.NNCW.XncwObserver.eViewMode¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Ç׸ñÀ» ÆíÁýÇÑ´Ù.

ComboBoxÀÇ ¼Ó¼º¿¡¼ (1)À» Ŭ¸¯Çϸé Ä÷º¼Ç ÆíÁý±â âÀÌ
¶á´Ù. (2)¹øÀ» Ŭ¸¯ÇÏ¿© ComboBoxItemÀ» Ŭ¸¯Çϰí
Ãß°¡¹öưÀ» Ŭ¸¯ÇÏ¿© Ãß°¡ÇÑ´Ù. (3)ÀÇ Content¸¦
Ç׸ñÀ¸·Î´Â ¼ø¼´ë·Î ¡°Back View¡±, ¡°Front View¡±, ¡°Left View¡±, ¡°Right
View¡±, ¡°God¡¯s eye View¡±, ¡°God¡¯s eye View Static¡±, ¡°Bottom View¡±, ¡°Bottom View
Static¡±, ¡°Inside View¡±, ¡°Inside View free¡±, ¡°Far View¡±, ¡°Unusable¡±À» ÀÔ·ÂÇÏ¿©
ComboBoxItemÀ» »ý¼ºÇϵµ·Ï ÇÑ´Ù.
2.3.1
Window.xaml.cs¿¡ NCW¸¦
À§ÇÑ º¯¼ö¸¦ Ãß°¡Çϰí Window.xaml.csÀÇ »ý¼ºÀÚ¿¡¼ ÃʱâÈÇÑ´Ù.
NCW ȯ°æÀ» À§ÇÑ ·¹À̾î´Â Pixoneer.NXDL.NNCW.XncwTheater
xncwTheater º¯¼ö·Î Çϰí, Planet 2D¿Í 3D¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç Áֽø¦ À§ÇÑ ·¹À̾î´Â °¢°¢ Pixoneer.NXDL.NNCW.XncwObserverÀÇ
xncwObserver2D, xncwObserver3D·Î ÇϰڴÙ.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

2.3.2
WindowÀ» ¼±ÅÃÇϰí [¼Ó¼º] â - [À̺¥Æ® ] ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ ¡°Loaded¡± À̺¥Æ®¿Í ¡°Closed¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯ÇÑ´Ù.
Window_Loaded ÇÔ¼ö¿¡´Â
xncwTheater¿Í xncwObserver2D,
xncwObserver3D¸¦ nxPlanetView2D¿Í nxPlanetView3D¿¡ Ãß°¡ÇÏ°í °¢ viewÀÇ Ä«¸Þ¶ó ÃʱⰪÀ»
¼³Á¤ÇÑ´Ù.


2.3.3
½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÎ ¸ðµ¨À» ±¸ÇöÇϱâ À§Çؼ ÇÁ·ÎÁ§Æ®¿¡ »õ·Î¿î Ŭ·¡½º¸¦ Ãß°¡ÇÑ´Ù.
½Ã¹Ä·¹À̼Ç
´ë»óÀÇ ¸ðµ¨Àº MyPlaneÀ¸·Î Çϰí À̸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù.
Visual Studio 2015ÀÇ ¸Þ´º [ÇÁ·ÎÁ§Æ®]-[»õ
Ç׸ñ Ãß°¡] ¶Ç´Â [¼Ö·ç¼Ç Ž»ö±â]¿¡¼ ¡°XDL_PlanetView4¡± ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º
¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© »ý±â´Â ¸Þ´º Áß [Ãß°¡]-[»õ
Ç׸ñ]À» ¼±ÅÃÇÑ´Ù.
¡°»õ Ç׸ñ Ãß°¡¡± ´ëÈ»óÀÚ¿¡¼ ¡°Å¬·¡½º¡±¸¦ ¼±ÅÃÇÑ ÈÄ À̸§À» ¡°MyPlane.cs¡±·Î ÇÏ°í ¡°Ãß°¡¡± ¹öưÀ» Ŭ¸¯ÇÑ´Ù.

2.3.4
Pixoneer.NXDL.NEQUIPT.XAircraft¸¦ »ó¼Ó¹ÞÀº MyPlane Ŭ·¡½º¸¦ ±¸ÇöÇÑ´Ù.
MyPlaneÀº ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ ¸ðµ¨ÆÄÀÏÀ» ·ÎµùÇÏ¿© ÆÄÀÏ¿¡ ÀúÀåµÇ¾î ÀÖ´Â ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅ͸¦ 100 milli seconds¸¶´Ù Àоî À§Ä¡¿Í ÀÚ¼¼¸¦ ¼³Á¤Çϵµ·Ï ÇÑ´Ù. À̸¦
À§Çؼ System.Threading °ü·Ã ±â´É°ú System.IO
°ü·Ã ±â´ÉÀ» »ç¿ëÇÑ´Ù. MyPlane Ŭ·¡½º ±¸ÇöÀº ¾Æ·¡¿Í °°´Ù.

ÀÌ¾î¼ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù.
![// ½Ã¹Ä·¹ÀÌ¼Ç ±â´É ¹× µ¥ÀÌÅ͸¦ ÇØÁ¦ÇÏ´Â ÇÔ¼ö
public void Uninitialize()
{
// ¾²·¹µå°¡ ÀÖ´Â °æ¿ì À̸¦ ÇØÁ¦
if (modelThread != null)
{
runThread = false;
if (modelThread.IsAlive)
modelThread.Join();
modelThread = null;
}
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅͰ¡ ÀÖ´Â °æ¿ì À̸¦ ÇØÁ¦
if (modelFileData != null) modelFileData.Close();
}
// ½Ã¹Ä·¹ÀÌ¼Ç ÇÔ¼ö
public void SimulationThread()
{
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅͰ¡ ¾ø´Â °æ¿ì ÁøÇàÇÏÁö ¾Ê´Â´Ù.
if (modelFileData == null) return;
// ½Ã¹Ä·¹ÀÌ¼Ç ½ÇÇà ¿©ºÎ¸¦ ½ÇÇàÇÏ´Â °ÍÀ¸·Î ¼³Á¤
runThread = true;
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Å©±â ¼³Á¤
int frameDataSize = 14/* ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§¸¦ ÀÌ·ç´Â Ç׸ñ °³¼ö */ * 4 /*float µ¥ÀÌÅÍ Å©±â */;
// Àüü ÆÄÀÏ Å©±â¸¦ ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Å©±â·Î ³ª´©¾î Àüü ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ °³¼ö °è»ê
long dataSize = modelFileData.Length / frameDataSize;
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§¸¦ Àбâ À§ÇÑ buffer »ý¼º
byte[] buff = new byte[frameDataSize];
while (runThread)
{
int idx = 0, count = 0;
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ ÆÄÀÏÀÇ Ã³À½À¸·Î À̵¿
modelFileData.Seek(0, SeekOrigin.Begin);
do
{
if (!runThread) break;
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Àбâ
count = modelFileData.Read(buff, 0, frameDataSize);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ¼Óµµ °¡Á®¿À±â
double speed = BitConverter.ToSingle(buff, 0);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ À§µµ °¡Á®¿À±â
double lat = BitConverter.ToSingle(buff, 4);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ °æµµ °¡Á®¿À±â
double lon = BitConverter.ToSingle(buff, 8);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ ³ôÀÌ °¡Á®¿À±â
double alt = BitConverter.ToSingle(buff, 12);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ yaw °¡Á®¿À±â
double yaw = BitConverter.ToSingle(buff, 16);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ roll °¡Á®¿À±â
double roll = BitConverter.ToSingle(buff, 20);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ pitch °¡Á®¿À±â
double pitch = BitConverter.ToSingle(buff, 24);
XGeoPoint geoPos = new XGeoPoint();
geoPos.lond = lon;
geoPos.latd = lat;
geoPos.hgt = alt;
// ¸ðµ¨ÀÇ À§Ä¡ ¼³Á¤
SetPosition(geoPos);
// ¸ðµ¨ÀÇ ÀÚ¼¼ ¼³Á¤
SetYawPitchRoll(XAngle.FromDegree(yaw),
XAngle.FromDegree(pitch), XAngle.FromDegree(roll));
// 100 milli second µ¿¾È ½Ã¹Ä·¹À̼ÇÀ» ½®´Ù.
Thread.Sleep(100);
idx++;
}
// Thread Á¾·á Á¶°ÇÀ» °Ë»çÇÔ
while ((count == frameDataSize) && (idx < dataSize));
Thread.Sleep(100);
}
}
// ½Ã¹Ä·¹À̼ÇÀ» ½ÃÀÛÇÏ´Â ÇÔ¼ö
public void Start()
{
// ÀÌ¹Ì thread°¡ ½ÇÇàµÈ »óÅÂÀÌ¸é ¸®ÅÏ
if (modelThread != null) return;
// SimulationThread ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ thread »ý¼º
modelThread = new Thread(SimulationThread);
// Thread ½ÃÀÛ
modelThread.Start();
}
}
}](XDL_PlanetView4.files/image016.png)
2.3.5
WindowÀÇ ¸Þ´º [Model]-[Add]¸¦
Ŭ¸¯ÇÏ¿© MyPlaneÀ» Ãß°¡Çϱâ À§ÇÑ AddPlaneŬ·¡½º¸¦
±¸ÇöÇÑ´Ù. AddPlane.xaml âÀ» ¿°í Windowâ¿¡¼
ModelÀ» ºÒ·¯¿À´Â ¹öư°ú DataÀ» ºÒ·¯¿À´Â ¹öưÀ»
´õºí Ŭ¸¯ÇÑ´Ù. ¶ÇÇÑ [OK] ¹öư°ú [Cancel] ¹öưµµ ´õºí Ŭ¸¯ÇÏ¿© À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
AddPlane Ŭ·¡½º¸¦ ÅëÇØ MyPlane »ý¼ºÀ» À§ÇÑ ¸ðµ¨ ÆÄÀÏ
°æ·Î, ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ °æ·Î, ¸ðµ¨ À̸§°ú ¸ðµ¨ ID¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. AddPlane Ŭ·¡½º ±¸ÇöÀº ¾Æ·¡¿Í
°°´Ù.

2.3.6
NCW ȯ°æ¿¡ Ãß°¡ÇÏ´Â Model¸¦
°ü¸®Çϱâ À§ÇØ List °´Ã¼¸¦ MainWindow.xaml¿¡
Ãß°¡ÇÑ´Ù.
List<MyPlane> ÇüÀÇ º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

2.3.7
MyModel Ŭ·¡½º°¡ ½Ã¹Ä·¹À̼ÇÀ» ½ÃÀÛÇϸé 100 milliseconds¸¶´Ù °»½ÅµÇ´Â À§Ä¡¿Í ÀÚ¼¼¿¡ ´ëÇØ ȸ鿡 °»½ÅÇÏ¿© µµ½ÃÇÒ ¼ö ÀÖµµ·Ï thread º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

2.3.8
MenuÀÇ [Model]-[Add]¸¦
Ŭ¸¯ÇÑ ÈÄ [¼Ó¼º]â¿¡¼ ClickÀ» ´õºí Ŭ¸¯ÇÏ¿© À̺¥Æ®ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
[Model]-[Add] ¸Þ´º¸¦ ¼±ÅÃÇØ¼ NCW ȯ°æ¿¡ MyPlane ¸ðµ¨À» Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

2.3.9
Window°¡ ´ÝÈú ¶§ È¸é °»½ÅÀ» À§ÇÑ thread¿Í MyPlaneÀ» ÇØÁ¦ÇÑ´Ù. À̸¦ À§ÇØ Window¿¡ ¡°Closing¡±
À̺¥Æ®¸¦ Ãß°¡ÇÑ´Ù.

2.3.10
¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
¼Ö·ç¼ÇÀ» ½ÇÇàÇÏ¿© ¸Þ´º [Model]-[Add]¸¦ Ŭ¸¯ÇÑ´Ù.

½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨À» Ãß°¡Çϱâ À§Çؼ
¸ðµ¨ ÆÄÀϰú ½Ã¹Ä·¹ÀÌ¼Ç ÆÄÀÏÀ» ¼³Á¤ÇÑ´Ù. µÎ °³ÀÇ ÆÄÀÏÀº ȨÆäÀÌÁö¿¡ ¿¹Á¦ ÆÄÀϰú ÇÔ²² ÀÖ´Â »ùÇõ¥ÀÌÅ͸¦
ÀÌ¿ëÇÏ±æ ¹Ù¶õ´Ù.
AddPlane¿¡¼ ModelÀ» ºÒ·¯¿À´Â ¹öưÀ» Ŭ¸¯Çؼ ¡°uav0216.3DS¡± ÆÄÀÏÀ» ¼±ÅÃÇÑ´Ù. ÀÌ¾î¼ Data¸¦ ºÒ·¯¿À´Â ¹öưÀ» Ŭ¸¯Çؼ ¡°FlightData1.dat¡± ÆÄÀÏÀ»
¼±ÅÃÇÑ´Ù.

ID¿Í Name ¼Ó¼ºµµ ¼³Á¤ÇÏ°í ¡°OK¡±
¹öưÀ» Ŭ¸¯ÇÑ´Ù. »õ·Î¿î ¸ðµ¨ÀÌ Ãß°¡µÇ¸é nxPlanetView2D¿Í
nxPlanetView3D¿¡ ¸ðµ¨ÀÌ Ãß°¡µÇ¾î ȸ鿡 µµ½ÃµÇ°í 100
milliseconds¸¶´Ù ºñÇàüÀÇ À§Ä¡¿Í ÀÚ¼¼°¡ º¯ÈµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

2.3.11
nxPlanetView2D¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨À» ¸¶¿ì½º ´õºí Ŭ¸¯Çϸé ÇØ´ç
¸ðµ¨ÀÇ µµ½Ã ¼Ó¼º ¹× camera ¸ðµå¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
À̸¦ À§ÇØ nxPlanetView2D¿¡ NXPlanetLayer¸¦
Ãß°¡Çϰí xncwTheaterÀÇ PickÇÔ¼ö¿Í OnPicked À̺¥Æ®¸¦ ÀÌ¿ëÇÑ´Ù.
NXPlanetLayer Ŭ·¡½ºÀÇ nxPlanetLayer2D º¯¼ö¸¦
Ãß°¡Çϰí WindowÀÇ Loaded ÇÔ¼ö¿¡¼ nxPlanetView2D¿¡ Ãß°¡Çϰí nxPlanetLayer2DÀÇ
OnWndProc À̺¥Æ® ÇÔ¼ö¿Í xncwTheaterÀÇ
OnPicked À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

2.3.12
MyPlane °´Ã¼ÀÇ µµ½Ã¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦ ¼³Á¤ÇÏ´Â PlaneProperty Ŭ·¡½º¸¦ ±¸ÇöÇÏ´Ù. xncwTheaterÀÇ
Pick ÇÔ¼ö·Î ¼±ÅÃµÈ °´Ã¼°¡ returnµÇ¸é ÀÌ Å¬·¡½º¸¦
ÀÌ¿ëÇÏ¿© °´Ã¼ÀÇ ¼Ó¼ºÀ» º¯°æÇÑ´Ù.
PlaneProperty Window¿¡ Loaded À̺¥Æ®¿Í [OK] ¹öư°ú [Cancel] ¹öư¿¡ Click À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡Çϰí Äڵ带 ÀÛ¼ºÇÑ´Ù. PlanePropertyÀÇ
±¸Çö ³»¿ëÀº ¾Æ·¡¿Í °°´Ù.

2.3.13
xncwTheaterÀÇ OnPicked À̺¥Æ®
ÇÔ¼ö¸¦ Ãß°¡Çϰí PlaneProperty Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¸ðµ¨ÀÇ µµ½Ã¼Ó¼ºÀ» º¯°æÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
xncwTheaterÀÇ OnPicked À̺¥Æ® ÇÔ¼ö´Â xncwTheater_OnPicked·Î ÇÑ´Ù.

2.3.14
¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù. ÇÁ·Î±×·¥¿¡¼ ºñÇàü¸¦ Ãß°¡ÇÑ µÚ nxPlanetView2D¿¡¼ ºñÇàü¸¦ ´õºí Ŭ¸¯ÇÑ´Ù. ºñÇàü°¡
¼±ÅõǸé PlanePropertyÀÌ »ý¼ºµÇ°í ÀÌ Window¿¡¼
CameraMode¸¦ ¡°Front View¡±¸¦ ¼±ÅÃÇϰí
OK ¹öưÀ» Ŭ¸¯ÇÑ´Ù.

|