Click or drag to resize
XDL

XncwObserver Class

이 레이어는 NCW 공간에서 관측 장비를 구현하다. Integrated for C4ISR / C4ISTAR / C5ISR... Standard solutions after
Inheritance Hierarchy

Namespace:  Pixoneer.NXDL.NNCW
Assembly:  NXDLncw (in NXDLncw.dll) Version: 1.2.817.72
Syntax
C#
public class XncwObserver : NXRenderLayer

The XncwObserver type exposes the following members.

Constructors
  NameDescription
Public methodXncwObserver
Top
Properties
  NameDescription
Public propertyAutoDelete
객체를 자동적으로 삭제하는지 여부를 확인하거나 설정하는 속성.
Public propertyFollowViewMaxZoom
PlanetView의 MaxZoomIn, MaxZoomOut 설정이 반영되도록 설정하거나, 설정값을 확인한다.
Public propertyInverseMouseButton
마우스의 오른쪽 버튼과 왼쪽버튼의 교환 여부를 확인하거나 설정한다.
Public propertyLayerVisible
레이어의 도시여부를 확인하거나 설정한다.
(Overrides NXRenderLayerLayerVisible.)
Top
Methods
  NameDescription
Public methodAttachTo
PlanetView에 레이어를 첨부한다.
Public methodGetDistance
대상과 시점 간의 거리를 가져온다.
Public methodGetLayerID
레이어 ID를 가져온다.
(Overrides NXRenderLayerGetLayerID.)
Public methodInitialize
내부 초기화 함수. NXPlanetEngine에 의해 자동적으로 호출된다.
(Overrides NXRenderLayerInitialize.)
Public methodSetDistance
대상과 시점 간의 거리를 설정한다.
Public methodSetHeading
뷰에 대한 헤딩을 설정한다.
Public methodSetState
뷰 모드를 변경한다.
Public methodSetTilt
뷰에 대한 기울기를 설정한다.
Public methodSetYawPitchRollOffset
뷰 위치를 설정한다.
Public methodSurveyAutoCenter
2개 이상의 대상 객체에 대해 자동으로 중심 위치를 기준으로 조망한다.
Public methodSurveyNone
뷰 모드를 "Unusable"로 설정하고 카메라를 기본 상태로 설정한다.
Public methodSurveyTargetObj
대상 객체를 특정 뷰 모드로 조망한다.
Top
Examples
예제 #1:
partial class FormMain
{
    public Pixoneer.NXDL.NNCW.XncwObserver xncwObserver;
    private void InitializeComponent()
    {
        this.xncwObserver = new Pixoneer.NXDL.NNCW.XncwObserver();
    }

    private void FormMain_Load(object sender, EventArgs e)
    {
        xncwObserver.AttachTo(nxPlanetView);
    }

    private void textBoxDistance_TextChanged(object sender, EventArgs e)
    {
        xncwObserver.SetDistance(double.Parse(textBoxDistance.Text));

        XAngle rollOff = XAngle.FromDegree(double.Parse(textBoxRollOff.Text));
        XAngle yawOff = XAngle.FromDegree(double.Parse(textBoxYawOff.Text));
        XAngle pitchOff = XAngle.FromDegree(double.Parse(textBoxPitchOff.Text));
        xncwObserver.SetYawPitchRollOffset(yawOff, pitchOff, rollOff);

        XAngle heading = XAngle.FromDegree(double.Parse(textBoxHeading.Text));
        XAngle tilt = XAngle.FromDegree(double.Parse(textBoxTilt.Text));
        xncwObserver.SetHeading(heading);
        xncwObserver.SetTilt(tilt);
        nxPlanetView.RefreshScreen();
    }

