18 Commits

Author SHA1 Message Date
27ce4e14a8 Merge remote-tracking branch 'origin/develop' into feature/AtomesFactory 2024-02-02 14:02:05 +01:00
9b7b156d7b add 3D atome 2024-02-02 14:33:35 +01:00
f7a2cc4c88 Add factory for animated Atome 2024-01-26 12:03:56 +01:00
cb0396e23c Merge pull request 'feat: liaison entre les molécules et couleur' (#9) from feat/molecule/bons into develop
Reviewed-on: #9
Reviewed-by: Mathis <mathis.ragot@epitech.eu>
2024-01-18 14:47:23 +01:00
aca2898e8c Merge remote-tracking branch 'origin/develop' into feat/molecule/bons
# Conflicts:
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/hydro_scaled.jpg.meta
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/hydrogen_scaled.jpg.meta
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/hydrogene_marker_scaled.jpg.meta
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/oxy_scaled.jpg.meta
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/oxygen_scaled.jpg.meta
#	Assets/Editor/Vuforia/ImageTargetTextures/T-VIR/oxygene_marker_scaled.jpg.meta
#	Assets/XR/Settings/OpenXR Package Settings.asset
#	Assets/__Scenes/MainMenu.unity
2024-01-18 13:46:44 +01:00
1bf7031f32 on est good 2024-01-18 14:24:40 +01:00
5ca3d16a29 Squashed commit of the following:
commit 807aa8c3c6
Merge: 34f74aa 3777d06
Author: Clement <clement@jo85.com>
Date:   Thu Jan 18 12:02:57 2024 +0100

    Merge pull request 'add Atomes Factory' (#10) from feature/AtomesFactory into develop

    Reviewed-on: #10
    Reviewed-by: Clement <clement@jo85.com>

commit 3777d06a0e
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Thu Jan 18 12:00:00 2024 +0100

    Rename Classname

commit 16bd5bfb6c
Merge: da9d57b 34f74aa
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Thu Jan 18 11:46:03 2024 +0100

    Merge remote-tracking branch 'origin/develop' into feature/AtomesFactory

commit da9d57b0bb
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Thu Jan 18 11:44:22 2024 +0100

    vue foria config

commit 5346e596c8
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Thu Jan 18 11:28:02 2024 +0100

    [feature/AtomesFactory] - remove testing file

commit f613217658
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Thu Jan 18 10:38:59 2024 +0100

    [feature/AtomesFactory] - Add json for atomes

commit bc2b9e02fd
Author: Mathis <mathis.ragot@epitech.eu>
Date:   Fri Jan 12 15:37:09 2024 +0100

    add Atomes Factory

commit 34f74aa443
Merge: 8b6d07f f181fd9
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:50:43 2024 +0100

    Merge pull request 'feature/multi_targets' (#7) from feature/multi_targets into develop

    Reviewed-on: #7
    Reviewed-by: Clement <clement@jo85.com>

commit f181fd9935
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:50:10 2024 +0100

    fix du mauvais nom de scene dans le script ChangeScene.cs

commit 1c76868eee
Merge: f1ec062 8b6d07f
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:39:02 2024 +0100

    Merge remote-tracking branch 'origin/develop' into feature/multi_targets

commit f1ec062047
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:37:29 2024 +0100

    ajout du font fallback

commit 9c23975b20
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:36:49 2024 +0100

    rajouts des fonts text mesh pro

commit aff9df22cf
Merge: a791273 73394e5
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 11:03:32 2024 +0100

    Merge remote-tracking branch 'origin/develop' into feature/multi_targets

commit a7912733e5
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 10:54:51 2024 +0100

    Ajout dans le canvas d'éléments UI (nom, description....)

commit 0313fe28a1
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Jan 12 09:57:07 2024 +0100

    Suppression du build de la CI

commit 5237a32bb4
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Thu Jan 11 16:18:35 2024 +0100

    ajout de la keystore de debug (user) + changement de la target version d'android

commit afa265dd31
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Thu Jan 11 11:26:53 2024 +0100

    Affichage des molécules unitairement et en mode fusion

commit 84136dcc5c
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Dec 22 15:05:47 2023 +0100

    MAJ du fichier d'action build.yaml

commit ce3c956544
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Dec 22 15:02:10 2023 +0100

    MAJ du fichier d'action build.yaml

commit 8f105732f7
Author: Nicolas <nicolas.sansd@gmail.com>
Date:   Fri Dec 22 14:36:52 2023 +0100

    Ajout de la multitarget pour générer un préfab
2024-01-18 14:00:09 +01:00
824a8fdbc6 feat: WIP color 2024-01-18 12:03:38 +01:00
807aa8c3c6 Merge pull request 'add Atomes Factory' (#10) from feature/AtomesFactory into develop
Reviewed-on: #10
Reviewed-by: Clement <clement@jo85.com>
2024-01-18 12:02:57 +01:00
3777d06a0e Rename Classname 2024-01-18 12:00:00 +01:00
16bd5bfb6c Merge remote-tracking branch 'origin/develop' into feature/AtomesFactory 2024-01-18 11:46:03 +01:00
da9d57b0bb vue foria config 2024-01-18 11:44:22 +01:00
5346e596c8 [feature/AtomesFactory] - remove testing file 2024-01-18 11:28:02 +01:00
c302d4c277 color okay 2024-01-18 11:25:51 +01:00
f613217658 [feature/AtomesFactory] - Add json for atomes 2024-01-18 10:38:59 +01:00
13c59458bb sync 2024-01-12 16:28:35 +01:00
bc2b9e02fd add Atomes Factory 2024-01-12 15:37:09 +01:00
34f74aa443 Merge pull request 'feature/multi_targets' (#7) from feature/multi_targets into develop
Reviewed-on: #7
Reviewed-by: Clement <clement@jo85.com>
2024-01-12 11:50:43 +01:00
45 changed files with 3458 additions and 543 deletions

View File

@ -15,7 +15,6 @@ public class ActiveScoppedElements : MonoBehaviour
// Start is called before the first frame update
public TextAsset jsonFile;
public HashSet<String> actives = new HashSet<String>();
public HashSet<GameObject> InstantiatesObject = new HashSet<GameObject>();
public TextMeshProUGUI textToUpdate;
@ -52,107 +51,9 @@ public class ActiveScoppedElements : MonoBehaviour
}
}
static IEnumerable<string> GetPermutations(List<string> list)
{
if (list.Count == 1)
{
// Cas de base : une seule chaîne
yield return list[0];
}
else
{
// Récursion pour obtenir les permutations du reste de la liste
foreach (var item in list)
{
var remaining = new List<string>(list);
remaining.Remove(item);
foreach (var subPermutation in GetPermutations(remaining))
{
// Concaténer l'élément actuel avec les permutations du reste
yield return item + subPermutation;
}
}
}
}
private void DisableAllMarkerModel()
{
foreach (var o in GameObject.FindGameObjectsWithTag("OBJ"))
{
o.SetActive(false);
DisableGameObjects.Add(o);
}
}
private void EnableAllMarkerModel()
{
foreach (var o in DisableGameObjects)
{
o.SetActive(true);
}
DisableGameObjects.Clear();
}
private GameObject FindGameObjectWithFormula()
{
var factory = MoleculeFactory.getInstrance(this.jsonFile);
Debug.Log("ACTIVES ELEMENTS:");
Debug.Log(this.actives);
foreach (var formula in GetPermutations(this.actives.ToList()))
{
Debug.Log("FORMULA: " + String.Join("", formula));
if (factory.hasMolecule(String.Join("", formula)))
{
return factory.createMolecule(String.Join("", formula));
}
}
return null;
}
private void RefreshAtom()
{
var objToFind = FindGameObjectWithFormula();
if (objToFind != null)
{
Vector3 cameraPosition = Camera.main.transform.position;
// Obtenez la rotation de la caméra sans inclure la rotation autour de l'axe Y
Quaternion cameraRotation = Quaternion.Euler(0, Camera.main.transform.rotation.eulerAngles.y, 0);
// Calculez la position finale en ajoutant la direction vers l'avant multipliée par la distance désirée
Vector3 position = cameraPosition + cameraRotation * Vector3.forward * 0.35f;
//var instantiatedObj = Instantiate(objt.obj, position, cameraRotation);
objToFind.transform.position = position;
objToFind.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
objToFind.transform.rotation = cameraRotation;
MeshRenderer meshRenderer = objToFind.GetComponent<MeshRenderer>();
if (meshRenderer != null)
{
float sizeInDirection = meshRenderer.bounds.size.x; // Pour la hauteur, ajustez selon votre besoin
Debug.Log("SizeInDirection: " + sizeInDirection);
objToFind.transform.position -= objToFind.transform.right * sizeInDirection * 0.175f;
}
Debug.Log("RefreshAtom(): Created " + objToFind.name);
objToFind.name = "[N] " + objToFind.name;
InstantiatesObject.Add(objToFind);
this.OnInstantiateObject(objToFind);
Debug.Log("Instantiate " + objToFind.name);
DisableAllMarkerModel();
} else {
foreach (var o in InstantiatesObject) {
Destroy(o);
OnDestroyObject(o);
}
InstantiatesObject.Clear();
EnableAllMarkerModel();
}
/*foreach (var objt in objectToInstantiates)
foreach (var objt in objectToInstantiates)
{
if (objt.elements.TrueForAll((s => actives.Contains(s))))
{
@ -165,7 +66,6 @@ public class ActiveScoppedElements : MonoBehaviour
DisableGameObjects.Add(a);
}
}
// Obtenez la position de la caméra
Vector3 cameraPosition = Camera.main.transform.position;
@ -175,18 +75,11 @@ public class ActiveScoppedElements : MonoBehaviour
// Calculez la position finale en ajoutant la direction vers l'avant multipliée par la distance désirée
Vector3 position = cameraPosition + cameraRotation * Vector3.forward * 0.35f;
//var instantiatedObj = Instantiate(objt.obj, position, cameraRotation);
var obj = MoleculeFactory.getInstrance(this.jsonFile).createMolecule("CO2");
obj.transform.position = position;
obj.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
obj.transform.rotation = cameraRotation;
Debug.Log("RefreshAtom(): Created " + obj.name);
obj.name = "[N] " + objt.obj.name;
InstantiatesObject.Add(obj);
this.OnInstantiateObject(obj);
Debug.Log("Instantiate " + obj.name);
var instantiatedObj = Instantiate(objt.obj, position, cameraRotation);
instantiatedObj.name = "[N] " + objt.obj.name;
InstantiatesObject.Add(instantiatedObj);
this.OnInstantiateObject(instantiatedObj);
Debug.Log("Instantiate " + instantiatedObj.name);
}
else
{
@ -204,7 +97,7 @@ public class ActiveScoppedElements : MonoBehaviour
DisableGameObjects.Clear();
}
}
}*/
}
if (InstantiatesObject.Count > 0)
{

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -158,6 +158,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

File diff suppressed because one or more lines are too long

View File

@ -18,11 +18,11 @@ MonoBehaviour:
delayedInitialization: 0
cameraFocusModeSetting: 2
cameraDeviceModeSetting: -1
maxSimultaneousImageTargets: 8
maxSimultaneousImageTargets: 4
virtualSceneScaleFactor: 1
modelTargetRecoWhileExtendedTracked: 1
shareRecordingsInITunes: 0
logLevel: 1
logLevel: 0
version: 10.18.4
eulaAcceptedVersions: '{"Values":["10.17","10.18","0.0","10.15"]}'
database:

File diff suppressed because one or more lines are too long

View File

@ -348,10 +348,11 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9f0ebc320a151d3408ea1e9fce54d40e, type: 3}
m_Name: OpenXR Package Settings
m_EditorClassIdentifier:
Keys: 0100000007000000
Keys: 01000000070000000d000000
Values:
- {fileID: -2820601610673514729}
- {fileID: -7933880819051152802}
- {fileID: 2102387217465899027}
--- !u!114 &328694643663705065
MonoBehaviour:
m_ObjectHideFlags: 0
@ -455,6 +456,21 @@ MonoBehaviour:
company: Unity
priority: 0
required: 0
--- !u!114 &2102387217465899027
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b5a1f07dc5afe854f9f12a4194aca3fb, type: 3}
m_Name: WebGL
m_EditorClassIdentifier:
features: []
m_renderMode: 1
m_depthSubmissionMode: 0
--- !u!114 &2292148946669457467
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -123,72 +123,6 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &52111041
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 2115541903}
m_Modifications:
- target: {fileID: 2296197579250447769, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_Name
value: OBJ_Hydrogene
objectReference: {fileID: 0}
- target: {fileID: 2296197579250447769, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_TagString
value: OBJ
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalPosition.y
value: 0.234
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
--- !u!4 &52111042 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
m_PrefabInstance: {fileID: 52111041}
m_PrefabAsset: {fileID: 0}
--- !u!1 &239149474
GameObject:
m_ObjectHideFlags: 0
@ -888,7 +822,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7895074e456606e4aa89ecc052bebf16, type: 3}
m_Name:
m_EditorClassIdentifier:
jsonFile: {fileID: 4900000, guid: 3a11d0f923ae50c4d82ee1dda0f629a3, type: 3}
textToUpdate: {fileID: 1759769650}
objectInstantiateText: {fileID: 701088218}
objectToInstantiates:
@ -1111,7 +1044,7 @@ GameObject:
- component: {fileID: 1576193663}
- component: {fileID: 1576193662}
m_Layer: 0
m_Name: H
m_Name: Hydrogene
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -1202,7 +1135,7 @@ MonoBehaviour:
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: H
m_StringArgument: Hydrogene
m_BoolArgument: 0
m_CallState: 2
OnTargetLost:
@ -1217,7 +1150,7 @@ MonoBehaviour:
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: H
m_StringArgument: Hydrogene
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &1576193664
@ -1880,7 +1813,7 @@ GameObject:
- component: {fileID: 2082618018}
- component: {fileID: 2082618017}
m_Layer: 0
m_Name: O
m_Name: Oxygene
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -1971,7 +1904,7 @@ MonoBehaviour:
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: O
m_StringArgument: Oxygene
m_BoolArgument: 0
m_CallState: 2
OnTargetLost:
@ -1986,7 +1919,7 @@ MonoBehaviour:
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: O
m_StringArgument: Oxygene
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &2082618019
@ -2016,260 +1949,6 @@ MonoBehaviour:
mTrackingOptimization: 0
mTrackingOptimizationNeedsUpgrade: 0
mPreview: {fileID: 2082618017}
--- !u!1 &2115541902
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2115541903}
- component: {fileID: 2115541906}
- component: {fileID: 2115541905}
- component: {fileID: 2115541904}
m_Layer: 0
m_Name: H2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2115541903
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115541902}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.134, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 52111042}
m_Father: {fileID: 2141458387}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2115541904
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115541902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1778676317, guid: 8a9a760f95896c34689febc965510927, type: 3}
m_Name:
m_EditorClassIdentifier:
mObserverBehaviour: {fileID: 2115541906}
mHiddenRoot: {fileID: 0}
mTargetName: hydro
mDatasetName: Vuforia/T-VIR.xml
mCastedBehaviour: {fileID: 2115541906}
mMeshFilter: {fileID: 0}
mMeshRenderer: {fileID: 0}
--- !u!114 &2115541905
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115541902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 886328de6a5c14cbb85854fdf1a5085b, type: 3}
m_Name:
m_EditorClassIdentifier:
StatusFilter: 0
UsePoseSmoothing: 0
AnimationCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 3.3333333
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.3
value: 1
inSlope: 3.3333333
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
OnTargetFound:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1201501054}
m_TargetAssemblyTypeName: ActiveScoppedElements, Assembly-CSharp
m_MethodName: AddScoppedElement
m_Mode: 5
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: H2
m_BoolArgument: 0
m_CallState: 2
OnTargetLost:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1201501054}
m_TargetAssemblyTypeName: ActiveScoppedElements, Assembly-CSharp
m_MethodName: RemoveUnscoppedElement
m_Mode: 5
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: H2
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &2115541906
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115541902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -1631628248, guid: 8a9a760f95896c34689febc965510927, type: 3}
m_Name:
m_EditorClassIdentifier:
PreviewVisible: 1
RuntimeOcclusion: 0
RuntimeCollider: 0
mTrackableName: hydro
mInitializedInEditor: 1
mDataSetPath: Vuforia/T-VIR.xml
mAspectRatio: 1
mImageTargetType: 0
mWidth: 1
mHeight: 1
mRuntimeTexture: {fileID: 0}
mMotionHint: 1
mTrackingOptimization: 0
mTrackingOptimizationNeedsUpgrade: 0
mPreview: {fileID: 2115541904}
--- !u!1 &2138147400
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2138147404}
- component: {fileID: 2138147403}
- component: {fileID: 2138147402}
- component: {fileID: 2138147401}
m_Layer: 0
m_Name: SPHERE
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!135 &2138147401
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2138147400}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &2138147402
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2138147400}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &2138147403
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2138147400}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &2138147404
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2138147400}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.9220078, y: 0.49818814, z: 0.32947016}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2141458382
GameObject:
m_ObjectHideFlags: 0
@ -2390,7 +2069,6 @@ Transform:
m_Children:
- {fileID: 2082618016}
- {fileID: 1576193661}
- {fileID: 2115541903}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2141791690
@ -2476,4 +2154,3 @@ SceneRoots:
- {fileID: 2141458387}
- {fileID: 1201501056}
- {fileID: 1176767512}
- {fileID: 2138147404}

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.3708985, g: 0.37837005, b: 0.3572253, a: 1}
m_IndirectSpecularColor: {r: 0.37311918, g: 0.3807398, b: 0.35872716, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@ -332,6 +332,52 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 136169417}
m_CullTransparentMesh: 1
--- !u!1 &524575261
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 524575263}
- component: {fileID: 524575262}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &524575262
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 524575261}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8c2433f4f2c3ba343851fdf3c660c21e, type: 3}
m_Name:
m_EditorClassIdentifier:
moleculeJson: {fileID: 4900000, guid: 3a11d0f923ae50c4d82ee1dda0f629a3, type: 3}
atomJson: {fileID: 4900000, guid: ab8f44086e6af6f48a38b7d7d595e9a2, type: 3}
--- !u!4 &524575263
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 524575261}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.5532938, y: -1.3569599, z: -4.0075746}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &534669303
GameObject:
m_ObjectHideFlags: 0
@ -1250,3 +1296,4 @@ SceneRoots:
- {fileID: 693850230}
- {fileID: 732397232}
- {fileID: 534669306}
- {fileID: 524575263}

