private static int RandomRotationMaskIndex(BrickSettings settings) { // get random between index 0 or index 2 // as I saw only 2 variation of rotation can be // because "next brick" window has height = 2 int randomIndex = Random.Range(0, 2) * 2; return(randomIndex); }
public void Apply(BrickSettings settings, int maskIndex, Material material) { _settings = settings; _maskIndex = maskIndex; _material = material; ApplyMaterial(material); ushort mask = settings.rotationMasks[maskIndex]; Repaint(mask); base.name = settings.name; }
private Brick _GenerateNext(int xPos, int yPos) { var brick = Instantiate(brickPrefab); brick.transform.parent = pivot; brick.transform.localPosition = new Vector3(xPos, yPos, 0); brick.transform.localRotation = Quaternion.identity; BrickSettings settings = GetRandomBrickSetting(); int indexMask = RandomRotationMaskIndex(settings); Material material = GetRandomMaterial(); brick.Apply(settings, indexMask, material); return(brick); }
public override void OnInspectorGUI() { BrickSettings brickSettings = base.target as BrickSettings; int length = 4; brickSettings.isI = EditorGUILayout.Toggle("is I ?", brickSettings.isI); for (int i = 0; i < brickSettings.rotationMasks.Length; i++) { string label = string.Format("Rotation state {0}", i + 1); DrawRotationMatrix(label, ref brickSettings.rotationMasks[i], length); GUILayout.Space(10); } EditorUtility.SetDirty(target); }