T-VIR-901_EpiLeARn/Assets/script/MoleculeFactory.cs

59 lines
1.9 KiB
C#
Raw Permalink Normal View History

2024-01-11 16:38:19 +01:00
using System;
using System.Collections.Generic;
using UnityEngine;
public class MoleculeFactory : MonoBehaviour{
public TextAsset jsonFile;
private static MoleculeFactory instance;
private Molecules moleculesInJson;
private Dictionary<string, Molecule> moleculesDictionary;
public MoleculeFactory(TextAsset jsonFile){
MoleculeFactory.instance = this;
2024-01-11 16:53:06 +01:00
moleculesDictionary = new Dictionary<string, Molecule>();
moleculesInJson = JsonUtility.FromJson<Molecules>(jsonFile.text);
foreach (var molecule in moleculesInJson.molecules){
moleculesDictionary.Add(molecule.formula, molecule);
}
2024-01-11 16:38:19 +01:00
}
public static MoleculeFactory getInstrance(){
if(MoleculeFactory.instance == null){
Debug.LogError("no Json file");
}
return MoleculeFactory.instance;
}
public static MoleculeFactory getInstrance(TextAsset jsonFile){
if(MoleculeFactory.instance == null){
MoleculeFactory.instance = new MoleculeFactory(jsonFile);
}
return MoleculeFactory.instance;
}
public GameObject createMolecule (string formula){
2024-01-11 16:53:06 +01:00
if(!moleculesDictionary.ContainsKey(formula)){
2024-01-11 17:16:12 +01:00
Debug.LogError("molecules does not existe in json");
2024-01-11 16:38:19 +01:00
}
2024-01-11 16:53:06 +01:00
Molecule molecule = moleculesDictionary[formula];
2024-01-11 17:11:59 +01:00
GameObject sortie = new GameObject(molecule.name);
foreach (Atom atom in molecule.atoms) {
2024-01-11 17:16:12 +01:00
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
2024-01-11 17:11:59 +01:00
sphere.transform.parent = sortie.transform;
sphere.name = atom.element;
sphere.transform.localPosition = new Vector3(atom.geometry[0], atom.geometry[1], atom.geometry[2]);
2024-01-11 17:16:12 +01:00
//TODO: géré les laision
2024-01-11 17:11:59 +01:00
//TODO: géré la taille de l'atome
//TODO: géré la couleur de l'atome
}
return sortie;
2024-01-11 16:38:19 +01:00
}
}