Add JSON Export (TODO: merge buttons in Scene @Max)
This commit is contained in:
91
docs/exampleExport.json
Normal file
91
docs/exampleExport.json
Normal file
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"baseModel": true,
|
||||
"modelId": "erlbach",
|
||||
"ports": [
|
||||
{
|
||||
"i": 74,
|
||||
"modelId": "idErlbachPart74",
|
||||
"portId": "portErlbach74"
|
||||
},
|
||||
{
|
||||
"i": 75,
|
||||
"modelId": "idErlbachPart75",
|
||||
"portId": "portErlbach75"
|
||||
},
|
||||
{
|
||||
"i": 76,
|
||||
"modelId": "idErlbachPart76",
|
||||
"portId": "batteriePack"
|
||||
},
|
||||
{
|
||||
"i": 80,
|
||||
"modelId": "idErlbachWheel_LH",
|
||||
"portId": "wheel"
|
||||
},
|
||||
{
|
||||
"i": 81,
|
||||
"modelId": "idErlbachWheel_LV",
|
||||
"portId": "wheel"
|
||||
},
|
||||
{
|
||||
"i": 82,
|
||||
"modelId": "idErlbachWheel_RH",
|
||||
"portId": "wheel"
|
||||
},
|
||||
{
|
||||
"i": 83,
|
||||
"modelId": "idErlbachWheel_RV",
|
||||
"portId": "wheel"
|
||||
},
|
||||
{
|
||||
"i": 84,
|
||||
"modelId": "idErlbachPart84",
|
||||
"portId": "body"
|
||||
},
|
||||
{
|
||||
"i": 85,
|
||||
"modelId": "idErlbachPart85",
|
||||
"portId": "portErlbach85"
|
||||
},
|
||||
{
|
||||
"i": 86,
|
||||
"modelId": "idErlbachPart86",
|
||||
"portId": "portErlbach86"
|
||||
},
|
||||
{
|
||||
"i": 87,
|
||||
"modelId": "idErlbachPart87",
|
||||
"portId": "portErlbach87"
|
||||
},
|
||||
{
|
||||
"i": 88,
|
||||
"modelId": "idErlbachPart88",
|
||||
"portId": "portErlbach88"
|
||||
},
|
||||
{
|
||||
"i": 89,
|
||||
"modelId": "idErlbachPart89",
|
||||
"portId": "portErlbach89"
|
||||
},
|
||||
{
|
||||
"i": 90,
|
||||
"modelId": "idErlbachPart90",
|
||||
"portId": "portErlbach90"
|
||||
},
|
||||
{
|
||||
"i": 91,
|
||||
"modelId": "idErlbachPart91",
|
||||
"portId": "portErlbach91"
|
||||
},
|
||||
{
|
||||
"i": 92,
|
||||
"modelId": "idErlbachPart92",
|
||||
"portId": "portErlbach92"
|
||||
},
|
||||
{
|
||||
"i": 93,
|
||||
"modelId": "idErlbachPart93",
|
||||
"portId": "portErlbach93"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -13502,6 +13502,247 @@ MonoBehaviour:
|
||||
_offsetAlongNormal: 0.005
|
||||
_playerHead: {fileID: 0}
|
||||
_selectObject: {fileID: 1599790582}
|
||||
--- !u!1 &1334436250
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1334436260}
|
||||
- component: {fileID: 1334436258}
|
||||
- component: {fileID: 1334436257}
|
||||
- component: {fileID: 1334436256}
|
||||
- component: {fileID: 1334436255}
|
||||
- component: {fileID: 1334436254}
|
||||
- component: {fileID: 1334436253}
|
||||
- component: {fileID: 1334436252}
|
||||
- component: {fileID: 1334436251}
|
||||
m_Layer: 0
|
||||
m_Name: ExportButtong (TODO MERGE WITH RETURNBUTTONG)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!65 &1334436251
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1334436252
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 1334436253}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 1519836175}
|
||||
m_TargetAssemblyTypeName: ModelManager, Assembly-CSharp
|
||||
m_MethodName: Export
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!114 &1334436253
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &1334436254
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1334436255
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7aaf960227867044282d921171d2d7ac, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
pointer: {fileID: 0}
|
||||
sortOrder: 0
|
||||
--- !u!114 &1334436256
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
--- !u!114 &1334436257
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_UiScaleMode: 0
|
||||
m_ReferencePixelsPerUnit: 100
|
||||
m_ScaleFactor: 1
|
||||
m_ReferenceResolution: {x: 800, y: 600}
|
||||
m_ScreenMatchMode: 0
|
||||
m_MatchWidthOrHeight: 0
|
||||
m_PhysicalUnit: 3
|
||||
m_FallbackScreenDPI: 96
|
||||
m_DefaultSpriteDPI: 96
|
||||
m_DynamicPixelsPerUnit: 1
|
||||
m_PresetInfoIsWorld: 1
|
||||
--- !u!223 &1334436258
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 2
|
||||
m_Camera: {fileID: 0}
|
||||
m_PlaneDistance: 100
|
||||
m_PixelPerfect: 0
|
||||
m_ReceivesEvents: 1
|
||||
m_OverrideSorting: 0
|
||||
m_OverridePixelPerfect: 0
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
--- !u!224 &1334436260
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1334436250}
|
||||
m_LocalRotation: {x: 0.17298737, y: 0.085831694, z: -0.015134441, w: 0.98106027}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0.832}
|
||||
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1542946158}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 20, y: 10, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 1.734, y: -0.488}
|
||||
m_SizeDelta: {x: 180, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &1335548243
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -16073,6 +16314,142 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1337995492}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1542946157
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1542946158}
|
||||
- component: {fileID: 1542946160}
|
||||
- component: {fileID: 1542946159}
|
||||
m_Layer: 0
|
||||
m_Name: ReturnButtonText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1542946158
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1542946157}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1334436260}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1542946159
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1542946157}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: Export Model
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 24
|
||||
m_fontSizeBase: 24
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!222 &1542946160
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1542946157}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1546124943
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -26644,3 +27021,4 @@ SceneRoots:
|
||||
- {fileID: 576843183}
|
||||
- {fileID: 624025130}
|
||||
- {fileID: 6345901854734501750}
|
||||
- {fileID: 1334436260}
|
||||
|
||||
@@ -126,4 +126,53 @@ public class ModelBehaviour : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// -> see docs/exampleExport.json
|
||||
/// this doesn't include leading+trailing { } or commas, just the content
|
||||
/// this is recursive
|
||||
/// </summary>
|
||||
/// <param name="chooseableOnly">Whether all Ports or just the Chooseable ones should be exported</param>
|
||||
/// <returns>an unfinished Json of this Model and all its children</returns>
|
||||
string ExportJsonBase(bool chooseableOnly = true)
|
||||
{
|
||||
string export = "";
|
||||
if (Model is BaseModel)
|
||||
{
|
||||
export += "\"baseModel\": true,";
|
||||
}
|
||||
export += $"\"modelId\": \"{Model.NameId}\"";
|
||||
if(Model is ChildModel cm)
|
||||
{
|
||||
export += $", \"portId\": \"{cm.Port}\"";
|
||||
}
|
||||
if(!Model.HasPorts())
|
||||
{
|
||||
return export;
|
||||
}
|
||||
export += ", \"ports\": [";
|
||||
for (int i = 0; i < Model.Ports.Count; i++)
|
||||
{
|
||||
if (chooseableOnly && !Model.Ports[i].Chooseable)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
export += "{ \"i\": " + i +", " + _children[i].GetComponent<ChildModelBehaviour>().ExportJsonBase() + "}";
|
||||
if(i != Model.Ports.Count-1) //if not the last
|
||||
{
|
||||
export += ",";
|
||||
}
|
||||
}
|
||||
export += "]";
|
||||
return export;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exports the current Model as a correct JSON
|
||||
/// -> see docs/exampleExport.json
|
||||
/// </summary>
|
||||
/// <returns>An 'unformatted' JSON</returns>
|
||||
public string ExportJson()
|
||||
{
|
||||
return "{" + ExportJsonBase() + "}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
public class ModelManager : MonoBehaviour
|
||||
@@ -135,4 +136,22 @@ public class ModelManager : MonoBehaviour
|
||||
baseModelSelector.Activate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The Export function that should be called by the Button. Will get changed later to export to a REST/MQTT Service
|
||||
/// </summary>
|
||||
public void Export()
|
||||
{
|
||||
string path = Path.GetDirectoryName(Application.dataPath) + "/export.json";
|
||||
Debug.Log($"Exporting current model to {path}...");
|
||||
if (File.Exists(path))
|
||||
{
|
||||
//this doesn't matter since later the export will get sent to an server anyways
|
||||
Debug.LogWarning($"File {path} already exists. Overwriting...");
|
||||
}
|
||||
var fs = File.Create(path);
|
||||
TextWriter tw = new StreamWriter(fs);
|
||||
tw.Write(BaseModelBehaviour.ExportJson());
|
||||
tw.Close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user