8
Assets/script/Atome.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d277baeb8e7f7794fb44493815552a02
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<string, AtomeInformation> AtomeDictionary;
public AtomeFactory(TextAsset jsonFile){
AtomeFactory.instance = this;
AtomeDictionary = new Dictionary<string, AtomeInformation>();
atomeInJson = JsonUtility.FromJson<AtomesInformation>(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>();
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<Renderer>().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<Renderer>().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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 455447ed8d2676a4ba2d5cf8247bd83c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,37 @@
using System.Collections.Generic;
using System;
[System.Serializable]
public class AtomeProps {
public string yeardiscovered;
public string atomicmass;
public string standardstate;
public string groupblock;
public string discovered_by;
public string named_by;
}
[System.Serializable]
public class Representation {
public string color;
}
[System.Serializable]
public class AtomeInformation
{
public int atomicNumber;
public string symbol;
public string name;
public int protons;
public int neutrons;
public AtomeProps properties;
public Representation representation;
}
[System.Serializable]
public class AtomesInformation
{
// liste des liason entre les atoms
public AtomeInformation[] atomes;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d2ff888d2e46a254ebb339c8dd3ed083
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ab8f44086e6af6f48a38b7d7d595e9a2
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,25 @@
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);
factory.setAtomFactory(atomeFactory);
GameObject mol = factory.createMolecule("O2");
GameObject mol2 = factory.createMolecule("H2O");
mol.transform.position = new Vector3(0,1,0);
GameObject mol3 = factory.createMolecule("C4H10");
mol3.transform.position = new Vector3(0,5,0);
//GameObject bon = GameOject.CreatePrimitive(PrimitiveType.)
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8c2433f4f2c3ba343851fdf3c660c21e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: daab5552b7014024c9b81a31c7eb0b12
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -93,6 +93,23 @@
"meltingPoint": -138.3,
"boilingPoint": -0.5
}
},{
"name": "Eau",
"formula": "H2O",
"atoms": [
{"element": "O", "geometry": [0.0, 0.0, 0.0]},
{"element": "H", "geometry": [1.2, 0.0, 0.0]},
{"element": "H", "geometry": [-1.2, 0.0, 0.0]}
],
"bonds": [
{"atoms": [0, 1], "order": 1},
{"atoms": [0, 2], "order": 1}
],
"properties": {
"molecularMass": 18.01528,
"meltingPoint": 0.0,
"boilingPoint": 100.0
}
}
]
}

