Projet-IA-Madelaine/Scripts/Statistics/GraphPanelScript.cs

144 lines
4.5 KiB
C#
Raw Permalink Normal View History

2024-06-12 21:03:42 +02:00
using Assets.Scripts;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UIElements;
using XCharts.Runtime;
public class GraphPanelScript : MonoBehaviour
{
#region PROPERTIES
public SessionData Session { get; private set; }
public LineChart LineChart {get; set; }
#endregion
#region VARIABLES
//public VisualTreeAsset graphPanelTemplate;
//public RenderTexture renderTexture;
public UIDocument _document;
private StatsMenuController _statsController;
private VisualElement root;
private VisualElement graphContainer;
private VisualElement graphPanel;
private VisualElement[,] anchors;
#endregion
#region EVENTS
#endregion
#region ENDPOINTS
#endregion
#region METHODS
////void UpdateChartPositionAndSize(RectTransform chartRectTransform, VisualElement chartContainer)
////{
//// // Obtenir les dimensions et la position du conteneur en pixels
//// Rect containerRect = chartContainer.worldBound;
//// // Convertir la position du VisualElement en coordonn<6E>es du Canvas
//// var canvasRectTransform = _statsController.Canvas.GetComponent<RectTransform>();
//// Vector2 containerSize = containerRect.size;
//// Vector2 containerPosition = containerRect.position - new Vector2(canvasRectTransform.rect.width / 2, canvasRectTransform.rect.height / 2);
//// // Ajuster la taille et la position du RectTransform pour qu'il corresponde au VisualElement
//// chartRectTransform.anchorMin = Vector2.zero;
//// chartRectTransform.anchorMax = Vector2.zero;
//// chartRectTransform.pivot = new Vector2(0.5f, 0.5f);
//// chartRectTransform.sizeDelta = containerSize;
//// chartRectTransform.anchoredPosition = containerPosition;
////}
void UpdateChartPositionAndSize(int anchorRow, int anchorCol)
{
//if (anchorRow < 0 || anchorRow >= 3 || anchorCol < 0 || anchorCol >= 3)
//{
// Debug.LogError("Invalid anchor position");
// return;
//}
//VisualElement anchor = anchors[anchorRow, anchorCol];
// Positionner le LineChart
//RectTransform lineChartRectTransform = LineChart.GetComponent<RectTransform>();
//lineChartRectTransform.anchoredPosition = new Vector3(480, -184, -1);
}
//private Vector2 ConvertUIToCanvasPosition(VisualElement uiElement)
//{
// // Trouver la cam<61>ra
// Camera camera = Camera.main;
// // Trouver la position de l'ancre dans l'espace du monde
// Vector3 worldPosition = uiElement.worldBound.center;
// // Convertir la position du monde en position de l'<27>cran
// Vector3 screenPosition = camera.WorldToScreenPoint(worldPosition);
// // Convertir la position de l'<27>cran en position de la toile (canvas)
// RectTransform canvasRectTransform = lineChart.GetComponentInParent<Canvas>().GetComponent<RectTransform>();
// Vector2 canvasPosition;
// RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, screenPosition, camera, out canvasPosition);
// return canvasPosition;
//}
#endregion
#region LIFECYCLE
protected void Awake()
{
_statsController = StatsMenuController.Instance;
_document = _statsController.GetComponent<UIDocument>();
root = _document.rootVisualElement;
graphContainer = root.Q<VisualElement>("ChartsParentContainer");
LineChart = gameObject.GetComponent<LineChart>();
var serie = LineChart.AddSerie<Line>();
serie.AddXYData(0, 10);
serie.AddXYData(1, 20);
serie.AddXYData(2, 15);
// Synchroniser la position et les dimensions du LineChart avec le VisualElement
RectTransform chartRectTransform = LineChart.GetComponent<RectTransform>();
graphContainer.style.width = new StyleLength(Length.Percent(100));
graphContainer.style.height = new StyleLength(Length.Percent(100));
anchors = new VisualElement[3, 3];
int k = 0;
for(int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
k++;
anchors[i, j] = graphContainer.Q<VisualElement>($"Anchor{k}");
}
}
UpdateChartPositionAndSize(1, 1);
//graphContainer.RegisterCallback<GeometryChangedEvent>(evt => UpdateChartPositionAndSize(lineChart.GetComponent<RectTransform>(), 1, 1, 300, 200));
}
#endregion
}