Beispiel #1
0
 public void Translate(XNA.Vector3 delta)
 {
     Position += delta;
     Look += delta;
     _viewUpdated = true;
 }
Beispiel #2
0
        override protected void LoadXML(XmlNode cXmlNode)
        {
            if (null == cXmlNode)  // || _bInitialized
            {
                return;
            }
            _sDebugFolder = cXmlNode.AttributeOrDefaultGet <string>("debug_folder", "");
            XmlNode cNodeChild;
            XmlNode cNodeDevice = cXmlNode;

            _nTargetDevice = cNodeDevice.AttributeGet <byte>("target");
            _sDeviceMake   = cNodeDevice.AttributeValueGet("make");
            if (_sDeviceMake == "aja")
            {
                _nTargetChannel = cNodeDevice.AttributeGet <byte>("target_channel");
            }
            _bDeviceInput = ("input" == cNodeDevice.AttributeValueGet("type"));

            if (!_bDeviceInput)
            {
                if (null != (cNodeChild = cNodeDevice.NodeGet("xna", false)))
                {
                    cXNA             = new XNA();
                    cXNA.bFullScreen = cNodeChild.AttributeOrDefaultGet <bool>("fullscreen", false);
                    cXNA.bPromter    = cNodeChild.AttributeOrDefaultGet <bool>("promter", false);
                    cXNA.nWidth      = cNodeChild.AttributeOrDefaultGet <int>("width", 720);
                    cXNA.nHeight     = cNodeChild.AttributeOrDefaultGet <int>("height", 576);
                    //_nFPS = cNodeDevice.AttributeGet<ushort>("fps"); //TODO
                }
            }

            if (_bAudio = (null != (cNodeChild = cNodeDevice.NodeGet("audio", false))))
            {
                _nAudioSamplesRate      = cNodeChild.AttributeGet <uint>("rate");
                _nAudioChannelsQty      = cNodeChild.AttributeGet <byte>("channels");
                _nAudioBitDepth         = cNodeChild.AttributeGet <byte>("bits");
                _nAudioByteDepth        = (byte)(_nAudioBitDepth / 8);
                _nAudioBytesPerSample   = (byte)(_nAudioByteDepth * _nAudioChannelsQty);
                _nAudioVolumeChangeInDB = cNodeChild.AttributeOrDefaultGet <short>("volume_change", 0);
                if (0 != _nAudioVolumeChangeInDB)
                {
                    _nAudioVolumeChange = (float)Math.Pow(10, (float)_nAudioVolumeChangeInDB / 20);
                }
            }
            if (_bVideo = (null != (cNodeChild = cNodeDevice.NodeGet("video", false))))
            {
                _sVideoFormat        = cNodeChild.AttributeValueGet("format").ToLower();
                _sPixelsFormat       = cNodeChild.AttributeValueGet("pixels").ToLower();
                _sPixelsFormatTarget = cNodeChild.AttributeValueGet("pixels_trg", false);
                _bAnamorph           = cNodeChild.AttributeOrDefaultGet <bool>("anamorph", false);
                if (!_bDeviceInput)
                {
                    _cDownStreamKeyer = null;
                    if (null != (cNodeChild = cNodeChild.NodeGet("keyer", false)))
                    {
                        _cDownStreamKeyer = new DownStreamKeyer();
                        try
                        {
                            _cDownStreamKeyer.nLevel = cNodeChild.AttributeGet <byte>("level");
                        }
                        catch
                        {
                            throw new Exception("указан некорректный формат уровня DSK [level][" + cNodeChild.Name + "]");                             //TODO LANG
                        }
                        try
                        {
                            _cDownStreamKeyer.bInternal = ("internal" == cNodeChild.AttributeValueGet("type"));
                        }
                        catch
                        {
                            throw new Exception("указан некорректный тип DSK [type][" + cNodeChild.Name + "]");                             //TODO LANG
                        }
                    }
                }
            }

            cNodeChild          = cNodeDevice.NodeGet("queue");
            _nQueueDeviceLength = cNodeChild.AttributeGet <byte>("device");
            _nQueuePipeLength   = cNodeChild.AttributeGet <byte>("pipe");
            _nGCFramesInterval  = cNodeChild.AttributeGet <int>("gc_interval");
        }