diff --git a/Assets/Resources/Prefabs/Facts/Triangle.prefab b/Assets/Resources/Prefabs/Facts/Triangle.prefab index dd00b4c22742f2165838556f9e75e90fc290e656..2d93daeb9968f779704de72305b4d37d76b5320f 100644 --- a/Assets/Resources/Prefabs/Facts/Triangle.prefab +++ b/Assets/Resources/Prefabs/Facts/Triangle.prefab @@ -675,6 +675,6 @@ MonoBehaviour: - {fileID: 6626359674163989219} NormalOffset: [] AlternateNormals: 0 - ab: 1 - height: 1 + _ab: 1 + _height: 1 _c: 0.5 diff --git a/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab b/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab new file mode 100644 index 0000000000000000000000000000000000000000..8c1f2e654f12ca8822eb973a08033fe240c1c5f7 --- /dev/null +++ b/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab @@ -0,0 +1,596 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2688299870578515406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29302832430599646} + - component: {fileID: 503893222331825355} + - component: {fileID: 661528896933927744} + - component: {fileID: 3021905677247651873} + m_Layer: 22 + m_Name: LabelText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &29302832430599646 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2688299870578515406} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3390467403729316765} + m_RootOrder: 2 + 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.5, y: 0.5} + m_SizeDelta: {x: 2, y: 0.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &503893222331825355 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2688299870578515406} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &661528896933927744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2688299870578515406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, 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: Test + 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: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 503893222331825355} + m_maskType: 0 +--- !u!114 &3021905677247651873 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2688299870578515406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8cf5a358dacd3b54ab093ee289dd9ba2, type: 3} + m_Name: + m_EditorClassIdentifier: + Cam1: {fileID: 0} + Cam2: {fileID: 0} + BackUPCam: {fileID: 0} +--- !u!1 &3319392661904935552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7541265271928914416} + - component: {fileID: 1312883106029576503} + - component: {fileID: 5284903402926663935} + - component: {fileID: 2574848627300415222} + - component: {fileID: 7280041197286401157} + m_Layer: 22 + m_Name: Mesh Outer + m_TagString: SnapZone + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7541265271928914416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3319392661904935552} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.02, z: 0.02} + m_LocalScale: {x: 1.04, y: 1.04, z: 1.04} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 3390467403729316765} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1312883106029576503 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3319392661904935552} + m_Mesh: {fileID: 0} +--- !u!23 &5284903402926663935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3319392661904935552} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &2574848627300415222 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3319392661904935552} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!114 &7280041197286401157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3319392661904935552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3} + m_Name: + m_EditorClassIdentifier: + _URI: + FactText: [] + StringLabelFormats: [] + Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2} + Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2} + Solution: {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2} + renderer: + - {fileID: 5284903402926663935} + - {fileID: 1078883255209641429} +--- !u!1 &5866155945383417828 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8554957501859850914} + - component: {fileID: 3164742056485930267} + - component: {fileID: 1460740696286669547} + m_Layer: 22 + m_Name: Prism Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8554957501859850914 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5866155945383417828} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: 0.01} + m_LocalScale: {x: 1.02, y: 1.02, z: 1.02} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 142224692930156368} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3164742056485930267 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5866155945383417828} + m_Mesh: {fileID: 0} +--- !u!23 &1460740696286669547 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5866155945383417828} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &6262947649539239553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 142224692930156368} + - component: {fileID: 7167210412035754299} + - component: {fileID: 1078883255209641429} + - component: {fileID: 8526453253978894086} + - component: {fileID: -7239156242830623982} + m_Layer: 22 + m_Name: Mesh Inner + m_TagString: SnapZone + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &142224692930156368 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6262947649539239553} + 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: + - {fileID: 8554957501859850914} + m_Father: {fileID: 3390467403729316765} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7167210412035754299 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6262947649539239553} + m_Mesh: {fileID: 0} +--- !u!23 &1078883255209641429 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6262947649539239553} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &8526453253978894086 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6262947649539239553} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!114 &-7239156242830623982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6262947649539239553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3} + m_Name: + m_EditorClassIdentifier: + _URI: + FactText: [] + StringLabelFormats: [] + Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2} + Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2} + Solution: {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2} + renderer: + - {fileID: 1078883255209641429} + - {fileID: 5284903402926663935} +--- !u!1 &6839596689016440457 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3390467403729316765} + - component: {fileID: 6950663371922587874} + - component: {fileID: 4168309156902745950} + m_Layer: 22 + m_Name: TriangularPrism + m_TagString: Selectable + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3390467403729316765 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6839596689016440457} + 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: + - {fileID: 7541265271928914416} + - {fileID: 142224692930156368} + - {fileID: 29302832430599646} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6950663371922587874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6839596689016440457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3} + m_Name: + m_EditorClassIdentifier: + _URI: + FactText: + - {fileID: 0} + StringLabelFormats: [] + Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} + Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2} + Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2} + Solution: {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2} + renderer: + - {fileID: 1078883255209641429} +--- !u!114 &4168309156902745950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6839596689016440457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 278725439dae7c14d95900d3c5f539b1, type: 3} + m_Name: + m_EditorClassIdentifier: + Meshs: + - {fileID: 1312883106029576503} + - {fileID: 7167210412035754299} + - {fileID: 3164742056485930267} + NormalOffset: [] + AlternateNormals: 0 + _triangle_ab: 1 + _triangle_height: 1 + _triangle_c: 0.5 + _prism_height: 1 diff --git a/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab.meta b/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..0e3ae85365745ab78878a08268267d6261915bf8 --- /dev/null +++ b/Assets/Resources/Prefabs/Facts/TriangularPrism.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4295c5be42e7ff649b031d8dfaaf9d04 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Worlds/RiverWorld.unity b/Assets/Scenes/Worlds/RiverWorld.unity index ca124906c2f031a546cf5a9a4b208c5ba7b6ddc1..c14c4fac1562ca0ea5604858666212c52e34ac21 100644 --- a/Assets/Scenes/Worlds/RiverWorld.unity +++ b/Assets/Scenes/Worlds/RiverWorld.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44084534, g: 0.48955458, b: 0.56959116, a: 1} + m_IndirectSpecularColor: {r: 0.44100717, g: 0.4898312, b: 0.5698877, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -60580,7 +60580,7 @@ PrefabInstance: - target: {fileID: 2258042202925325658, guid: b07552db700124a4680401e6fb94c186, type: 3} propertyPath: factLayerMask.m_Bits - value: 2161664 + value: 6355968 objectReference: {fileID: 0} - target: {fileID: 2267088185126138740, guid: b07552db700124a4680401e6fb94c186, type: 3} @@ -60830,6 +60830,12 @@ PrefabInstance: value: objectReference: {fileID: 6839596689016440457, guid: ba4e0d31779023d4d8a5767fd6dccf5c, type: 3} + - target: {fileID: 2872381745209199267, guid: b07552db700124a4680401e6fb94c186, + type: 3} + propertyPath: TriangularPrism + value: + objectReference: {fileID: 6839596689016440457, guid: 4295c5be42e7ff649b031d8dfaaf9d04, + type: 3} - target: {fileID: 2885104145836066559, guid: b07552db700124a4680401e6fb94c186, type: 3} propertyPath: m_AnchorMax.y @@ -62123,7 +62129,7 @@ PrefabInstance: - target: {fileID: 4705772093382662422, guid: b07552db700124a4680401e6fb94c186, type: 3} propertyPath: factLayerMask.m_Bits - value: 2161664 + value: 6355968 objectReference: {fileID: 0} - target: {fileID: 4781424044739630211, guid: b07552db700124a4680401e6fb94c186, type: 3} diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs index 70584ecf68cabbe8be31c7a1a6939f291d1a41cc..59e469d4b1b00af11e6b785fdf35ab278b33296d 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs @@ -24,7 +24,8 @@ public GameObject Triangle, Sphere, ActualSphere, - Cuboid + Cuboid, + TriangularPrism ; private void OnEnable() @@ -76,6 +77,8 @@ public void SpawnFactRepresentation(Fact fact) SpawnSphere(sphereFact); break; case CuboidFact cuboidFact: SpawnCuboid(cuboidFact); break; + case PrismFact prismFact: + SpawnTriangularPrism(prismFact); break; default: break; }; } @@ -124,7 +127,6 @@ public void SpawnSimpleCircle(SimpleCircleFact fact){ public void SpawnTriangle(TriangleFact2 fact) { - GameObject triangle = GameObject.Instantiate(Triangle); fact.WorldRepresentation = triangle.GetComponent<FactObject3D>(); fact.WorldRepresentation.Fact = fact; @@ -142,6 +144,26 @@ public void SpawnTriangle(TriangleFact2 fact) } } + public void SpawnTriangularPrism(PrismFact fact) + { + GameObject prism = GameObject.Instantiate(TriangularPrism); + fact.WorldRepresentation = prism.GetComponent<FactObject3D>(); + fact.WorldRepresentation.Fact = fact; + + prism.transform.SetPositionAndRotation(fact.Position, fact.Rotation); + // triangle.transform.localScale = Vector3.Scale(triangle.transform.localScale, fact.LocalScale); + prism.GetComponentInChildren<TextMeshPro>().text = fact.GetLabel(StageStatic.stage.factState) + " = " + System.Math.Round(fact.Volume, 2) + "m³"; + + TriangluarPrismGenerator[] triangelGenerators = prism.GetComponentsInChildren<TriangluarPrismGenerator>(); + foreach (var gen in triangelGenerators) + { + gen.triangle_ab = Vector3.Distance(fact.A, fact.B); + gen.triangle_height = Vector3.Distance(fact.c, fact.C); + gen.triangle_c = fact.cPosition; + gen.prism_height = Vector3.Distance(fact.A, fact.D); + } + } + public void SpawnPoint(PointFact fact) { GameObject point = GameObject.Instantiate(Sphere); diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs b/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs index 648ee0c0e72b5ce4af7477736edf9cb80c521eee..c818c51f29bc6377defd62c7fc5d39af5cac02d1 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs @@ -91,6 +91,10 @@ public static class ParsingDictionary MMTConstants.CuboidType, CuboidFact.parseFact }, + { + MMTConstants.PrismType, + PrismFact.parseFact + }, }; // TODO: get rid of this @@ -136,6 +140,7 @@ public static class ParsingDictionary [JsonSubtypes.KnownSubType(typeof(SimpleCircleFact), nameof(SimpleCircleFact))] [JsonSubtypes.KnownSubType(typeof(SphereFact), nameof(SphereFact))] [JsonSubtypes.KnownSubType(typeof(CuboidFact), nameof(CuboidFact))] +[JsonSubtypes.KnownSubType(typeof(PrismFact), nameof(PrismFact))] public abstract class Fact { [JsonIgnore] diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs b/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs new file mode 100644 index 0000000000000000000000000000000000000000..13be44c518b7f5597f66ed6160260943445a0124 --- /dev/null +++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs @@ -0,0 +1,140 @@ +using Newtonsoft.Json; +using REST_JSON_API; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.UIElements; + +/// <summary> +/// Point in 3D Space +/// </summary> +public class PrismFact : FactWrappedCRTP<PrismFact> +{ + + + //used points + public string PidT, PidD; + + public Vector3 A, B, C, a, b, c, D; + + public float cPosition; + + public float Volume = 0.0F; + + + + public TriangleFact2 GetT {get => (TriangleFact2)FactRecorder.AllFacts[PidT];} + public PointFact GetD {get => (PointFact)FactRecorder.AllFacts[PidD];} + protected void calculate_vectors(){ + + A = ((TriangleFact2)FactRecorder.AllFacts[PidT]).A + Vector3.zero; + B = ((TriangleFact2)FactRecorder.AllFacts[PidT]).B + Vector3.zero; + C = ((TriangleFact2)FactRecorder.AllFacts[PidT]).C + Vector3.zero; + a = ((TriangleFact2)FactRecorder.AllFacts[PidT]).a + Vector3.zero; + b = ((TriangleFact2)FactRecorder.AllFacts[PidT]).b + Vector3.zero; + c = ((TriangleFact2)FactRecorder.AllFacts[PidT]).c + Vector3.zero; + D = ((PointFact)FactRecorder.AllFacts[PidD]).Point + Vector3.zero; + + cPosition = Vector3.Distance(A, c) / Vector3.Distance(A, B); + + Volume = ((TriangleFact2)FactRecorder.AllFacts[PidT]).Area * Vector3.Distance(A, D); + + Position = ((TriangleFact2)FactRecorder.AllFacts[PidT]).Position; + + Rotation = ((TriangleFact2)FactRecorder.AllFacts[PidT]).Rotation; + } + + public PrismFact() : base(){ + this.PidT = null; + this.PidD = null; + } + [JsonConstructor] + public PrismFact( string PidT, string PidD) : base() + { + this.PidT = PidT; + this.PidD = PidD; + + calculate_vectors(); + } + + /// <summary> + /// Bypasses initialization of new MMT %Fact by using existend URI, _which is not checked for existence_. + /// <see cref="Normal"/> set to <c>Vector3.up</c> + /// </summary> + /// <param name="Point">sets <see cref="Point"/></param> + /// <param name="ServerDefinition">MMT URI as OMS</param> + public PrismFact(string PidT, string PidD, SOMDoc ServerDefinition) : base() + { + this.PidT = PidT; + this.PidD = PidD; + + this.ServerDefinition = ServerDefinition; + + calculate_vectors(); + } + + /// \copydoc Fact.parseFact(ScrollFact) + public new static IEnumerator parseFact(List<Fact> ret, MMTFact fact) + { + if (((MMTGeneralFact)fact).defines is not OMA df) + yield break; + + OMS triangleT, pointD; + + triangleT = (OMS)df.arguments[0]; + pointD = (OMS)df.arguments[1]; + + string PidT = triangleT.uri; + string PidD = pointD.uri; + + + + ret.Add(new PrismFact(PidT, PidD)); + + //ParsingDictionary.parseTermsToId.TryAdd(defines.ToString(), fact.@ref.uri); + //ret.Add(new PointFact(SOMDoc.MakeVector3(defines), fact.@ref)); + } + + + /// \copydoc Fact.hasDependentFacts + public override bool HasDependentFacts => true; + + /// \copydoc Fact.getDependentFactIds + protected override string[] GetDependentFactIds() + => new string[] { PidT, PidD}; + + /// \copydoc Fact.GetHashCode + /* public override int GetHashCode() + => this.Point.GetHashCode(); + */ + protected override void RecalculateTransform() + { + calculate_vectors(); + } + /// \copydoc Fact.Equivalent(Fact, Fact) + protected override bool EquivalentWrapped(PrismFact p1, PrismFact p2){ + return DependentFactsEquivalent(p1, p1); + } + + protected override Fact _ReInitializeMe(Dictionary<string, string> old_to_new){ + return new PrismFact(this.PidT, this.PidD); + } + + public override MMTFact MakeMMTDeclaration() + { + SOMDoc tp = new OMS(MMTConstants.PrismType); + + return new MMTGeneralFact(_LastLabel, tp, Defines()); + } + + public override SOMDoc Defines() + => new OMA( + new OMS(MMTConstants.PrismCons), + new[] { + new OMS(PidT), + new OMS(PidD), + } + ); +} \ No newline at end of file diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs.meta b/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..242380fdb413ee6ea6295fa5dbcb54bd4bec84de --- /dev/null +++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/PrismFact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bc5eca8409b78c408eacca28e4a0ad7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/TriangleFact2.cs b/Assets/Scripts/InteractionEngine/FactHandling/Facts/TriangleFact2.cs index 6b77cac4da5b7c60c741f9dbb16ccaeda7342b69..8676234babc1712eabb8655536855a32edd175f7 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/Facts/TriangleFact2.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/TriangleFact2.cs @@ -40,9 +40,9 @@ protected void calculate_vectors(){ Area = 0.5f * (Vector3.Distance(A, B) * Vector3.Distance(c, C)); - Vector3 scale = new Vector3(Vector3.Distance(A, B), Vector3.Distance(c, C), 1.0F); + // Vector3 scale = new Vector3(Vector3.Distance(A, B), Vector3.Distance(c, C), 1.0F); - LocalScale = scale; + // LocalScale = scale; /* Vector3 lineVec3 = B - A; @@ -141,17 +141,8 @@ protected override void RecalculateTransform() calculate_vectors(); } /// \copydoc Fact.Equivalent(Fact, Fact) - protected override bool EquivalentWrapped(TriangleFact2 f1, TriangleFact2 f2){ - - return ( - - Math3d.IsApproximatelyEqual(f1.A, f2.A) - && Math3d.IsApproximatelyEqual(f1.B, f2.B) - && Math3d.IsApproximatelyEqual(f1.C, f2.C) - && Math3d.IsApproximatelyEqual(f1.c, f2.c) - - ); - + protected override bool EquivalentWrapped(TriangleFact2 t1, TriangleFact2 t2){ + return DependentFactsEquivalent(t1, t2); } protected override Fact _ReInitializeMe(Dictionary<string, string> old_to_new){ @@ -171,9 +162,9 @@ public override SOMDoc Defines() => new OMA( new OMS(MMTConstants.TriangleCons), new[] { - new OMS(PidA), - new OMS(PidB), - new OMS(PidC), + new OMS(PidA), + new OMS(PidB), + new OMS(PidC), } ); } \ No newline at end of file diff --git a/Assets/Scripts/MMTServer/CommunicationProtocoll/MMTConstants.cs b/Assets/Scripts/MMTServer/CommunicationProtocoll/MMTConstants.cs index db02890bbfa803434b73c5cce3e7a6a6dd514fe1..54d2d7d4cdfcacf1f56c05864388beea513852dd 100644 --- a/Assets/Scripts/MMTServer/CommunicationProtocoll/MMTConstants.cs +++ b/Assets/Scripts/MMTServer/CommunicationProtocoll/MMTConstants.cs @@ -48,6 +48,10 @@ public static class MMTConstants public static readonly string TriangleType = "http://mathhub.info/MitM/core/geometry?Geometry/Triangles?triangle"; public static readonly string TriangleScroll = "http://mathhub.info/FrameIT/frameworld?TriangleScroll"; + public static readonly string PrismCons = "http://mathhub.info/FrameIT/frameworld?prismType?prismCons"; + public static readonly string PrismType = "http://mathhub.info/FrameIT/frameworld?RectangleType?prismType"; + public static readonly string PrismScroll = "http://mathhub.info/FrameIT/frameworld?PrismScroll"; + public static readonly string CuboidCons = "http://mathhub.info/FrameIT/frameworld?CuboidType?cuboidCons"; public static readonly string CuboidType = "http://mathhub.info/FrameIT/frameworld?CuboidType?cuboidType"; public static readonly string CuboidScroll = "http://mathhub.info/FrameIT/frameworld?CuboidScroll"; @@ -275,6 +279,10 @@ public static class MMTConstants CuboidType, typeof(CuboidFact) }, + { + PrismType, + typeof(PrismFact) + }, }; public static readonly IReadOnlyDictionary<Type, string> TYPE_TO_OMS = OMS_TO_TYPE.ReverseKeyValInto(new() { // **Overrides** diff --git a/Assets/Scripts/MeshGenerator/TriangleGenerator.cs b/Assets/Scripts/MeshGenerator/TriangleGenerator.cs index b8ed7c36fe45829b4936c8cc6550fe0065b22a2d..0bb1ca35d9c5b2fb80470d8742b6040270a333aa 100644 --- a/Assets/Scripts/MeshGenerator/TriangleGenerator.cs +++ b/Assets/Scripts/MeshGenerator/TriangleGenerator.cs @@ -6,9 +6,27 @@ public class TriangleGenerator : ShapeGenerator { #region InspectorVariables [Header("Triangle values")] - public float ab = 1f; - public float height = 1f; + [SerializeField] protected float _ab = 1f; + [SerializeField] protected float _height = 1f; [SerializeField] protected float _c = 0.5f; + public float ab + { + get { return _ab; } + set + { + _ab = value; + GenerateShapeForAll(); + } + } + public float height + { + get { return _height; } + set + { + _height = value; + GenerateShapeForAll(); + } + } public float c { get { return _c; } diff --git a/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs b/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs new file mode 100644 index 0000000000000000000000000000000000000000..0e2edd06734c484201b6ac834b457a0c2fd8a3a5 --- /dev/null +++ b/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs @@ -0,0 +1,90 @@ +using System; +using System.Linq; +using UnityEngine; + +public class TriangluarPrismGenerator : ShapeGenerator +{ + #region InspectorVariables + [Header("Triangle values")] + [SerializeField] protected float _triangle_ab = 1f; + [SerializeField] protected float _triangle_height = 1f; + [SerializeField] protected float _triangle_c = 0.5f; + [SerializeField] protected float _prism_height = 1f; + public float triangle_ab + { + get { return _triangle_ab; } + set + { + _triangle_ab = value; + GenerateShapeForAll(); + } + } + public float triangle_height + { + get { return _triangle_height; } + set + { + _triangle_height = value; + GenerateShapeForAll(); + } + } + public float triangle_c + { + get { return _triangle_c; } + set + { + _triangle_c = value; + GenerateShapeForAll(); + } + } + public float prism_height + { + get { return _prism_height; } + set + { + _prism_height = value; + GenerateShapeForAll(); + } + } + #endregion InspectorVariables + + #region Implementation + protected override (Vector3[] vertices, int[] triangles) GenerateTopology() + => CreateTriangluarPrism(triangle_ab, triangle_height, triangle_c, prism_height); + + /// <summary> + /// Creates circle vertecies and triangles around the midPoint at (0,0,0) + /// </summary> + /// <param name="points"></param> + /// <param name="invert"></param> + /// <returns></returns> + public static (Vector3[], int[]) CreateTriangluarPrism(float triangle_ab, float triangle_height, float triangle_c, float prism_height, Vector3 offset, bool invert = false) + { + Vector3[] bottom_edge = GetTrianglePoints(triangle_ab, triangle_height, triangle_c); + Vector3[] bottom_vertices = + new Vector3[] { offset } + .AppendRange(bottom_edge) + .Append(bottom_edge[0]) + .ToArray(); + int[] bottom_boundary = Enumerable.Range(1, bottom_edge.Length).ToArray(); + + Vector3[] top_edge = GetTrianglePoints(triangle_ab, triangle_height, triangle_c, new Vector3(0, 0, -prism_height)); + Vector3[] top_vertices = + new Vector3[] { offset } + .AppendRange(top_edge) + .Append(top_edge[0]) + .ToArray(); + int[] top_boundary = Enumerable.Range(1, top_edge.Length).ToArray(); + + return CreatePrism( + CreatePlane(top_vertices), + CreatePlane(bottom_vertices, true), + top_boundary, + bottom_boundary + ); + } + + public static (Vector3[], int[]) CreateTriangluarPrism(float triangle_ab, float triangle_height, float triangle_c, float prism_height, bool invert = false) + => CreateTriangluarPrism(triangle_ab, triangle_height, triangle_c, prism_height, Vector3.zero, invert); + #endregion Implementation +} diff --git a/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs.meta b/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..45764f5583bb3fe2fa38e97d9d509141f243bdf8 --- /dev/null +++ b/Assets/Scripts/MeshGenerator/TriangluarPrismGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 278725439dae7c14d95900d3c5f539b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index f87645289604f36f758df27607805e5899bbdd62..1c170723af601831ca1abbec3fba9a69a3dd4f17 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -34,7 +34,7 @@ TagManager: - Tree - SnapZone - Triangle - - + - TriangularPrism - - -