    private void listBoxPlanes_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBoxViewMode.SelectedIndex == 0 || comboBoxViewMode.SelectedIndex == 12)
        {
            xncwObserver.SurveyNone();
        }
        else
        {
            int nUUID = listBoxPlanes.SelectedIndex;
            XEquipObj obj = xncwTheater.GetEquipment(nUUID);
            if (obj == null) return;

            Pixoneer.NXDL.NNCW.XncwObserver.eViewMode view = (Pixoneer.NXDL.NNCW.XncwObserver.eViewMode)comboBoxViewMode.SelectedIndex - 1;
            xncwObserver.Survey(obj, view);

            xncwObserver.SetDistance(double.Parse(textBoxDistance.Text));

            XAngle rollOff = XAngle.FromDegree(double.Parse(textBoxRollOff.Text));
            XAngle yawOff = XAngle.FromDegree(double.Parse(textBoxYawOff.Text));
            XAngle pitchOff = XAngle.FromDegree(double.Parse(textBoxPitchOff.Text));
            xncwObserver.SetYawPitchRollOffset(yawOff, pitchOff, rollOff);

            XAngle heading = XAngle.FromDegree(double.Parse(textBoxHeading.Text));
            XAngle tilt = XAngle.FromDegree(double.Parse(textBoxTilt.Text));
            xncwObserver.SetHeading(heading);
            xncwObserver.SetTilt(tilt);
            nxPlanetView.RefreshScreen();
        }
    }

    private void comboBoxViewMode_SelectedIndexChanged(object sender, EventArgs e)
    {
        FreeUsingPlanes();

        if (comboBoxViewMode.SelectedIndex == 0)
        {
            xncwObserver.SurveyNone();
        }
        else if (comboBoxViewMode.SelectedIndex == 12)  // auto center
        {
            if (listBoxSelectedPlanes.Items.Count < 2)
            {
                MessageBox.Show("AC center need 2 target least");
                return;
            }

            ArrayList acTargets = new ArrayList();
            for (int i = 0; i < listBoxSelectedPlanes.Items.Count; i++)
            {
                int nUUID = int.Parse(listBoxSelectedPlanes.Items[i].ToString());
                XEquipObj obj = xncwTheater.GetEquipment(nUUID);
                m_GettedEquips.Add(nUUID);
                if (obj == null) continue;
                acTargets.Add(obj);
            }
            if (acTargets.Count < 2)
            {
                MessageBox.Show("AC center need 2 target least");
                return;
            }

            xncwObserver.SurveyAutoCenter(acTargets);

            XAngle heading = XAngle.FromDegree(double.Parse(textBoxHeading.Text));
            XAngle tilt = XAngle.FromDegree(double.Parse(textBoxTilt.Text));
            xncwObserver.SetHeading(heading);
            xncwObserver.SetTilt(tilt);
            nxPlanetView.RefreshScreen();
        }
        else
        {
            int nUUID = listBoxPlanes.SelectedIndex;
            XEquipObj obj = xncwTheater.GetEquipment(nUUID);
            if (obj == null) return; 
            m_GettedEquips.Add(nUUID);

            Pixoneer.NXDL.NNCW.XncwObserver.eViewMode view = (Pixoneer.NXDL.NNCW.XncwObserver.eViewMode)comboBoxViewMode.SelectedIndex - 1;
            xncwObserver.Survey(obj, view);

            xncwObserver.SetDistance(double.Parse(textBoxDistance.Text));

            XAngle rollOff = XAngle.FromDegree(double.Parse(textBoxRollOff.Text));
            XAngle yawOff = XAngle.FromDegree(double.Parse(textBoxYawOff.Text));
            XAngle pitchOff = XAngle.FromDegree(double.Parse(textBoxPitchOff.Text));
            xncwObserver.SetYawPitchRollOffset(yawOff, pitchOff, rollOff);

            XAngle heading = XAngle.FromDegree(double.Parse(textBoxHeading.Text));
            XAngle tilt = XAngle.FromDegree(double.Parse(textBoxTilt.Text));
            xncwObserver.SetHeading(heading);
            xncwObserver.SetTilt(tilt);
            nxPlanetView.RefreshScreen();
        }
    }

    private void textBoxDistance_TextChanged(object sender, EventArgs e)
    {
        xncwObserver.SetDistance(double.Parse(textBoxDistance.Text));

        XAngle rollOff = XAngle.FromDegree(double.Parse(textBoxRollOff.Text));
        XAngle yawOff = XAngle.FromDegree(double.Parse(textBoxYawOff.Text));
        XAngle pitchOff = XAngle.FromDegree(double.Parse(textBoxPitchOff.Text));
        xncwObserver.SetYawPitchRollOffset(yawOff, pitchOff, rollOff);

        XAngle heading = XAngle.FromDegree(double.Parse(textBoxHeading.Text));
        XAngle tilt = XAngle.FromDegree(double.Parse(textBoxTilt.Text));
        xncwObserver.SetHeading(heading);
        xncwObserver.SetTilt(tilt);
        nxPlanetView.RefreshScreen();
    }

}
See Also