/// <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);
            }
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
 /// <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;
 }
Esempio n. 6
0
 /// <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;
 }