public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { CoreVectorLayerProperties coreOptions = (CoreVectorLayerProperties)EditorHelper.GetTargetObjectOfProperty(property); EditorGUI.BeginProperty(position, null, property); var primitiveType = property.FindPropertyRelative("geometryType"); var primitiveTypeLabel = new GUIContent { text = "Primitive Type", tooltip = "Primitive geometry type of the visualizer, allowed primitives - point, line, polygon." }; var displayNames = primitiveType.enumDisplayNames; int count = primitiveType.enumDisplayNames.Length; if (!_isGUIContentSet) { _primitiveTypeContent = new GUIContent[count]; for (int extIdx = 0; extIdx < count; extIdx++) { _primitiveTypeContent[extIdx] = new GUIContent { text = displayNames[extIdx], tooltip = EnumExtensions.Description((VectorPrimitiveType)extIdx), }; } _isGUIContentSet = true; } primitiveType.enumValueIndex = EditorGUILayout.Popup(primitiveTypeLabel, primitiveType.enumValueIndex, _primitiveTypeContent); EditorHelper.CheckForModifiedProperty(primitiveType, coreOptions); if ((VectorPrimitiveType)primitiveType.enumValueIndex == VectorPrimitiveType.Line) { EditorGUILayout.PropertyField(property.FindPropertyRelative("lineWidth")); EditorHelper.CheckForModifiedProperty(property.FindPropertyRelative("lineWidth"), coreOptions); } EditorGUI.EndProperty(); }
/// <summary> /// Sets the sub layer properties for the newly added layer /// </summary> /// <param name="subLayer">Sub layer.</param> void SetSubLayerProps(SerializedProperty subLayer) { subLayer.FindPropertyRelative("coreOptions.sublayerName").stringValue = subLayerProperties.coreOptions.sublayerName; subLayer.FindPropertyRelative("presetFeatureType").enumValueIndex = (int)subLayerProperties.presetFeatureType; // Set defaults here because SerializedProperty copies the previous element. var subLayerCoreOptions = subLayer.FindPropertyRelative("coreOptions"); CoreVectorLayerProperties coreOptions = subLayerProperties.coreOptions; subLayerCoreOptions.FindPropertyRelative("isActive").boolValue = coreOptions.isActive; subLayerCoreOptions.FindPropertyRelative("layerName").stringValue = coreOptions.layerName; subLayerCoreOptions.FindPropertyRelative("geometryType").enumValueIndex = (int)coreOptions.geometryType; subLayerCoreOptions.FindPropertyRelative("snapToTerrain").boolValue = coreOptions.snapToTerrain; subLayerCoreOptions.FindPropertyRelative("combineMeshes").boolValue = coreOptions.combineMeshes; var subLayerlineGeometryOptions = subLayer.FindPropertyRelative("lineGeometryOptions"); var lineGeometryOptions = subLayerProperties.lineGeometryOptions; subLayerlineGeometryOptions.FindPropertyRelative("Width").floatValue = lineGeometryOptions.Width; subLayerlineGeometryOptions.FindPropertyRelative("CapType").enumValueIndex = (int)lineGeometryOptions.CapType; subLayerlineGeometryOptions.FindPropertyRelative("JoinType").enumValueIndex = (int)lineGeometryOptions.JoinType; subLayerlineGeometryOptions.FindPropertyRelative("MiterLimit").floatValue = lineGeometryOptions.MiterLimit; subLayerlineGeometryOptions.FindPropertyRelative("RoundLimit").floatValue = lineGeometryOptions.RoundLimit; var subLayerExtrusionOptions = subLayer.FindPropertyRelative("extrusionOptions"); var extrusionOptions = subLayerProperties.extrusionOptions; subLayerExtrusionOptions.FindPropertyRelative("extrusionType").enumValueIndex = (int)extrusionOptions.extrusionType; subLayerExtrusionOptions.FindPropertyRelative("extrusionGeometryType").enumValueIndex = (int)extrusionOptions.extrusionGeometryType; subLayerExtrusionOptions.FindPropertyRelative("propertyName").stringValue = extrusionOptions.propertyName; subLayerExtrusionOptions.FindPropertyRelative("extrusionScaleFactor").floatValue = extrusionOptions.extrusionScaleFactor; subLayerExtrusionOptions.FindPropertyRelative("maximumHeight").floatValue = extrusionOptions.maximumHeight; var subLayerFilterOptions = subLayer.FindPropertyRelative("filterOptions"); var filterOptions = subLayerProperties.filterOptions; subLayerFilterOptions.FindPropertyRelative("filters").ClearArray(); subLayerFilterOptions.FindPropertyRelative("combinerType").enumValueIndex = (int)filterOptions.combinerType; //Add any future filter related assignments here var subLayerGeometryMaterialOptions = subLayer.FindPropertyRelative("materialOptions"); var materialOptions = subLayerProperties.materialOptions; subLayerGeometryMaterialOptions.FindPropertyRelative("style").enumValueIndex = (int)materialOptions.style; var mats = subLayerGeometryMaterialOptions.FindPropertyRelative("materials"); mats.arraySize = 2; var topMatArray = mats.GetArrayElementAtIndex(0).FindPropertyRelative("Materials"); var sideMatArray = mats.GetArrayElementAtIndex(1).FindPropertyRelative("Materials"); if (topMatArray.arraySize == 0) { topMatArray.arraySize = 1; } if (sideMatArray.arraySize == 0) { sideMatArray.arraySize = 1; } var topMat = topMatArray.GetArrayElementAtIndex(0); var sideMat = sideMatArray.GetArrayElementAtIndex(0); var atlas = subLayerGeometryMaterialOptions.FindPropertyRelative("atlasInfo"); var palette = subLayerGeometryMaterialOptions.FindPropertyRelative("colorPalette"); var lightStyleOpacity = subLayerGeometryMaterialOptions.FindPropertyRelative("lightStyleOpacity"); var darkStyleOpacity = subLayerGeometryMaterialOptions.FindPropertyRelative("darkStyleOpacity"); var colorStyleColor = subLayerGeometryMaterialOptions.FindPropertyRelative("colorStyleColor"); var customStyleOptions = subLayerGeometryMaterialOptions.FindPropertyRelative("customStyleOptions"); topMat.objectReferenceValue = materialOptions.materials[0].Materials[0]; sideMat.objectReferenceValue = materialOptions.materials[1].Materials[0]; atlas.objectReferenceValue = materialOptions.atlasInfo; palette.objectReferenceValue = materialOptions.colorPalette; lightStyleOpacity.floatValue = materialOptions.lightStyleOpacity; darkStyleOpacity.floatValue = materialOptions.darkStyleOpacity; colorStyleColor.colorValue = materialOptions.colorStyleColor; //set custom style options. var customMats = customStyleOptions.FindPropertyRelative("materials"); customMats.arraySize = 2; var customTopMatArray = customMats.GetArrayElementAtIndex(0).FindPropertyRelative("Materials"); var customSideMatArray = customMats.GetArrayElementAtIndex(1).FindPropertyRelative("Materials"); if (customTopMatArray.arraySize == 0) { customTopMatArray.arraySize = 1; } if (customSideMatArray.arraySize == 0) { customSideMatArray.arraySize = 1; } var customTopMat = customTopMatArray.GetArrayElementAtIndex(0); var customSideMat = customSideMatArray.GetArrayElementAtIndex(0); customTopMat.objectReferenceValue = materialOptions.customStyleOptions.materials[0].Materials[0]; customSideMat.objectReferenceValue = materialOptions.customStyleOptions.materials[1].Materials[0]; customStyleOptions.FindPropertyRelative("atlasInfo").objectReferenceValue = materialOptions.customStyleOptions.atlasInfo; customStyleOptions.FindPropertyRelative("colorPalette").objectReferenceValue = materialOptions.customStyleOptions.colorPalette; subLayer.FindPropertyRelative("buildingsWithUniqueIds").boolValue = subLayerProperties.buildingsWithUniqueIds; subLayer.FindPropertyRelative("moveFeaturePositionTo").enumValueIndex = (int)subLayerProperties.moveFeaturePositionTo; subLayer.FindPropertyRelative("MeshModifiers").ClearArray(); subLayer.FindPropertyRelative("GoModifiers").ClearArray(); var subLayerColliderOptions = subLayer.FindPropertyRelative("colliderOptions"); subLayerColliderOptions.FindPropertyRelative("colliderType").enumValueIndex = (int)subLayerProperties.colliderOptions.colliderType; }
/// <summary> /// Sets the sub layer properties for the newly added layer /// </summary> /// <param name="subLayer">Sub layer.</param> void SetSubLayerProps(SerializedProperty subLayer) { subLayer.FindPropertyRelative("coreOptions.sublayerName").stringValue = subLayerProperties.coreOptions.sublayerName; subLayer.FindPropertyRelative("presetFeatureType").enumValueIndex = (int)subLayerProperties.presetFeatureType; // Set defaults here because SerializedProperty copies the previous element. var subLayerCoreOptions = subLayer.FindPropertyRelative("coreOptions"); CoreVectorLayerProperties coreOptions = subLayerProperties.coreOptions; subLayerCoreOptions.FindPropertyRelative("isActive").boolValue = coreOptions.isActive; subLayerCoreOptions.FindPropertyRelative("layerName").stringValue = coreOptions.layerName; subLayerCoreOptions.FindPropertyRelative("geometryType").enumValueIndex = (int)coreOptions.geometryType; subLayerCoreOptions.FindPropertyRelative("snapToTerrain").boolValue = coreOptions.snapToTerrain; subLayerCoreOptions.FindPropertyRelative("combineMeshes").boolValue = coreOptions.combineMeshes; subLayerCoreOptions.FindPropertyRelative("lineWidth").floatValue = coreOptions.lineWidth; var subLayerExtrusionOptions = subLayer.FindPropertyRelative("extrusionOptions"); var extrusionOptions = subLayerProperties.extrusionOptions; subLayerExtrusionOptions.FindPropertyRelative("extrusionType").enumValueIndex = (int)extrusionOptions.extrusionType; subLayerExtrusionOptions.FindPropertyRelative("extrusionGeometryType").enumValueIndex = (int)extrusionOptions.extrusionGeometryType; subLayerExtrusionOptions.FindPropertyRelative("propertyName").stringValue = extrusionOptions.propertyName; subLayerExtrusionOptions.FindPropertyRelative("extrusionScaleFactor").floatValue = extrusionOptions.extrusionScaleFactor; var subLayerFilterOptions = subLayer.FindPropertyRelative("filterOptions"); var filterOptions = subLayerProperties.filterOptions; subLayerFilterOptions.FindPropertyRelative("filters").ClearArray(); subLayerFilterOptions.FindPropertyRelative("combinerType").enumValueIndex = (int)filterOptions.combinerType; //Add any future filter related assignments here var subLayerGeometryMaterialOptions = subLayer.FindPropertyRelative("materialOptions"); var materialOptions = subLayerProperties.materialOptions; subLayerGeometryMaterialOptions.FindPropertyRelative("style").enumValueIndex = (int)materialOptions.style; GeometryMaterialOptions geometryMaterialOptionsReference = MapboxDefaultStyles.GetDefaultAssets(); var mats = subLayerGeometryMaterialOptions.FindPropertyRelative("materials"); mats.arraySize = 2; var topMatArray = mats.GetArrayElementAtIndex(0).FindPropertyRelative("Materials"); var sideMatArray = mats.GetArrayElementAtIndex(1).FindPropertyRelative("Materials"); if (topMatArray.arraySize == 0) { topMatArray.arraySize = 1; } if (sideMatArray.arraySize == 0) { sideMatArray.arraySize = 1; } var topMat = topMatArray.GetArrayElementAtIndex(0); var sideMat = sideMatArray.GetArrayElementAtIndex(0); var atlas = subLayerGeometryMaterialOptions.FindPropertyRelative("atlasInfo"); var palette = subLayerGeometryMaterialOptions.FindPropertyRelative("colorPalette"); topMat.objectReferenceValue = geometryMaterialOptionsReference.materials[0].Materials[0]; sideMat.objectReferenceValue = geometryMaterialOptionsReference.materials[1].Materials[0]; atlas.objectReferenceValue = geometryMaterialOptionsReference.atlasInfo; palette.objectReferenceValue = geometryMaterialOptionsReference.colorPalette; subLayer.FindPropertyRelative("buildingsWithUniqueIds").boolValue = subLayerProperties.buildingsWithUniqueIds; subLayer.FindPropertyRelative("moveFeaturePositionTo").enumValueIndex = (int)subLayerProperties.moveFeaturePositionTo; subLayer.FindPropertyRelative("MeshModifiers").ClearArray(); subLayer.FindPropertyRelative("GoModifiers").ClearArray(); var subLayerColliderOptions = subLayer.FindPropertyRelative("colliderOptions"); subLayerColliderOptions.FindPropertyRelative("colliderType").enumValueIndex = (int)subLayerProperties.colliderOptions.colliderType; }