Newer
Older
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class FactSpawner : MonoBehaviour
{
John Schihada
committed
private GameObject FactRepresentation;
AddFactEvent.AddListener(FactAction);
RemoveFactEvent.AddListener(DeleteObject);
John Schihada
committed
//Default FactRepresenation = Sphere-Prefab for Points
this.FactRepresentation = (GameObject) Resources.Load("Prefabs/Sphere", typeof(GameObject));
public void FactAction(Fact fact)
{
switch (fact)
{
case PointFact pointFact:
SpawnPoint(pointFact);
break;
case LineFact lineFact:
SpawnLine(lineFact);
break;
}
}
public void SpawnPoint(PointFact fact)
John Schihada
committed
this.FactRepresentation = (GameObject)Resources.Load("Prefabs/Sphere", typeof(GameObject));
John Schihada
committed
GameObject point = GameObject.Instantiate(FactRepresentation);
point.transform.position = fact.Point;
point.transform.up = fact.Normal;
string letter = ((Char)(64+fact.Id+1)).ToString();
point.GetComponentInChildren<TextMeshPro>().text = letter;
point.GetComponent<FactObject>().Id = fact.Id;
John Schihada
committed
//If a new Point was spawned -> We are in MarkPointMode -> Then we want the collider to be disabled
//Hint: Thats why by now, if we mark a Point in an other mode than MarkPointMode, the
//Collider will be set disabled
if(CommunicationEvents.ActiveToolMode != ToolMode.ExtraMode)
point.GetComponentInChildren<SphereCollider>().enabled = false;
John Schihada
committed
public void DeleteObject(Fact fact)
Debug.Log("delete obj");
GameObject factRepresentation = fact.Representation;
GameObject.Destroy(factRepresentation);
public void SpawnLine(LineFact lineFact) {
Vector3 point1 = (Facts[lineFact.Pid1] as PointFact).Point;
Vector3 point2 = (Facts[lineFact.Pid2] as PointFact).Point;
John Schihada
committed
//Change FactRepresentation to Line
this.FactRepresentation = (GameObject)Resources.Load("Prefabs/Line2", typeof(GameObject));
GameObject line = GameObject.Instantiate(FactRepresentation);
//Place the Line in the centre of the two points
//and change scale and rotation, so that the two points are connected by the line
line.transform.position = Vector3.Lerp(point1, point2, 0.5f);
var v3T = line.transform.localScale;
v3T.y = (point2 - point1).magnitude;
//x and z of the line/Cube-GameObject here hard coded = ratio of sphere-prefab
v3T.x = 0.1f;
v3T.z = 0.1f;
line.transform.localScale = v3T;
line.transform.rotation = Quaternion.FromToRotation(Vector3.up, point2 - point1);
string letter = ((Char)(64 + lineFact.Id + 1)).ToString();
John Schihada
committed
line.GetComponentInChildren<TextMeshPro>().text = letter;
line.GetComponent<FactObject>().Id = lineFact.Id;
John Schihada
committed
//If a new Line was spawned -> We are in CreateLineMode -> Then we want the collider to be disabled
if (CommunicationEvents.ActiveToolMode != ToolMode.ExtraMode)
line.GetComponentInChildren<BoxCollider>().enabled = false;
lineFact.Representation = line;
John Schihada
committed
}
John Schihada
committed