Skip to content
Snippets Groups Projects
Commit 49027034 authored by Chang, Ryan's avatar Chang, Ryan
Browse files

Terrain gen fix and improved controls

parent bc7af7d0
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,15 @@ ...@@ -31,6 +31,15 @@
"processors": "", "processors": "",
"interactions": "", "interactions": "",
"initialStateCheck": false "initialStateCheck": false
},
{
"name": "HoldMouse",
"type": "Button",
"id": "55d09b9e-9d1d-470d-b0ee-136f6d428778",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
} }
], ],
"bindings": [ "bindings": [
...@@ -253,6 +262,17 @@ ...@@ -253,6 +262,17 @@
"action": "Fire", "action": "Fire",
"isComposite": false, "isComposite": false,
"isPartOfComposite": false "isPartOfComposite": false
},
{
"name": "",
"id": "449332be-17ae-4697-8f53-923358bdf5a2",
"path": "<Mouse>/press",
"interactions": "",
"processors": "",
"groups": "",
"action": "HoldMouse",
"isComposite": false,
"isPartOfComposite": false
} }
] ]
}, },
......
...@@ -161,8 +161,9 @@ MonoBehaviour: ...@@ -161,8 +161,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 600 terrainHeight: 600
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!4 &40297593 --- !u!4 &40297593
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -319,8 +320,9 @@ MonoBehaviour: ...@@ -319,8 +320,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 600 terrainHeight: 600
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!4 &231393956 --- !u!4 &231393956
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -500,6 +502,8 @@ MonoBehaviour: ...@@ -500,6 +502,8 @@ MonoBehaviour:
control: {fileID: 437356320} control: {fileID: 437356320}
speed: 15 speed: 15
lookPower: 0.1 lookPower: 0.1
lowerLookBound: -60
upperLookBound: 60
currentMovement: {x: 0, y: 0, z: 0} currentMovement: {x: 0, y: 0, z: 0}
currentLook: {x: 0, y: 0, z: 0} currentLook: {x: 0, y: 0, z: 0}
gravity: {x: 0, y: 0, z: 0} gravity: {x: 0, y: 0, z: 0}
...@@ -605,6 +609,22 @@ MonoBehaviour: ...@@ -605,6 +609,22 @@ MonoBehaviour:
m_Calls: [] m_Calls: []
m_ActionId: a133780b-2f15-48a1-9a49-923cc5185661 m_ActionId: a133780b-2f15-48a1-9a49-923cc5185661
m_ActionName: UI/TrackedDeviceOrientation m_ActionName: UI/TrackedDeviceOrientation
- m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 437356321}
m_TargetAssemblyTypeName: PlayerControl, Assembly-CSharp
m_MethodName: OnLookHold
m_Mode: 0
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
m_ActionId: 55d09b9e-9d1d-470d-b0ee-136f6d428778
m_ActionName: Player/HoldMouse[/Mouse/press]
m_NeverAutoSwitchControlSchemes: 0 m_NeverAutoSwitchControlSchemes: 0
m_DefaultControlScheme: m_DefaultControlScheme:
m_DefaultActionMap: Player m_DefaultActionMap: Player
...@@ -798,6 +818,103 @@ Transform: ...@@ -798,6 +818,103 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &785001667
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 785001671}
- component: {fileID: 785001670}
- component: {fileID: 785001669}
- component: {fileID: 785001668}
m_Layer: 0
m_Name: ReferenceCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &785001668
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785001667}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 0
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &785001669
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785001667}
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
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!33 &785001670
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785001667}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &785001671
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785001667}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1000, y: 1000, z: 1000}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &963194225 --- !u!1 &963194225
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -1057,8 +1174,9 @@ MonoBehaviour: ...@@ -1057,8 +1174,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 600 terrainHeight: 600
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!4 &1129702283 --- !u!4 &1129702283
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -1276,8 +1394,9 @@ MonoBehaviour: ...@@ -1276,8 +1394,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 600 terrainHeight: 600
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!1 &1312897309 --- !u!1 &1312897309
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -1316,8 +1435,9 @@ MonoBehaviour: ...@@ -1316,8 +1435,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 600 terrainHeight: 600
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!4 &1312897311 --- !u!4 &1312897311
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -1493,8 +1613,9 @@ MonoBehaviour: ...@@ -1493,8 +1613,9 @@ MonoBehaviour:
refresh: 0 refresh: 0
samples: 513 samples: 513
terrainHeight: 1800 terrainHeight: 1800
threadsUsage: 0.7
currentGridPosition: {x: 0, y: 0} currentGridPosition: {x: 0, y: 0}
bagCount: 0 runningThreads: 0
--- !u!114 &1796874588 --- !u!114 &1796874588
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
......
...@@ -11,6 +11,10 @@ public class PlayerControl : MonoBehaviour ...@@ -11,6 +11,10 @@ public class PlayerControl : MonoBehaviour
public float lookPower = 0.1f; public float lookPower = 0.1f;
public float lowerLookBound = -30;
public float upperLookBound = 60;
[Header("Autogenerated values")] [Header("Autogenerated values")]
public Vector3 currentMovement; public Vector3 currentMovement;
...@@ -22,6 +26,8 @@ public class PlayerControl : MonoBehaviour ...@@ -22,6 +26,8 @@ public class PlayerControl : MonoBehaviour
[Tooltip("Velocity of gravity.")] [Tooltip("Velocity of gravity.")]
public Vector3 gravityVelocity; public Vector3 gravityVelocity;
private bool mouseHeld = false;
public void OnMove(InputAction.CallbackContext context) public void OnMove(InputAction.CallbackContext context)
{ {
Vector2 rawMove = context.ReadValue<Vector2>(); Vector2 rawMove = context.ReadValue<Vector2>();
...@@ -30,8 +36,20 @@ public class PlayerControl : MonoBehaviour ...@@ -30,8 +36,20 @@ public class PlayerControl : MonoBehaviour
public void OnLook(InputAction.CallbackContext context) public void OnLook(InputAction.CallbackContext context)
{ {
Vector2 rawLook = context.ReadValue<Vector2>(); if (mouseHeld)
currentLook = new(0, rawLook.x * lookPower, 0); {
Vector2 rawLook = context.ReadValue<Vector2>();
currentLook = new(
rawLook.y * lookPower,
rawLook.x * lookPower, 0);
}
else if (context.canceled)
currentLook = Vector3.zero;
}
public void OnLookHold(InputAction.CallbackContext context)
{
mouseHeld = context.performed;
} }
private void FixedUpdate() private void FixedUpdate()
...@@ -45,8 +63,12 @@ public class PlayerControl : MonoBehaviour ...@@ -45,8 +63,12 @@ public class PlayerControl : MonoBehaviour
gravityVelocity += gravity * Time.deltaTime; gravityVelocity += gravity * Time.deltaTime;
} }
control.Move(currentMovement + gravityVelocity);
transform.Rotate(currentLook); transform.Rotate(currentLook);
// Clamp up down rotation
transform.rotation = Quaternion.Euler(
ExtensionMethods.ClampAngle(transform.eulerAngles.x, lowerLookBound, upperLookBound),
transform.eulerAngles.y, 0);
control.Move(transform.rotation * (currentMovement) + gravityVelocity);
} }
} }
\ No newline at end of file
...@@ -92,7 +92,7 @@ public class TerrainGenerator : MonoBehaviour ...@@ -92,7 +92,7 @@ public class TerrainGenerator : MonoBehaviour
genThread.TerrainData.SetHeights(0, 0, genThread.GetHeights()); genThread.TerrainData.SetHeights(0, 0, genThread.GetHeights());
GameObject obj; GameObject obj;
if (ReuseTerrain(currentGridPosition, out Terrain reused)) if (false && ReuseTerrain(currentGridPosition, out Terrain reused))
{ {
// Reuse terrain // Reuse terrain
obj = reused.gameObject; obj = reused.gameObject;
...@@ -109,9 +109,11 @@ public class TerrainGenerator : MonoBehaviour ...@@ -109,9 +109,11 @@ public class TerrainGenerator : MonoBehaviour
obj.name = genThread.InitialCrawlPosition.ToString() + "Terrain"; obj.name = genThread.InitialCrawlPosition.ToString() + "Terrain";
obj.layer = LayerMask.NameToLayer("Terrain"); obj.layer = LayerMask.NameToLayer("Terrain");
obj.transform.SetParent(transform, false); obj.transform.SetParent(transform, false);
Vector3 offset = new Vector3(genThread.GridPosition.x, 0, genThread.GridPosition.y) * Vector3 gridWorldPosition = new Vector3(genThread.GridPosition.x, 0, genThread.GridPosition.y) *
genThread.TerrainData.size.x; genThread.TerrainData.size.x;
obj.transform.localPosition = offset; Vector3 centeringOffset = new Vector3(genThread.TerrainData.size.x, 0,
genThread.TerrainData.size.z) / -2;
obj.transform.localPosition = gridWorldPosition + centeringOffset;
} }
private void GenerateThread(Vector2 crawlPos, Vector2Int gridPos, private void GenerateThread(Vector2 crawlPos, Vector2Int gridPos,
...@@ -143,7 +145,7 @@ public class TerrainGenerator : MonoBehaviour ...@@ -143,7 +145,7 @@ public class TerrainGenerator : MonoBehaviour
thread.Start(); thread.Start();
} }
public virtual void GenerateSurronding(Vector2 initCrawlPos, bool forceRefresh = false) public virtual void GenerateSurrounding(Vector2 initCrawlPos, bool forceRefresh = false)
{ {
int count = 0; int count = 0;
for (int i = -1; i <= 1; i++) for (int i = -1; i <= 1; i++)
...@@ -168,7 +170,7 @@ public class TerrainGenerator : MonoBehaviour ...@@ -168,7 +170,7 @@ public class TerrainGenerator : MonoBehaviour
foreach (Transform child in transform) foreach (Transform child in transform)
Destroy(child.gameObject); Destroy(child.gameObject);
GenerateSurronding(crawlStartPosition, true); GenerateSurrounding(crawlStartPosition, true);
} }
// Check for queued threads. // Check for queued threads.
......
...@@ -18,20 +18,20 @@ public class TerrainLooker : MonoBehaviour ...@@ -18,20 +18,20 @@ public class TerrainLooker : MonoBehaviour
gameObject.RequireComponentAuto(out terrainGenerator, "terrain generator"); gameObject.RequireComponentAuto(out terrainGenerator, "terrain generator");
terrainGenerator.GenerateSurronding(terrainGenerator.crawlStartPosition); terrainGenerator.GenerateSurrounding(terrainGenerator.crawlStartPosition);
} }
private void Update() private void Update()
{ {
float hgs = gridSize / 2;
Vector3 ppos = player.position; Vector3 ppos = player.position;
Vector2Int pGridPos = new(Mathf.RoundToInt(ppos.x / hgs), Mathf.RoundToInt(ppos.z / hgs)); Vector2Int pGridPos = new(Mathf.RoundToInt(ppos.x / gridSize), Mathf.RoundToInt(ppos.z / gridSize));
Vector2Int cGridPos = terrainGenerator.currentGridPosition; Vector2Int cGridPos = terrainGenerator.currentGridPosition;
if (pGridPos != cGridPos) if (pGridPos != cGridPos)
{ {
print($"Player grid pos: {pGridPos}, player actual: {ppos}");
terrainGenerator.currentGridPosition = pGridPos; terrainGenerator.currentGridPosition = pGridPos;
terrainGenerator.GenerateSurronding(terrainGenerator.crawlStartPosition); terrainGenerator.GenerateSurrounding(terrainGenerator.crawlStartPosition);
} }
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment