protected override void Start()
        {
            this.visualization = VisualizationService.GetVisualizations().Single(p => p.Id == VisualizationId);
            this.text          = this.visualization.Name;

            base.Start();
        }
예제 #2
0
        public static void OpenVectorVisualizer(int visualizationId)
        {
            Guard.IsNotNull(visualizationId);

            var lastScene  = Instance.currentScene;
            var visualizer = new Visualizer();

            visualizer.Vizualization = VisualizationService.GetVisualizations().Single(visualization => visualization.Id == visualizationId);
            visualizer.Load();
            Instance.currentScene     = visualizer;
            Instance.vectorVisualizer = visualizer;

            SceneManager.LoadSceneAsync("Scenes/VectorVisualizer");

            CloseScene(lastScene);
        }
예제 #3
0
        public static bool TryOpenVectorVisualizer(String uri)
        {
            // Parse URI
            // Definition
            // Case 1: "https://vr-vektoren.ch/app/VrVektoren/[section]/[id]"
            //      2: "vrvektoren://[section]/[id]"
            //
            // Example "https://vr-vektoren.ch/app/VrVektoren/tutorial/1"
            // Config:
            string[] avaliableSections = { "tutorial" };

            if (string.IsNullOrWhiteSpace(uri))
            {
                LogDebug("uri is null or size = 0");
                return(false);
            }

            Uri unparsedUrl;

            if (!Uri.TryCreate(uri, UriKind.Absolute, out unparsedUrl))
            {
                LogDebug("Not a valid uri. URI:" + uri);
                return(false);
            }

            if (unparsedUrl.Scheme != "vrvektoren" &&
                !(unparsedUrl.Scheme == "https" && unparsedUrl.Authority == "vr-vektoren.ch"))
            {
                LogDebug("not a valid scheme according to definition. URI:" + uri + ", Scheme:" + unparsedUrl.Scheme + ", Authority:" + unparsedUrl.Authority);
                return(false);
            }

            string relativePath;

            if (unparsedUrl.AbsolutePath.Contains("VrVektoren"))
            {
                relativePath = unparsedUrl.AbsolutePath.Split(new string[] { "VrVektoren" }, 2, StringSplitOptions.None)[1];
            }
            else
            {
                relativePath = unparsedUrl.Authority + unparsedUrl.AbsolutePath;
            }

            string[] path = relativePath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
            if (path.Length != 2) // "[section]" / "[id]"
            {
                LogDebug("not a valid path according to definition. URI:" + uri);
                return(false);
            }

            string section  = path[0];
            string idString = path[1];

            if (!avaliableSections.Contains(section))
            {
                LogDebug("not a valid section according to definition. URI:" + uri);
                return(false);
            }

            if (!int.TryParse(idString, out int id))
            {
                LogDebug("not a valid id according to definition. URI:" + uri);
                return(false);
            }

            if (!VisualizationService.GetVisualizations().Any(p => p.Id == id))
            {
                LogDebug("not a existing id:" + idString);
                return(false);
            }

            OpenVectorVisualizer(id);

            // Todo: Remove
            LogDebug(idString);

            return(true);
        }