ListStateProcessorManager.cs
2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace AirFishLab.ScrollingList.ListStateProcessing
{
/// <summary>
/// The component for managing the list state processors
/// </summary>
public static class ListStateProcessorManager
{
/// <summary>
/// Get the component for processing list state
/// </summary>
/// <param name="setupData">The setup data of the list</param>
/// <param name="movementProcessor">The generated movement processor</param>
/// <param name="boxController">The generated box controller</param>
public static void GetProcessors(
ListSetupData setupData,
out IListMovementProcessor movementProcessor,
out IListBoxController boxController)
{
var linearMovementProcessor = new Linear.ListMovementProcessor();
linearMovementProcessor.Initialize(setupData);
var linearBoxController = new Linear.ListBoxController();
linearBoxController.Initialize(setupData);
linearMovementProcessor.SetListBoxController(linearBoxController);
movementProcessor = linearMovementProcessor;
boxController = linearBoxController;
}
#if UNITY_EDITOR
/// <summary>
/// Setup the box transform for previewing the layout
/// </summary>
/// <param name="setupData">The setup data of the list</param>
public static void PreviewBoxLayout(ListSetupData setupData)
{
var transformController = new Linear.BoxTransformController(setupData);
var boxes = setupData.ListBoxes;
var numOfBoxes = boxes.Count;
var undoGroupID = Undo.GetCurrentGroup();
for (var i = 0; i < numOfBoxes; ++i) {
var box = boxes[i];
var transform = box.GetTransform();
Undo.RegisterCompleteObjectUndo(
transform, "Generate Boxes and Arrange");
Undo.CollapseUndoOperations(undoGroupID);
transformController.SetInitialLocalTransform(box, i);
}
}
#endif
}
}