using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
public class DebugSystem : MonoBehaviour
{
//動作確認してません
[SerializeField] GraphManager graphManager;
[SerializeField] GraphAdderWindow graphAdderWindow;
[SerializeField] GameObject graphs;
public GraphData[] graphDatas;
[ContextMenu("resetGraphDatas")]
public void resetGraphDatass()
{
int i = -1;
foreach (GraphData data in graphDatas)
{
if (data != null)
{
if (data.isDataListInputted())
{
i++;
}
}
}
if(i>=0) { graphManager.removeGraphData(i); }
}
[ContextMenu("addDummyLineData (0,0,0,1,1,1)")]
public void setLine1()
{
setDummyLine(1);
}
[ContextMenu("addDummyLineData (1,1,1,-1,-1,-1)")]
public void setLine2()
{
setDummyLine(2);
}
[ContextMenu("addDummyLineData (-1,-1,-1,1,0,1)")]
public void setLine3()
{
setDummyLine(3);
}
[ContextMenu("addDummyLineData (2,0,0,-1,-1,-1)")]
public void setLine4()
{
setDummyLine(4);
}
[ContextMenu("addDummyPlaneData (0,0,1,0)")]
public void setPlane1()
{
setDummyPlane(1);
}
[ContextMenu("addDummyPlaneData (0,1,0,0)")]
public void setPlane2()
{
setDummyPlane(2);
}
[ContextMenu("addDummyPlaneData (1,0,0,0)")]
public void setPlane3()
{
setDummyPlane(3);
}
[ContextMenu("addDummyPlaneData (1,1,1,1)")]
public void setPlane4()
{
setDummyPlane(4);
}
public void setDummyLine(int k)
{
int i = 0;
GraphData data = new GraphData();
data.setGraphNum(0);
switch (k)
{
case 1:
data.setLinePassingPoint(new Vector3(0, 0, 0));
data.setLineDirection(new Vector3(1, 1, 1));
break;
case 2:
data.setLinePassingPoint(new Vector3(1, 1, 1));
data.setLineDirection(new Vector3(-1, -1, 1));
break;
case 3:
data.setLinePassingPoint(new Vector3(-1, -1, -1));
data.setLineDirection(new Vector3(1, -1, 1));
break;
case 4:
data.setLinePassingPoint(new Vector3(2, 0, 0));
data.setLineDirection(new Vector3(-1, -1, -1));
break;
}
graphDatas = graphManager.getAllGraphData();
foreach (GraphData d in graphDatas)
{
if (d != null)
{
if (d.isDataListInputted())
{
i++;
}
}
}
Vector3 inLinePoint = new Vector3();
GameObject ln = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
ln.transform.parent = graphs.transform;
if (data.getLineDirection().y != 0)
{
float uY0 = -1 * data.getLinePassingPoint().y / data.getLineDirection().y;
inLinePoint = new Vector3(
data.getLinePassingPoint().x + uY0 * data.getLineDirection().x,
0,
data.getLinePassingPoint().z + uY0 * data.getLineDirection().z);
}
else if (data.getLineDirection().x != 0)
{
float uX0 = -1 * data.getLinePassingPoint().x / data.getLineDirection().x;
inLinePoint = new Vector3(
0,
data.getLinePassingPoint().y + uX0 * data.getLineDirection().y,
data.getLinePassingPoint().z + uX0 * data.getLineDirection().z);
}
else if (data.getLineDirection().z != 0)
{
float uZ0 = -1 * data.getLinePassingPoint().z / data.getLineDirection().z;
inLinePoint = new Vector3(
data.getLinePassingPoint().x + uZ0 * data.getLineDirection().x,
data.getLinePassingPoint().y + uZ0 * data.getLineDirection().y,
0);
}
else
{
//全て0の場合
Debug.Log("係数が無効です");
}
ln.transform.localRotation = Quaternion.FromToRotation(Vector3.up, data.getLineDirection());
ln.transform.localPosition = inLinePoint;
ln.transform.localScale = new Vector3(0.01f, 20, 0.01f);
Destroy(data.getgraphObject());
data.setGraphObject(ln);
data.setDataListInputted(true);
graphManager.addNewGraphData(data, i);
}
public void setDummyPlane(int k)
{
int i = 0;
GraphData data = new GraphData();
data.setGraphNum(1);
switch (k)
{
case 1:
data.setPlaneCoefficient(new Vector4(0,0,1,0) );
break;
case 2:
data.setPlaneCoefficient(new Vector4(0, 1, 0, 0));
break;
case 3:
data.setPlaneCoefficient(new Vector4(1, 0, 0, 0));
break;
case 4:
data.setPlaneCoefficient(new Vector4(1, 1, 1, 1));
break;
}
graphDatas = graphManager.getAllGraphData();
foreach (GraphData d in graphDatas)
{
if (d != null)
{
if (d.isDataListInputted())
{
i++;
}
}
}
Vector3 nomalVector3 = new Vector3(
data.getPlaneCoefficient().x,
data.getPlaneCoefficient().y,
data.getPlaneCoefficient().z);
nomalVector3.Normalize();
Vector3 inPlanePoint = new Vector3();
if (data.getPlaneCoefficient().y != 0)
{
inPlanePoint = new Vector3(
0,
-1 * data.getPlaneCoefficient().w / data.getPlaneCoefficient().y,
0);
}
else if (data.getPlaneCoefficient().x != 0)
{
inPlanePoint = new Vector3(
-1 * data.getPlaneCoefficient().w / data.getPlaneCoefficient().x,
0,
0);
}
else if (data.getPlaneCoefficient().z != 0)
{
inPlanePoint = new Vector3(
0,
0,
-1 * data.getPlaneCoefficient().w / data.getPlaneCoefficient().z);
}
else
{
//全て0の場合
Debug.Log("error");
}
GameObject pl = GameObject.CreatePrimitive(PrimitiveType.Cube);
pl.transform.parent = graphs.transform;
pl.transform.localPosition = inPlanePoint;
pl.transform.localRotation = Quaternion.FromToRotation(Vector3.up, nomalVector3);
pl.transform.localScale = new Vector3(5, 0.001f, 5);
Destroy(data.getgraphObject());
data.setGraphObject(pl);
data.setDataListInputted(true);
graphManager.addNewGraphData(data, i);
}
}