View File

@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using UnityEngine;
public class MoleculeFactory : MonoBehaviour{
public TextAsset jsonFile;
private AtomeFactory atomeFactory;
private static MoleculeFactory instance;
private Molecules moleculesInJson;
private Dictionary<string, Molecule> moleculesDictionary;
public MoleculeFactory(TextAsset jsonFile){
MoleculeFactory.instance = this;
moleculesDictionary = new Dictionary<string, Molecule>();
moleculesInJson = JsonUtility.FromJson<Molecules>(jsonFile.text);
foreach (var molecule in moleculesInJson.molecules){
moleculesDictionary.Add(molecule.formula, molecule);
}
}
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){
if(!moleculesDictionary.ContainsKey(formula)){
Debug.LogError("molecules does not existe in json");
}
Molecule molecule = moleculesDictionary[formula];
GameObject sortie = new GameObject(molecule.name);
foreach (Atom atom in molecule.atoms) {
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphere.transform.parent = sortie.transform;
sphere.name = atom.element;
sphere.transform.localPosition = new Vector3(atom.geometry[0], atom.geometry[1], atom.geometry[2]);
AtomeInformation att = atomeFactory.createAtome(atom.element);
Color myColor = new Color(0, 0, 1, 1);
ColorUtility.TryParseHtmlString(att.representation.color, out myColor);
sphere.GetComponent<Renderer>().material.color = myColor;
}
foreach (Bond bond in molecule.bonds){
float atom1x = molecule.atoms[bond.atoms[0]].geometry[0];
float atom2x = molecule.atoms[bond.atoms[1]].geometry[0];
float atom1y = molecule.atoms[bond.atoms[0]].geometry[1];
float atom2y = molecule.atoms[bond.atoms[1]].geometry[1];
float atom1z = molecule.atoms[bond.atoms[0]].geometry[2];
float atom2z = molecule.atoms[bond.atoms[1]].geometry[2];
Vector3 vecAtom1 = new Vector3(atom1x, atom1y, atom1z);
Vector3 vecAtom2 = new Vector3(atom2x, atom2y, atom2z);
GameObject GObond = CreateCylinderBetweenPoints(vecAtom1,vecAtom2, 0.3f);
GObond.transform.parent = sortie.transform;
}
return sortie;
}
public void setAtomFactory(AtomeFactory atomeFactory){
this.atomeFactory = atomeFactory;
}
private GameObject CreateCylinderBetweenPoints(Vector3 start, Vector3 end, float width){
var offset = end - start;
var scale = new Vector3(width, offset.magnitude / 2.0f, width);
var position = start + (offset / 2.0f);
var cylinderPrefab = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cylinderPrefab.transform.position = position;
cylinderPrefab.transform.rotation = Quaternion.identity;
cylinderPrefab.transform.up = offset;
cylinderPrefab.transform.localScale = scale;
return cylinderPrefab;
}
}

