Click or drag to resize
XDL

XncwObserver Class

이 레이어는 NCW 공간에서 관측 장비를 구현하다. Integrated for C4ISR / C4ISTAR / C5ISR... Standard solutions after
Inheritance Hierarchy
SystemObject
  SystemMarshalByRefObject
    System.ComponentModelComponent
      System.Windows.FormsControl
        System.Windows.FormsScrollableControl
          System.Windows.FormsContainerControl
            System.Windows.FormsUserControl
              Pixoneer.NXDL.NGRNXRenderLayer
                Pixoneer.NXDL.NNCWXncwObserver

Namespace: Pixoneer.NXDL.NNCW
Assembly: NXDLncw (in NXDLncw.dll) Version: 2.0.3.38
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 propertyLayerCapture 레이어의 갈무리 여부를 확인하거나 설정한다. (기본값: true)
(Overrides NXRenderLayerLayerCapture)
Public propertyLayerVisible 레이어의 도시여부를 확인하거나 설정한다. (기본값: true)
(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
Example
예제 #1:
C#
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