1
0
forked from cgvr/DeltaVR

reduced shape scanner conf count, fix bug with HUD

This commit is contained in:
2026-03-12 18:07:55 +02:00
parent b1fe32bdf2
commit a6a6b036ca
4 changed files with 19 additions and 19 deletions

View File

@@ -16,8 +16,6 @@
* prinditud objekti scale'imisele min ja max size limiit * prinditud objekti scale'imisele min ja max size limiit
* soft particle'id, et ei clipiks * soft particle'id, et ei clipiks
* uks võiks käia ainult väljapoole * uks võiks käia ainult väljapoole
* seest tühi shape config liiga raske, sest printer unreliable?
* 5 configit piisavalt
* archery range: * archery range:
* võiks jääda kordama viimast instruktsiooni, kui mängija ei progressi edasi * võiks jääda kordama viimast instruktsiooni, kui mängija ei progressi edasi
* kui archery range läbi, võiks npc öelda "good job, try again..." * kui archery range läbi, võiks npc öelda "good job, try again..."

View File

@@ -68,8 +68,8 @@ public class ShapeScanner : MonoBehaviour
private float raySpawnDistanceX; private float raySpawnDistanceX;
private float raySpawnDistanceZ; private float raySpawnDistanceZ;
private int currentConfiguration; private int currentConfiguration;
private int rayCount; private int totalRayCount;
private int correctRayStates; private int correctRayCount;
private bool isCompleted; private bool isCompleted;
@@ -109,11 +109,10 @@ public class ShapeScanner : MonoBehaviour
int rayRowCount = configuration.rows.Count; int rayRowCount = configuration.rows.Count;
for (int i = 0; i < rayRowCount; i++) for (int i = 0; i < rayRowCount; i++)
{ {
float rayPosX = raySpawnCorner1.localPosition.x + i * raySpawnDistanceX / (rayRowCount - 1); float rayPosZ = raySpawnCorner1.localPosition.z + i * raySpawnDistanceZ / (rayRowCount - 1);
for (int j = 0; j < rayRowCount; j++) for (int j = 0; j < rayRowCount; j++)
{ {
// Local position float rayPosX = raySpawnCorner1.localPosition.x + j * raySpawnDistanceX / (rayRowCount - 1);
float rayPosZ = raySpawnCorner1.localPosition.z + j * raySpawnDistanceZ / (rayRowCount - 1);
Vector3 rayPos = new Vector3(rayPosX, 0, rayPosZ); Vector3 rayPos = new Vector3(rayPosX, 0, rayPosZ);
ShapeScannerRay ray = Instantiate(rayPrefab, rayParent); ShapeScannerRay ray = Instantiate(rayPrefab, rayParent);
ray.transform.localPosition = rayPos; ray.transform.localPosition = rayPos;
@@ -131,9 +130,11 @@ public class ShapeScanner : MonoBehaviour
} }
} }
// Count total rays and required collision rays // Count total rays and required collision rays
rayCount = configuration.rows.SelectMany(row => row.cells).Count(); totalRayCount = configuration.rows.SelectMany(row => row.cells).Count();
correctRayStates = configuration.rows.SelectMany(row => row.cells).Count(cell => !cell); correctRayCount = configuration.rows.SelectMany(row => row.cells).Count(cell => !cell);
UpdateDisplay(calculateCorrectPercentage());
float percentage = calculateCorrectPercentage();
UpdateDisplay(percentage);
} }
private void OnConfigurationComplete() private void OnConfigurationComplete()
@@ -167,12 +168,12 @@ public class ShapeScanner : MonoBehaviour
private float calculateCorrectPercentage() private float calculateCorrectPercentage()
{ {
return (float) correctRayStates / rayCount * 100; return (float) correctRayCount / totalRayCount * 100;
} }
public void IncrementCorrectRayCount() public void IncrementCorrectRayCount()
{ {
correctRayStates++; correctRayCount++;
float correctPercentage = calculateCorrectPercentage(); float correctPercentage = calculateCorrectPercentage();
UpdateDisplay(correctPercentage); UpdateDisplay(correctPercentage);
if (isCompleted) if (isCompleted)
@@ -182,14 +183,14 @@ public class ShapeScanner : MonoBehaviour
if (correctPercentage >= configurations[currentConfiguration].requiredCorrectPercentage) if (correctPercentage >= configurations[currentConfiguration].requiredCorrectPercentage)
{ {
OnConfigurationComplete(); OnConfigurationComplete();
UpdateCurrentConfigurationDisplay(currentConfiguration + 1);
if (currentConfiguration + 1 < configurations.Count) if (currentConfiguration + 1 < configurations.Count)
{ {
currentConfiguration++; currentConfiguration++;
InitializeConfiguration(configurations[currentConfiguration]); InitializeConfiguration(configurations[currentConfiguration]);
UpdateCurrentConfigurationDisplay(currentConfiguration);
} else } else
{ {
// Initialize configuration with all rays requiring collision // Initialize configuration with no rays requiring collision
List<BoolRow> rows = Enumerable.Repeat(new BoolRow(Enumerable.Repeat(false, 6).ToList()), 6).ToList(); List<BoolRow> rows = Enumerable.Repeat(new BoolRow(Enumerable.Repeat(false, 6).ToList()), 6).ToList();
ShapeScannerConfiguration configuration = new ShapeScannerConfiguration(6, 100, rows); ShapeScannerConfiguration configuration = new ShapeScannerConfiguration(6, 100, rows);
InitializeConfiguration(configuration); InitializeConfiguration(configuration);
@@ -200,12 +201,13 @@ public class ShapeScanner : MonoBehaviour
public void DecrementCorrectRayCount() public void DecrementCorrectRayCount()
{ {
correctRayStates--; correctRayCount--;
UpdateDisplay(calculateCorrectPercentage()); UpdateDisplay(calculateCorrectPercentage());
} }
private void UpdateDisplay(float percentage) private void UpdateDisplay(float percentage)
{ {
Debug.Log("updating display to: " + percentage);
correctPercentageDisplay.text = Mathf.Round(percentage).ToString() + " %"; correctPercentageDisplay.text = Mathf.Round(percentage).ToString() + " %";
} }