public void SnapCoords() { if (_manager == null) { _manager = GetManager(); } // Getting renderer bounds' size. Get info once if (_w == 0f && _h == 0f) { _renderer = GetComponent <Renderer>(); _w = (float)Math.Round(_renderer.bounds.extents.x * 2f, 3); _h = (float)Math.Round(_renderer.bounds.extents.z * 2f, 3); } _coords = transform.position; _xVal = _coords.x; _xVal = Mathf.Round(_xVal / _w) * _w; _zVal = _coords.z; _zVal = Mathf.Round(_zVal / _h) * _h; _coords.x = (float)Math.Round(_xVal, 3); _coords.y = 0f; _coords.z = (float)Math.Round(_zVal, 3); transform.position = _coords; CheckValidPosition(); }
public void CheckValidPosition() { if (_manager == null) { _manager = GetManager(); } _coords = transform.position; _xVal = _coords.x; _validPositions = _manager.GetValidPositions; bool positionFound = false; for (int i = 0; i < _validPositions.Length; i++) { if (_xVal == _validPositions[i]) { positionFound = true; break; } } if (_renderer == null) { _renderer = GetComponent <Renderer>(); } if (positionFound) { _renderer.material = _validMaterial; _manager.SetZValue(_coords.z); } else { _renderer.material = _invalidMaterial; } _isValid = positionFound; }
public override void OnInspectorGUI() { DrawDefaultInspector(); _manager = target as StageBlockManager; _manager.ForcePosition(); if (_manager.GetMaxLanes < _manager.GetMinLanes || _manager.GetMaxLanes % 2 == 0) { if (_supportedLanes == 0) { _supportedLanes = _manager.GetMinLanes; } _manager.SetMaxLanes(_supportedLanes); } if (_supportedLanes != _manager.GetMaxLanes) { _manager.GenerateValidPositions(); _manager.CheckValidPositions(); _supportedLanes = _manager.GetMaxLanes; } GUILayout.Label("Create Blocks will result in: " + _manager.GetCreateRows * _manager.GetMaxLanes + " blocks."); if (GUILayout.Button("Create Blocks")) { _manager.CreateBlocks(); } GUILayout.Label("\nRegister blocks layout.\nRemove overlaped and invalid position blocks.\nRecalculate stage length (in blocks)."); if (GUILayout.Button("Cleanup & Update Layout")) { _manager.StageCleanup(); } string label = "Destroy all Blocks"; if (_warningCount > 0) { label = "ARE YOU SURE?!"; } if (GUILayout.Button(label)) { _warningCount++; if (_warningCount > 1) { _warningCount = 0; _manager.DestroyAllBlocks(); _manager.StageCleanup(); } } GUILayout.Label("Length (in blocks): " + _manager.SetStageLength()); GUILayout.Label("Total blocks: " + _manager.GetTotalBlocks().Length); GUILayout.Label("\nFinal step. Creates a gameobject with the original\nlayout, but now with skin assets applied."); if (GUILayout.Button("Build Stage")) { Selection.activeGameObject = _manager.ConstructFinalStage(); } GUILayout.Label("\nDon't forget to save your built stage inside your\nlevel Resource.prefab gameObject."); }
public void SetManager(StageBlockManager comp) { _manager = comp; }