ajout de l'atom factory

This commit is contained in:
Nicolas 2024-02-02 15:29:49 +01:00
parent 9c5f5b15fb
commit a642cc0a38
19 changed files with 406 additions and 87 deletions

View File

@ -28,6 +28,7 @@ public class ActiveScoppedElements : MonoBehaviour
public TextAsset atomJsonFile;
public HashSet<String> actives = new HashSet<String>();
public HashSet<GameObject> InstantiatesObject = new HashSet<GameObject>();
public HashSet<GameObject> AtomInstantiatesObjects = new HashSet<GameObject>();
public TextMeshProUGUI textToUpdate;
public TextMeshProUGUI objectInstantiateText;
public HashSet<GameObject> DisableGameObjects = new HashSet<GameObject>();
@ -62,7 +63,7 @@ public class ActiveScoppedElements : MonoBehaviour
{
actives.Add(name);
RefreshText();
RefreshAtom(name);
RefreshAtom(name, true);
}
}
@ -232,10 +233,32 @@ public class ActiveScoppedElements : MonoBehaviour
return null;
}
private void RenderAtom(String elementName)
private void RenderAtom(String elementName, bool toAdd)
{
var cleanedElement = CleanStringOfDigits(elementName);
if (!toAdd)
{
try
{
var a = AtomInstantiatesObjects.First(t => t.name == ("ATOM_" + cleanedElement));
if (a != null)
{
AtomInstantiatesObjects.Remove(a);
Destroy(a);
Debug.Log("AtomInstantiatesObjects.Remove(a) called !");
return;
}
}
catch (Exception ex)
{
Debug.Log("pas trouvé");
return;
}
}
var atomObject = GameObject.Find(elementName);
if (atomObject == null) {
Debug.Log("atomObject=null");
return;
}
if (atomObject.transform.childCount >= 1) {
@ -243,7 +266,7 @@ public class ActiveScoppedElements : MonoBehaviour
Debug.Log("Object already created !");
return;
}
var cleanedElement = CleanStringOfDigits(elementName);
var factory = MoleculeFactory.getInstrance(this.jsonFile);
factory.setAtomFactory(this._atomFactory);
if (!factory.GetAtomFactory().hasAtome(cleanedElement))
@ -251,16 +274,24 @@ public class ActiveScoppedElements : MonoBehaviour
Debug.Log("No atom found with this formula '" + cleanedElement + "'");
return;
}
var obj = this._atomFactory.createAnimatedAtome(cleanedElement);
obj.name = "ATOM_" + cleanedElement;
obj.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
var obj = Instantiate(atomPrefabToInstantiate, new Vector3(0, 0, 0), Quaternion.identity);
AtomPrefab objPrefab = obj.GetComponent<AtomPrefab>();
AtomeInformation info = factory.GetAtomFactory().createAtome(cleanedElement);
objPrefab.Render(info);
Quaternion cameraRotation = Quaternion.Euler(0, Camera.main.transform.rotation.eulerAngles.y, 0);
obj.transform.localPosition = new Vector3(0, 0, 0);
obj.transform.SetParent(atomObject.transform, false);
obj.transform.rotation = cameraRotation;
AtomInstantiatesObjects.Add(obj);
//var obj = Instantiate(atomPrefabToInstantiate, new Vector3(0, 0, 0), Quaternion.identity);
//AtomPrefab objPrefab = obj.GetComponent<AtomPrefab>();
//AtomeInformation info = factory.GetAtomFactory().createAtome(cleanedElement);
//objPrefab.Render(info);
}
private void RefreshAtom(String elementName)
private void RefreshAtom(String elementName, bool toAdd)
{
RenderAtom(elementName);
var objToFind = FindGameObjectWithFormula();
if (objToFind != null)
{
@ -269,6 +300,13 @@ public class ActiveScoppedElements : MonoBehaviour
{
throw new Exception("NO MAIN CAMERA DEFINED ");
}
foreach (var atomInstantiatesObject in AtomInstantiatesObjects)
{
Destroy(atomInstantiatesObject);
}
AtomInstantiatesObjects.Clear();
Vector3 cameraPosition = Camera.main.transform.position;
Quaternion cameraRotation = Quaternion.Euler(0, Camera.main.transform.rotation.eulerAngles.y, 0);
Vector3 position = cameraPosition + cameraRotation * Vector3.forward * 0.35f;
@ -299,6 +337,7 @@ public class ActiveScoppedElements : MonoBehaviour
}
InstantiatesObject.Clear();
EnableAllMarkerModel();
RenderAtom(elementName, toAdd);
}
if (InstantiatesObject.Count > 0 && objectInstantiateText != null) {
@ -380,6 +419,6 @@ public class ActiveScoppedElements : MonoBehaviour
Debug.Log("Removed " + elementName);
actives.Remove(elementName);
RefreshText();
RefreshAtom(elementName);
RefreshAtom(elementName, false);
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 28b9d8dbb107495ca4f8eee7c58c8331
guid: 37af6d74498845929dd6e83207cb290b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: bef4d72022e54ca79ed956f8c53ba384
guid: e9c72328fc874d839109b14cf10682b3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

Binary file not shown.

View File

@ -0,0 +1,179 @@
fileFormatVersion: 2
guid: a0ad14f92cb7404986a81b94582472d0
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 1
swizzle: 50462976
cookieLightType: 2
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Lumin
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Windows Store Apps
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: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1203a963a0b24da48a481e62246ee716
guid: 79885e89e6674ad491bbbf9042a3ff9f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 39977f35879443cb8977b0765c069367
guid: 3c04e0e5c1c64aa9b6e290b3b324bc83
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 79979c2c9e3149a3aa74c3f3b1581859
guid: 008ede79072843598b9e0fe69288cc10
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 173366883292404a8fb0129994277f47
guid: fd028b6367dc453dbd4bde749074ca75
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,2 +1,2 @@
fileFormatVersion: 2
guid: 1a7d82f7fad541f78df7016101d3e776
guid: 1f8312d9157842a9af56e830533c076e

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<QCARConfig>
<Tracking>
<ImageTarget name="Na" size="1.000000 1.000000" />
<ImageTarget name="C" size="1.000000 1.000000" />
<ImageTarget name="O" size="1.000000 1.000000" />
<ImageTarget name="H" size="1.000000 1.000000" />

View File

@ -1,2 +1,2 @@
fileFormatVersion: 2
guid: 7c69adbb1eb240618f9f726726ddbe54
guid: 4b6f1d2c047e4730a77d53f36d5d507d

File diff suppressed because one or more lines are too long

View File

@ -322,6 +322,154 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4757697444972247267, guid: ae2d2b687aff85b46a01c62e312954d2, type: 3}
m_PrefabInstance: {fileID: 52111041}
m_PrefabAsset: {fileID: 0}
--- !u!1 &73440020
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 73440021}
- component: {fileID: 73440024}
- component: {fileID: 73440023}
- component: {fileID: 73440022}
m_Layer: 0
m_Name: Na
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &73440021
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 73440020}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 1.329}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2141458387}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &73440022
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 73440020}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1778676317, guid: 8a9a760f95896c34689febc965510927, type: 3}
m_Name:
m_EditorClassIdentifier:
mObserverBehaviour: {fileID: 73440024}
mHiddenRoot: {fileID: 0}
mTargetName: Na
mDatasetName: Vuforia/T-VIR.xml
mCastedBehaviour: {fileID: 73440024}
mMeshFilter: {fileID: 0}
mMeshRenderer: {fileID: 0}
--- !u!114 &73440023
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 73440020}
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: Na
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: Na
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &73440024
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 73440020}
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: Na
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: 73440022}
--- !u!1 &239149474
GameObject:
m_ObjectHideFlags: 0
@ -4808,6 +4956,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2082618016}
- {fileID: 73440021}
- {fileID: 1305875256}
- {fileID: 1576193661}
- {fileID: 2115541903}

View File

@ -36,6 +36,11 @@ public class AtomeFactory : MonoBehaviour{
}
return AtomeFactory.instance;
}
public bool hasAtome(String symbol)
{
return AtomeDictionary.ContainsKey(symbol);
}
public AtomeInformation createAtome(string symbol){
if(!AtomeDictionary.ContainsKey(symbol)){
@ -76,7 +81,7 @@ public class AtomeFactory : MonoBehaviour{
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.widthMultiplier = 0.03f; // Ajustez l'épaisseur de la ligne si nécessaire.
lineRenderer.positionCount = 100 + 1;
//Add Color
Color myColor = new Color(0, 0, 1, 1);

View File

@ -11,14 +11,14 @@ class MoleculeFactoryTester: MonoBehaviour {
public TextAsset atomJson;
void Start(){
MoleculeFactory factory = MoleculeFactory.getInstrance(this.moleculeJson);
/*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);
mol3.transform.position = new Vector3(0,5,0);*/
//GameObject bon = GameOject.CreatePrimitive(PrimitiveType.)
}

View File

@ -1,19 +0,0 @@
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

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