You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.7 KiB
C#
72 lines
2.7 KiB
C#
3 months ago
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||
|
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Lofelt.NiceVibrations
|
||
|
{
|
||
|
public class WobbleDemoManager : DemoManager
|
||
|
{
|
||
|
public Camera ButtonCamera;
|
||
|
public RectTransform ContentZone;
|
||
|
public WobbleButton WobbleButtonPrefab;
|
||
|
public Vector2 PrefabSize = new Vector2(200f, 200f);
|
||
|
public float Margin = 20f;
|
||
|
public float Padding = 20f;
|
||
|
|
||
|
protected List<WobbleButton> Buttons;
|
||
|
protected Canvas _canvas;
|
||
|
protected Vector3 _position = Vector3.zero;
|
||
|
|
||
|
protected virtual void Start()
|
||
|
{
|
||
|
_canvas = GetComponentInParent<Canvas>();
|
||
|
|
||
|
float horizontalF = (ContentZone.rect.width - 2 * Padding) / (PrefabSize.x + Margin);
|
||
|
float verticalF = (ContentZone.rect.height - 2 * Padding) / (PrefabSize.y + Margin);
|
||
|
int horizontal = Mathf.FloorToInt(horizontalF);
|
||
|
int vertical = Mathf.FloorToInt(verticalF);
|
||
|
|
||
|
float centerH = (ContentZone.rect.width - (Padding * 2) - (horizontal * PrefabSize.x) - (horizontal - 1) * Margin) / 2f;
|
||
|
float centerV = (ContentZone.rect.height - (Padding * 2) - (vertical * PrefabSize.x) - (vertical - 1) * Margin) / 2f;
|
||
|
|
||
|
Buttons = new List<WobbleButton>();
|
||
|
|
||
|
for (int i = 0; i < horizontal; i++)
|
||
|
{
|
||
|
for (int j = 0; j < vertical; j++)
|
||
|
{
|
||
|
_position.x = centerH + Padding + PrefabSize.x / 2f + i * (PrefabSize.x + Margin);
|
||
|
_position.y = centerV + Padding + PrefabSize.y / 2f + j * (PrefabSize.y + Margin);
|
||
|
_position.z = 0f;
|
||
|
|
||
|
WobbleButton button = Instantiate(WobbleButtonPrefab);
|
||
|
button.transform.SetParent(ContentZone.transform);
|
||
|
Buttons.Add(button);
|
||
|
|
||
|
RectTransform rectTransform = button.GetComponent<RectTransform>();
|
||
|
rectTransform.anchorMin = Vector2.zero;
|
||
|
rectTransform.anchorMax = Vector2.zero;
|
||
|
button.name = "WobbleButton" + i + j;
|
||
|
button.transform.localScale = Vector3.one;
|
||
|
|
||
|
rectTransform.anchoredPosition3D = _position;
|
||
|
button.TargetCamera = ButtonCamera;
|
||
|
button.Initialization();
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int counter = 0;
|
||
|
foreach (WobbleButton wbutton in Buttons)
|
||
|
{
|
||
|
float newPitch = NiceVibrationsDemoHelpers.Remap(counter, 0f, Buttons.Count, 0.3f, 1f);
|
||
|
wbutton.SetPitch(newPitch);
|
||
|
counter++;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|