/// <summary> /// Geometries to mesh topology. /// </summary> /// <returns>The to mesh topology.</returns> /// <param name="geometry">Geometry.</param> protected MeshTopology geometryToMeshTopology(AbstractVisualisation.GeometryType geometry) { switch (geometry) { case AbstractVisualisation.GeometryType.Points: return(MeshTopology.Points); case AbstractVisualisation.GeometryType.Lines: return(MeshTopology.Lines); case AbstractVisualisation.GeometryType.LinesAndDots: return(MeshTopology.Lines); case AbstractVisualisation.GeometryType.Bars: return(MeshTopology.Points); case AbstractVisualisation.GeometryType.Cubes: return(MeshTopology.Points); case AbstractVisualisation.GeometryType.Spheres: return(MeshTopology.Points); default: return(MeshTopology.Points); } }
/// <summary> /// returns a View with the specific geometry configuration /// </summary> /// <param name="configuration"></param> /// <param name="builder"></param> /// <returns></returns> public static Material GetMaterialFromTopology(AbstractVisualisation.GeometryType configuration) { Material mt = null; switch (configuration) { case AbstractVisualisation.GeometryType.Undefined: return(null); case AbstractVisualisation.GeometryType.Points: mt = new Material(Shader.Find("IATK/OutlineDots")); mt.mainTexture = Resources.Load("circle-outline-basic") as Texture2D; mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.Lines: mt = new Material(Shader.Find("IATK/LinesShader")); mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.Quads: mt = new Material(Shader.Find("IATK/Quads")); mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.LinesAndDots: mt = new Material(Shader.Find("IATK/LineAndDotsShader")); mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.Cubes: mt = new Material(Shader.Find("IATK/CubeShader")); mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.Bars: mt = new Material(Shader.Find("IATK/BarShader")); mt.renderQueue = 3000; return(mt); case AbstractVisualisation.GeometryType.Spheres: mt = new Material(Shader.Find("IATK/SphereShader")); mt.mainTexture = Resources.Load("sphere-texture") as Texture2D; mt.renderQueue = 3000; return(mt); default: return(null); } }
public void Serialize(string serializedObjectPath, CreationConfiguration cf) { VisualisationType = cf.VisualisationType.ToString(); //hacky, needed to serialize DimensionFilters objects if (cf.parallelCoordinatesDimensions != null) { parallelCoordinatesDimensionsAttributes = new string[cf.parallelCoordinatesDimensions.Length]; parallelCoordinatesDimensionsMinFilter = new float[cf.parallelCoordinatesDimensions.Length]; parallelCoordinatesDimensionsMaxFilter = new float[cf.parallelCoordinatesDimensions.Length]; parallelCoordinatesDimensionsMinScale = new float[cf.parallelCoordinatesDimensions.Length]; parallelCoordinatesDimensionsMaxScale = new float[cf.parallelCoordinatesDimensions.Length]; for (int i = 0; i < parallelCoordinatesDimensionsAttributes.Length; i++) { parallelCoordinatesDimensionsAttributes[i] = cf.parallelCoordinatesDimensions[i].Attribute; parallelCoordinatesDimensionsMinFilter[i] = cf.parallelCoordinatesDimensions[i].minFilter; parallelCoordinatesDimensionsMaxFilter[i] = cf.parallelCoordinatesDimensions[i].maxFilter; parallelCoordinatesDimensionsMinScale[i] = cf.parallelCoordinatesDimensions[i].minScale; parallelCoordinatesDimensionsMaxScale[i] = cf.parallelCoordinatesDimensions[i].maxScale; } } Geometry = cf.Geometry; AxiesKeys = cf.Axies.Keys.ToArray(); AxiesValues = cf.Axies.Values.ToArray(); ColourDimension = cf.ColourDimension; SizeDimension = cf.SizeDimension; LinkingDimension = cf.LinkingDimension; colourKeys = cf.colourKeys; colour = cf.colour; Size = cf.Size; MinSize = cf.MinSize; MaxSize = cf.MaxSize; VisualisationWidth = cf.VisualisationWidth; VisualisationHeight = cf.VisualisationHeight; VisualisationDepth = cf.VisualisationDepth; File.WriteAllText(serializedObjectPath, JsonUtility.ToJson(this)); }
void RuntimeEditorLoadAndSaveConfiguration() { // get the pre existing views in the hierarchy View[] views = GetComponentsInChildren<View>(); // clear the reference list of views theVisualizationObject.viewList.Clear(); // create the new view reference list foreach (var view in views) { view.BigMesh = view.GetComponentInChildren<BigMesh>(); view.onViewChangeEvent += updateView; // Receive notifications when the view configuration changes theVisualizationObject.viewList.Add(view); } // bind the axes objects by the name of the property in the children hierarchy foreach (Transform child in transform) { AbstractVisualisation.PropertyType pt; try { pt = (AbstractVisualisation.PropertyType)System.Enum.Parse(typeof(AbstractVisualisation.PropertyType), child.gameObject.name); switch (pt) { case AbstractVisualisation.PropertyType.X: theVisualizationObject.X_AXIS = child.gameObject; break; case AbstractVisualisation.PropertyType.Y: theVisualizationObject.Y_AXIS = child.gameObject; break; case AbstractVisualisation.PropertyType.Z: theVisualizationObject.Z_AXIS = child.gameObject; break; default: break; } } catch { //handle parsing property errors here } } // load serialized view configuration from disk if (File.Exists(ConfigurationFileName())) { if (theVisualizationObject.creationConfiguration == null) theVisualizationObject.creationConfiguration = new CreationConfiguration(); if (!dataSource.IsLoaded) dataSource.load(); theVisualizationObject.creationConfiguration.Deserialize(ConfigurationFileName()); theVisualizationObject.creationConfiguration.disableWriting = true; visualisationType = theVisualizationObject.creationConfiguration.VisualisationType; switch (visualisationType) { case AbstractVisualisation.VisualisationTypes.SCATTERPLOT: if (theVisualizationObject.creationConfiguration.Axies.ContainsKey(CreationConfiguration.Axis.X)) xDimension.Attribute = theVisualizationObject.creationConfiguration.Axies[CreationConfiguration.Axis.X]; if (theVisualizationObject.creationConfiguration.Axies.ContainsKey(CreationConfiguration.Axis.Y)) yDimension.Attribute = theVisualizationObject.creationConfiguration.Axies[CreationConfiguration.Axis.Y]; if (theVisualizationObject.creationConfiguration.Axies.ContainsKey(CreationConfiguration.Axis.Z)) zDimension.Attribute = theVisualizationObject.creationConfiguration.Axies[CreationConfiguration.Axis.Z]; linkingDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.LinkingDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.LinkingDimension; geometry = theVisualizationObject.creationConfiguration.Geometry; minSize = theVisualizationObject.creationConfiguration.MinSize; maxSize = theVisualizationObject.creationConfiguration.MaxSize; theVisualizationObject.CreateVisualisation(); updateViewProperties(AbstractVisualisation.PropertyType.SizeValues); updateViewProperties(AbstractVisualisation.PropertyType.X); updateViewProperties(AbstractVisualisation.PropertyType.Y); updateViewProperties(AbstractVisualisation.PropertyType.Z); updateViewProperties(AbstractVisualisation.PropertyType.GeometryType); updateViewProperties(AbstractVisualisation.PropertyType.LinkingDimension); colourDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.ColourDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.ColourDimension; sizeDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.SizeDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.SizeDimension; dimensionColour = theVisualizationObject.creationConfiguration.colourKeys; colour = theVisualizationObject.creationConfiguration.colour; updateViewProperties(AbstractVisualisation.PropertyType.Size); updateViewProperties(AbstractVisualisation.PropertyType.Colour); width = theVisualizationObject.creationConfiguration.VisualisationWidth; height = theVisualizationObject.creationConfiguration.VisualisationHeight; depth = theVisualizationObject.creationConfiguration.VisualisationDepth; updateViewProperties(AbstractVisualisation.PropertyType.Scaling); break; case AbstractVisualisation.VisualisationTypes.SCATTERPLOT_MATRIX: linkingDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.LinkingDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.LinkingDimension; geometry = theVisualizationObject.creationConfiguration.Geometry; minSize = theVisualizationObject.creationConfiguration.MinSize; maxSize = theVisualizationObject.creationConfiguration.MaxSize; theVisualizationObject.CreateVisualisation(); updateViewProperties(AbstractVisualisation.PropertyType.SizeValues); updateViewProperties(AbstractVisualisation.PropertyType.X); updateViewProperties(AbstractVisualisation.PropertyType.Y); updateViewProperties(AbstractVisualisation.PropertyType.Z); updateViewProperties(AbstractVisualisation.PropertyType.GeometryType); updateViewProperties(AbstractVisualisation.PropertyType.LinkingDimension); theVisualizationObject.creationConfiguration.Deserialize(ConfigurationFileName()); colourDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.ColourDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.ColourDimension; sizeDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.SizeDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.SizeDimension; dimensionColour = theVisualizationObject.creationConfiguration.colourKeys; colour = theVisualizationObject.creationConfiguration.colour; updateViewProperties(AbstractVisualisation.PropertyType.Size); updateViewProperties(AbstractVisualisation.PropertyType.Colour); width = theVisualizationObject.creationConfiguration.VisualisationWidth; height = theVisualizationObject.creationConfiguration.VisualisationHeight; depth = theVisualizationObject.creationConfiguration.VisualisationDepth; updateViewProperties(AbstractVisualisation.PropertyType.Scaling); break; case AbstractVisualisation.VisualisationTypes.PARALLEL_COORDINATES: parallelCoordinatesDimensions = theVisualizationObject.creationConfiguration.parallelCoordinatesDimensions; updateViewProperties(AbstractVisualisation.PropertyType.DimensionChange); size = theVisualizationObject.creationConfiguration.Size; minSize = theVisualizationObject.creationConfiguration.MinSize; maxSize = theVisualizationObject.creationConfiguration.MaxSize; updateViewProperties(AbstractVisualisation.PropertyType.SizeValues); // TEMP_FIX: // Issue: for some reason after updateViewProperties(PropertyType.DimensionChange) call // the creationConfiguration object is overwritten and some properties take old values // the temp fix is to deserialize again to read the correct values again. I suspect this // is because the script is using an old pre-runtime reference. theVisualizationObject.creationConfiguration.Deserialize(ConfigurationFileName()); colourDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.ColourDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.ColourDimension; sizeDimension = string.IsNullOrEmpty(theVisualizationObject.creationConfiguration.SizeDimension) ? "Undefined" : theVisualizationObject.creationConfiguration.SizeDimension; dimensionColour = theVisualizationObject.creationConfiguration.colourKeys; colour = theVisualizationObject.creationConfiguration.colour; updateViewProperties(AbstractVisualisation.PropertyType.Size); updateViewProperties(AbstractVisualisation.PropertyType.Colour); width = theVisualizationObject.creationConfiguration.VisualisationWidth; height = theVisualizationObject.creationConfiguration.VisualisationHeight; depth = theVisualizationObject.creationConfiguration.VisualisationDepth; updateViewProperties(AbstractVisualisation.PropertyType.Scaling); break; case AbstractVisualisation.VisualisationTypes.GRAPH_LAYOUT: break; default: break; } theVisualizationObject.creationConfiguration.disableWriting = false; } }
/// <summary> /// Initializes a new instance of the <see cref="IATK.VisualisationCreator+CreationConfiguration"/> class. /// </summary> /// <param name="geometry"></param> /// <param name="axies"></param> /// <param name="colourDimension"></param> /// <param name="sizeDimension"></param> public CreationConfiguration(AbstractVisualisation.GeometryType geometry, Dictionary <Axis, string> axies, string colourDimension, string sizeDimension) : this(geometry, axies) { ColourDimension = colourDimension; SizeDimension = SizeDimension; }
/// <summary> /// Initializes a new instance of the <see cref="IATK.VisualisationCreator+CreationConfiguration"/> class. /// </summary> /// <param name="geometry">Geometry.</param> /// <param name="axies">Axies.</param> public CreationConfiguration(AbstractVisualisation.GeometryType geometry, Dictionary <Axis, string> axies) { Geometry = geometry; Axies = axies; }