View File

@ -1,64 +0,0 @@
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;
moleculesDictionary = new Dictionary<string, Molecule>();
moleculesInJson = JsonUtility.FromJson<Molecules>(jsonFile.text);
foreach (var molecule in moleculesInJson.molecules){
moleculesDictionary.Add(molecule.formula, molecule);
}
}
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 Boolean hasMolecule(String formula)
{
return moleculesDictionary.ContainsKey(formula);
}
public GameObject createMolecule (string formula){
if(!moleculesDictionary.ContainsKey(formula)){
Debug.LogError("molecules does not existe in json");
}
Molecule molecule = moleculesDictionary[formula];
GameObject sortie = new GameObject(molecule.name);
foreach (Atom atom in molecule.atoms) {
var template = GameObject.Find("SPHERE");
var createdObj = Instantiate(template, new Vector3(atom.geometry[0], atom.geometry[1], atom.geometry[2]), Quaternion.identity);
createdObj.transform.parent = sortie.transform;
createdObj.name = atom.element;
createdObj.transform.localPosition = new Vector3(atom.geometry[0], atom.geometry[1], atom.geometry[2]);
//TODO: géré les laision
//TODO: géré la taille de l'atome
//TODO: géré la couleur de l'atome
}
return sortie;
}
}

View File

