diff --git a/Assets/script/Atome.meta b/Assets/script/Atome.meta new file mode 100644 index 0000000..4b5e5fe --- /dev/null +++ b/Assets/script/Atome.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d277baeb8e7f7794fb44493815552a02 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/script/Atome/AtomeFactory.cs b/Assets/script/Atome/AtomeFactory.cs new file mode 100644 index 0000000..8826b3d --- /dev/null +++ b/Assets/script/Atome/AtomeFactory.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + + + +public class AtomeFactory : MonoBehaviour{ + + public TextAsset jsonFile; + + private static AtomeFactory instance; + + private AtomesInformation atomeInJson; + + private Dictionary AtomeDictionary; + + public AtomeFactory(TextAsset jsonFile){ + AtomeFactory.instance = this; + AtomeDictionary = new Dictionary(); + atomeInJson = JsonUtility.FromJson(jsonFile.text); + foreach (var atome in atomeInJson.atomes){ + AtomeDictionary.Add(atome.symbol, atome); + } + } + + public static AtomeFactory getInstrance(){ + if(AtomeFactory.instance == null){ + Debug.LogError("no Json file"); + } + return AtomeFactory.instance; + } + + public static AtomeFactory getInstrance(TextAsset jsonFile){ + if(AtomeFactory.instance == null){ + AtomeFactory.instance = new AtomeFactory(jsonFile); + } + return AtomeFactory.instance; + } + + public AtomeInformation createAtome(string symbol){ + if(!AtomeDictionary.ContainsKey(symbol)){ + Debug.LogError("Atome does not existe in json"); + return null; + } + AtomeInformation atome = AtomeDictionary[symbol]; + + return atome; + } + + public GameObject createAnimatedAtome(string symbol) { + if(!AtomeDictionary.ContainsKey(symbol)){ + Debug.LogError("Atome does not existe in json"); + return null; + } + AtomeInformation atomeinfo = AtomeDictionary[symbol]; + GameObject Parent = new GameObject(atomeinfo.name); + int ElectronsNumber = atomeinfo.protons; + + //Symbol + GameObject atome = CreateSymbolAnimation(atomeinfo); + atome.transform.parent = Parent.transform; + + //Electrons + for (int i = 1; ElectronsNumber > 0; i++) { + int nbrElectronLayer = 2 * (i * i); + GameObject electrons = CreateElectronsAnimation(Mathf.Min(ElectronsNumber, nbrElectronLayer), (float)i); + electrons.transform.parent = Parent.transform; + ElectronsNumber -= nbrElectronLayer; + } + //rajouter electron == protons + return Parent; + } + + private GameObject DrawCircle(float orbitRadius) + { + GameObject orbitCircle = new GameObject("Orbit Circle"); + LineRenderer lineRenderer = orbitCircle.AddComponent(); + lineRenderer.useWorldSpace = false; + lineRenderer.widthMultiplier = 0.05f; // Ajustez l'épaisseur de la ligne si nécessaire. + lineRenderer.positionCount = 100 + 1; + //Add Color + Color myColor = new Color(0, 0, 1, 1); + ColorUtility.TryParseHtmlString("#7F7F7F", out myColor); + orbitCircle.GetComponent().material.color = myColor; + + for (int i = 0; i <= 100; i++) + { + float angle = i * 2 * Mathf.PI / 100; + float x = Mathf.Cos(angle) * orbitRadius; + float y = Mathf.Sin(angle) * orbitRadius; + + lineRenderer.SetPosition(i, new Vector3(x, 0f, y)); + } + return orbitCircle; + } + + + private GameObject CreateSymbolAnimation(AtomeInformation info) { + //Create GameObject + GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); + //Add information + sphere.name = info.symbol; + sphere.transform.position = new Vector3(0, 0, 0); + //Add Color + Color myColor = new Color(0, 0, 1, 1); + ColorUtility.TryParseHtmlString(info.representation.color, out myColor); + sphere.GetComponent().material.color = myColor; + + return sphere; + } + + + + private GameObject CreateElectronsAnimation(int electrons, float layer) { + GameObject ParentLayer = new GameObject("Electrons"); + + for (int i = 0; i < electrons; i++) { + float angle = i * Mathf.PI * 2 / electrons; + float x = Mathf.Cos(angle) * layer; + float z = Mathf.Sin(angle) * layer; + float y = 0f; + + GameObject electron = GameObject.CreatePrimitive(PrimitiveType.Sphere); + electron.name = "Electron" + i; + electron.transform.position = new Vector3(x, y, z); + electron.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f); + electron.transform.parent = ParentLayer.transform; + } + GameObject orbit = DrawCircle(layer); + orbit.transform.parent = ParentLayer.transform; + + return ParentLayer; + } +} \ No newline at end of file diff --git a/Assets/script/AtomeFactory.cs.meta b/Assets/script/Atome/AtomeFactory.cs.meta similarity index 100% rename from Assets/script/AtomeFactory.cs.meta rename to Assets/script/Atome/AtomeFactory.cs.meta diff --git a/Assets/script/AtomeInformation.cs b/Assets/script/Atome/AtomeInformation.cs similarity index 100% rename from Assets/script/AtomeInformation.cs rename to Assets/script/Atome/AtomeInformation.cs diff --git a/Assets/script/AtomeInformation.cs.meta b/Assets/script/Atome/AtomeInformation.cs.meta similarity index 100% rename from Assets/script/AtomeInformation.cs.meta rename to Assets/script/Atome/AtomeInformation.cs.meta diff --git a/Assets/script/atomes.json b/Assets/script/Atome/atomes.json similarity index 100% rename from Assets/script/atomes.json rename to Assets/script/Atome/atomes.json diff --git a/Assets/script/atomes.json.meta b/Assets/script/Atome/atomes.json.meta similarity index 100% rename from Assets/script/atomes.json.meta rename to Assets/script/Atome/atomes.json.meta diff --git a/Assets/script/AtomeFactory.cs b/Assets/script/AtomeFactory.cs deleted file mode 100644 index 56e4361..0000000 --- a/Assets/script/AtomeFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; - - - -public class AtomeFactory : MonoBehaviour{ - - public TextAsset jsonFile; - - private static AtomeFactory instance; - - private AtomesInformation atomeInJson; - - private Dictionary AtomeDictionary; - - public AtomeFactory(TextAsset jsonFile){ - AtomeFactory.instance = this; - AtomeDictionary = new Dictionary(); - atomeInJson = JsonUtility.FromJson(jsonFile.text); - foreach (var atome in atomeInJson.atomes){ - AtomeDictionary.Add(atome.symbol, atome); - } - } - - public static AtomeFactory getInstrance(){ - if(AtomeFactory.instance == null){ - Debug.LogError("no Json file"); - } - return AtomeFactory.instance; - } - - public static AtomeFactory getInstrance(TextAsset jsonFile){ - if(AtomeFactory.instance == null){ - AtomeFactory.instance = new AtomeFactory(jsonFile); - } - return AtomeFactory.instance; - } - - public AtomeInformation createAtome(string symbol){ - if(!AtomeDictionary.ContainsKey(symbol)){ - Debug.LogError("Atome does not existe in json"); - } - AtomeInformation atome = AtomeDictionary[symbol]; - - return atome; - } - -} \ No newline at end of file diff --git a/Assets/script/Molecule.meta b/Assets/script/Molecule.meta new file mode 100644 index 0000000..8aac8ac --- /dev/null +++ b/Assets/script/Molecule.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: daab5552b7014024c9b81a31c7eb0b12 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/script/Atom.cs b/Assets/script/Molecule/Atom.cs similarity index 100% rename from Assets/script/Atom.cs rename to Assets/script/Molecule/Atom.cs diff --git a/Assets/script/Atom.cs.meta b/Assets/script/Molecule/Atom.cs.meta similarity index 100% rename from Assets/script/Atom.cs.meta rename to Assets/script/Molecule/Atom.cs.meta diff --git a/Assets/script/Bond.cs b/Assets/script/Molecule/Bond.cs similarity index 100% rename from Assets/script/Bond.cs rename to Assets/script/Molecule/Bond.cs diff --git a/Assets/script/Bond.cs.meta b/Assets/script/Molecule/Bond.cs.meta similarity index 100% rename from Assets/script/Bond.cs.meta rename to Assets/script/Molecule/Bond.cs.meta diff --git a/Assets/script/Molecul.json b/Assets/script/Molecule/Molecul.json similarity index 100% rename from Assets/script/Molecul.json rename to Assets/script/Molecule/Molecul.json diff --git a/Assets/script/Molecul.json.meta b/Assets/script/Molecule/Molecul.json.meta similarity index 100% rename from Assets/script/Molecul.json.meta rename to Assets/script/Molecule/Molecul.json.meta diff --git a/Assets/script/MoleculeFactory.cs b/Assets/script/Molecule/MoleculeFactory.cs similarity index 100% rename from Assets/script/MoleculeFactory.cs rename to Assets/script/Molecule/MoleculeFactory.cs diff --git a/Assets/script/MoleculeFactory.cs.meta b/Assets/script/Molecule/MoleculeFactory.cs.meta similarity index 100% rename from Assets/script/MoleculeFactory.cs.meta rename to Assets/script/Molecule/MoleculeFactory.cs.meta diff --git a/Assets/script/Molecules.cs b/Assets/script/Molecule/Molecules.cs similarity index 100% rename from Assets/script/Molecules.cs rename to Assets/script/Molecule/Molecules.cs diff --git a/Assets/script/Molecules.cs.meta b/Assets/script/Molecule/Molecules.cs.meta similarity index 100% rename from Assets/script/Molecules.cs.meta rename to Assets/script/Molecule/Molecules.cs.meta diff --git a/Assets/script/Properties.cs b/Assets/script/Molecule/Properties.cs similarity index 100% rename from Assets/script/Properties.cs rename to Assets/script/Molecule/Properties.cs diff --git a/Assets/script/Properties.cs.meta b/Assets/script/Molecule/Properties.cs.meta similarity index 100% rename from Assets/script/Properties.cs.meta rename to Assets/script/Molecule/Properties.cs.meta diff --git a/Assets/script/ReadMolecule.cs b/Assets/script/Molecule/ReadMolecule.cs similarity index 100% rename from Assets/script/ReadMolecule.cs rename to Assets/script/Molecule/ReadMolecule.cs diff --git a/Assets/script/ReadMolecule.cs.meta b/Assets/script/Molecule/ReadMolecule.cs.meta similarity index 100% rename from Assets/script/ReadMolecule.cs.meta rename to Assets/script/Molecule/ReadMolecule.cs.meta diff --git a/Assets/script/New Animation.anim b/Assets/script/New Animation.anim new file mode 100644 index 0000000..aa588a9 --- /dev/null +++ b/Assets/script/New Animation.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Animation + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/script/New Animation.anim.meta b/Assets/script/New Animation.anim.meta new file mode 100644 index 0000000..77cf58b --- /dev/null +++ b/Assets/script/New Animation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f4a98ccdd3a2514495ffff7ef525aa7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/script/New Animator Controller.controller b/Assets/script/New Animator Controller.controller new file mode 100644 index 0000000..0e56030 --- /dev/null +++ b/Assets/script/New Animator Controller.controller @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Animator Controller + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: [] diff --git a/Assets/script/New Animator Controller.controller.meta b/Assets/script/New Animator Controller.controller.meta new file mode 100644 index 0000000..24017de --- /dev/null +++ b/Assets/script/New Animator Controller.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 825a7187bec92284dbce290965de4dba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/script/Testor.cs b/Assets/script/Testor.cs new file mode 100644 index 0000000..a2f2f9a --- /dev/null +++ b/Assets/script/Testor.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +class MoleculeFactoryTester: MonoBehaviour { + + public TextAsset moleculeJson; + public TextAsset atomJson; + + void Start(){ + MoleculeFactory factory = MoleculeFactory.getInstrance(this.moleculeJson); + AtomeFactory atomeFactory = AtomeFactory.getInstrance(this.atomJson); + GameObject mol = atomeFactory.createAnimatedAtome("Na"); + //mol.transform.position = new Vector3(0,1,0); + //GameObject bon = GameOject.CreatePrimitive(PrimitiveType.) + } + +} \ No newline at end of file diff --git a/Assets/script/Testor.cs.meta b/Assets/script/Testor.cs.meta new file mode 100644 index 0000000..dc498a2 --- /dev/null +++ b/Assets/script/Testor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d15c31ec91cb674fac22415c1ceff75 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: