From 38ba21619f0117ea9ca9691cd5a59af1715b693b Mon Sep 17 00:00:00 2001 From: brnkhy Date: Fri, 28 Apr 2017 01:31:10 +0300 Subject: [PATCH 1/4] fix a bug where terrain mesh data normals wasn't initialized --- .../Core/Unity/MeshGeneration/Factories/TerrainFactory.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs index 72ad51f43..52ba8e2c8 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs @@ -142,7 +142,6 @@ private void GenerateTerrainMesh(UnityTile tile, float heightMultiplier) var go = tile.gameObject; var mesh = new MeshData(); mesh.Vertices = new List(_sampleCount * _sampleCount); - mesh.Normals = new List(_sampleCount * _sampleCount); var step = 1f / (_sampleCount - 1); for (float y = 0; y < _sampleCount; y++) { @@ -161,12 +160,11 @@ private void GenerateTerrainMesh(UnityTile tile, float heightMultiplier) (int)((1 - yrat) * 255)), tile.RelativeScale), (float)(yy - tile.Rect.Center.y))); + mesh.Normals.Add(Vector3.up); mesh.UV[0].Add(new Vector2(x * step, 1 - (y * step))); } } - //we can read these from a hardcoded dictionary as well - //no need to calculate this every single time unless we need a really high range for sampleCount var trilist = new List(); var dir = Vector3.zero; int vertA, vertB, vertC; From 84bce445882af9d5a12b80e0d4757c57d3103f74 Mon Sep 17 00:00:00 2001 From: brnkhy Date: Fri, 28 Apr 2017 01:38:36 +0300 Subject: [PATCH 2/4] change Vector3.up to local readonly terrainup field --- .../Core/Unity/MeshGeneration/Factories/TerrainFactory.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs index 52ba8e2c8..be5931041 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs @@ -46,6 +46,7 @@ public class TerrainFactory : Factory private Dictionary _tiles; private Vector2 _stitchTarget; + private readonly Vector3 _terrainUp = Vector3.up; public override void Initialize(IFileSource fs) { @@ -160,7 +161,7 @@ private void GenerateTerrainMesh(UnityTile tile, float heightMultiplier) (int)((1 - yrat) * 255)), tile.RelativeScale), (float)(yy - tile.Rect.Center.y))); - mesh.Normals.Add(Vector3.up); + mesh.Normals.Add(_terrainUp); mesh.UV[0].Add(new Vector2(x * step, 1 - (y * step))); } } From 607b936963ff7cc5096c318693012084eac89000 Mon Sep 17 00:00:00 2001 From: brnkhy Date: Fri, 28 Apr 2017 18:32:39 +0300 Subject: [PATCH 3/4] introduce world constants class change terrain factory to use static world up --- .../MeshGeneration/Factories/TerrainFactory.cs | 4 ++-- .../Mapbox/Core/Unity/Utilities/WorldConstants.cs | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs index be5931041..1e0d2b925 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs @@ -8,6 +8,7 @@ namespace Mapbox.Unity.MeshGeneration.Factories using Mapbox.Platform; using Mapbox.Unity.Utilities; using Utils; + using Assets.Mapbox.Core.Unity.Utilities; public enum TerrainGenerationType { @@ -46,7 +47,6 @@ public class TerrainFactory : Factory private Dictionary _tiles; private Vector2 _stitchTarget; - private readonly Vector3 _terrainUp = Vector3.up; public override void Initialize(IFileSource fs) { @@ -161,7 +161,7 @@ private void GenerateTerrainMesh(UnityTile tile, float heightMultiplier) (int)((1 - yrat) * 255)), tile.RelativeScale), (float)(yy - tile.Rect.Center.y))); - mesh.Normals.Add(_terrainUp); + mesh.Normals.Add(WorldConstants.WorldUp); mesh.UV[0].Add(new Vector2(x * step, 1 - (y * step))); } } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs new file mode 100644 index 000000000..a834f8ce9 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace Assets.Mapbox.Core.Unity.Utilities +{ + public class WorldConstants + { + public static readonly Vector3 Zero = new Vector3(0, 0, 0); + public static readonly Vector3 WorldUp = new Vector3(0, 1, 0); + } +} From 72b8b44ed1382e88b072d0faa908d7c69954897b Mon Sep 17 00:00:00 2001 From: David Rhodes Date: Fri, 28 Apr 2017 14:40:10 -0600 Subject: [PATCH 4/4] =?UTF-8?q?Math=20constants=20added=20to=20existing=20?= =?UTF-8?q?unity=20constants=20file.=20Updated=20terrain=20type=20to=20?= =?UTF-8?q?=E2=80=9CStandard=E2=80=9D,=20rather=20than=20=E2=80=9CStandard?= =?UTF-8?q?Height=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdkproject/Assets/Mapbox/Core/Unity/Constants.cs | 12 ++++++++++++ .../Core/Unity/Editor/TerrainFactoryEditor.cs | 4 ++-- .../MeshGeneration/Factories/TerrainFactory.cs | 5 ++--- .../Mapbox/Core/Unity/Utilities/WorldConstants.cs | 14 -------------- 4 files changed, 16 insertions(+), 19 deletions(-) delete mode 100644 sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Constants.cs b/sdkproject/Assets/Mapbox/Core/Unity/Constants.cs index f0f8db1ee..4829a89eb 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/Constants.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/Constants.cs @@ -1,5 +1,7 @@ namespace Mapbox.Unity { + using UnityEngine; + public static class Constants { public static class Path @@ -9,5 +11,15 @@ public static class Path /// public const string TOKEN_FILE = "MapboxAccess.text"; } + + /// + /// Store common vector constants to avoid the method access cost of Unity's convenience getters. + /// + public static class Math + { + public static readonly Vector3 Vector3Zero = new Vector3(0, 0, 0); + public static readonly Vector3 Vector3Up = new Vector3(0, 1, 0); + public static readonly Vector3 Vector3Down = new Vector3(0, -1, 0); + } } } \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Editor/TerrainFactoryEditor.cs b/sdkproject/Assets/Mapbox/Core/Unity/Editor/TerrainFactoryEditor.cs index 988ed45a6..0311a5408 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/Editor/TerrainFactoryEditor.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/Editor/TerrainFactoryEditor.cs @@ -57,7 +57,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(mapIdType_Prop); switch ((MapIdType)mapIdType_Prop.enumValueIndex) { - case MapIdType.StandardHeight: + case MapIdType.Standard: GUI.enabled = false; EditorGUILayout.PropertyField(mapId_Prop, new GUIContent("Map Id")); mapId_Prop.stringValue = _defaultMapId; @@ -74,7 +74,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(mapIdType_Prop); switch ((MapIdType)mapIdType_Prop.enumValueIndex) { - case MapIdType.StandardHeight: + case MapIdType.Standard: GUI.enabled = false; EditorGUILayout.PropertyField(mapId_Prop, new GUIContent("Map Id")); mapId_Prop.stringValue = _defaultMapId; diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs index 1e0d2b925..a6dae00f0 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs @@ -8,7 +8,6 @@ namespace Mapbox.Unity.MeshGeneration.Factories using Mapbox.Platform; using Mapbox.Unity.Utilities; using Utils; - using Assets.Mapbox.Core.Unity.Utilities; public enum TerrainGenerationType { @@ -19,7 +18,7 @@ public enum TerrainGenerationType public enum MapIdType { - StandardHeight, + Standard, Custom } @@ -161,7 +160,7 @@ private void GenerateTerrainMesh(UnityTile tile, float heightMultiplier) (int)((1 - yrat) * 255)), tile.RelativeScale), (float)(yy - tile.Rect.Center.y))); - mesh.Normals.Add(WorldConstants.WorldUp); + mesh.Normals.Add(Unity.Constants.Math.Vector3Up); mesh.UV[0].Add(new Vector2(x * step, 1 - (y * step))); } } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs deleted file mode 100644 index a834f8ce9..000000000 --- a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/WorldConstants.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; - -namespace Assets.Mapbox.Core.Unity.Utilities -{ - public class WorldConstants - { - public static readonly Vector3 Zero = new Vector3(0, 0, 0); - public static readonly Vector3 WorldUp = new Vector3(0, 1, 0); - } -}