@ -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: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3f4a98ccdd3a2514495ffff7ef525aa7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 825a7187bec92284dbce290965de4dba
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

19
Assets/script/Testor.cs Normal file
View File

@ -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.)
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7d15c31ec91cb674fac22415c1ceff75
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1 +1 @@
AAABmQWapYRGu7Loo2wvgwZUGzXNOVLSaix1jbBp7+6hM1WFhjBkddUoLqWxkauNc7gcguqgEle3Gl3JhXdUv8TOSygVCeRnuokmoncR2/5V78p0F0Cfn5gBebVC39W8GQ6XkVyp75Y8d30EG+W8VKPfuse2cfavkxXpI2Nl3LSy0VRONL0XNPimQXCFL0ahAeUkOc37yrfYL9FrG7wg4Rw+k4YLs++CGJhpcKysknksOgQGrDLh9Hj9lfoKw+YWYwvTA55r6X388fA3hXuRGNehejMd4orrTqM65do7Uf0KR4eC/KXr5cmkSwN4FwRxWaGm16G0tXit+hD29lyZbT/XJ64=
AAABmY7g9UmlfucNZM2mK1+zBTca7O7gdAXUc9FcH4yUbYfsFOfH72rVb0qPESQq/9HBlqfD04SyJF6jtD6oQDsZxFAYgmMCBkOzNr/C/s4mdV37Qw5Nm9GqecPYpccvAWOqH/VAtFBp5ksgnAnVhuHUqh0NmvpixXq82Meo/bg7usPAWSDsQt/6kR89nttLOknq/Rt+SN8E91Txj6nsYZH8gsxrgC9MYPO0koHuIvfeLk0wcqrMzxZawaNLp6CNWgUYDXWIWW1AtB9dY5p56nnk/Yd4MyRevYDtcWdXCdiam48zdO470AuA8DkAFHOttVURidwRkVKq4z40E6J+5V3NqDg=