Пример #1
0
        public static Layer FromXml(XmlNode layerNode, bool someFlag)
        {
            string layerClassName = layerNode.Attributes.GetNamedItem("Type").Value.ToString();

            string overLayType = layerClassName.Replace("TerraViewer.", "");

            if (overLayType == null)
            {
                return(null);
            }

            Layer newLayer = null;

            switch (overLayType)
            {
            case "SpreadSheetLayer":
                newLayer = new SpreadSheetLayer();
                break;

            case "GreatCirlceRouteLayer":
                newLayer = new GreatCirlceRouteLayer();
                break;

            case "GridLayer":
                newLayer = new GridLayer();
                break;

            case "ImageSetLayer":
                newLayer = new ImageSetLayer();
                break;

            case "Object3dLayer":
                newLayer = new Object3dLayer();
                break;

            case "OrbitLayer":
                newLayer = new OrbitLayer();
                break;

            case "VoTableLayer":
                newLayer = new VoTableLayer();
                break;

            default:
                return(null);
            }

            //Force inheritance.
            // TODO: Understand why this breaks in SS .8
            //Script.Literal("for(var method in this){\n /*if (({}).toString.call(this[method]).match(/\\s([a-zA-Z]+)/)[1].toLowerCase() == 'function'){\n*/ newLayer[method] = this[method];/*\n}*/\n}");

            newLayer.InitFromXml(layerNode);

            return(newLayer);
        }
Пример #2
0
        void IScriptable.SetProperty(string name, string value)
        {
            try
            {
                if (LayerManager.CurrentSelection is LayerMap)
                {
                    LayerMap map = LayerManager.CurrentSelection as LayerMap;
                    if (map.Frame.reference == ReferenceFrames.Custom)
                    {
                        ReferenceFrame frame = map.Frame;
                        double         val;
                        if (name.ToLower() == "scale")
                        {
                            val = double.Parse(value);

                            frame.Scale = val;
                            return;
                        }

                        if (name.ToLower().StartsWith("translate."))
                        {
                            val = double.Parse(value);
                            Vector3d translate = frame.translation;
                            switch (name.ToLower())
                            {
                            case "translate.x":
                                translate.X = val;

                                break;

                            case "translate.y":
                                translate.Y = val;
                                break;

                            case "translate.z":
                                translate.Z = val;
                                break;
                            }
                            frame.translation = translate;
                            return;
                        }

                        frame.SetProp(name, value);
                    }
                }
                if (LayerManager.CurrentSelection is Layer)
                {
                    //MethodInvoker doIt = delegate
                    //{
                    //    Earth3d.MainWindow.Text = value;
                    //};

                    //Earth3d.MainWindow.Invoke(doIt);

                    Layer layer = LayerManager.CurrentSelection as Layer;
                    if (layer is Object3dLayer)
                    {
                        Object3dLayer object3d = layer as Object3dLayer;
                        double        val;
                        if (name.ToLower() == "scale")
                        {
                            val = double.Parse(value);

                            object3d.Scale = new Vector3d(val, val, val);
                            return;
                        }

                        if (name.ToLower().StartsWith("translate."))
                        {
                            val = double.Parse(value);
                            Vector3d translate = object3d.Translate;
                            switch (name.ToLower())
                            {
                            case "translate.x":
                                translate.X = val;

                                break;

                            case "translate.y":
                                translate.Y = val;
                                break;

                            case "translate.z":
                                translate.Z = val;
                                break;
                            }
                            object3d.Translate = translate;
                        }

                        layer.SetProp(name, value);
                    }
                }
            }
            catch
            {
            }
        }