From 941ff406b1082c3fdad46480e6567579be7113e8 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Sun, 16 Feb 2020 17:25:26 -0800 Subject: [PATCH 01/12] created additional branch (nucleosynthesis) and spawned particles --- Assets/ModelSlector.cs | 7 ++++++- Assets/Scenes/base.unity | 13 +------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index da4e0947..846fbae1 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -94,9 +94,14 @@ public void ChooseModel() //... else if (dropDownValue == 4) { - //do stuff here + List coords = generateRandomCoords(4); dropDownMenu.GetComponent().value = 0; pannel.SetActive(false); + for (int x = 0; x < 4; x++) + { + Particle Hyd1 = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, coords[x], scale: 2f); + Hyd1.Spawn(); + } } } diff --git a/Assets/Scenes/base.unity b/Assets/Scenes/base.unity index 6b4c7c51..ac74607b 100644 --- a/Assets/Scenes/base.unity +++ b/Assets/Scenes/base.unity @@ -2320,17 +2320,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: cf9c39c330c410642b32365f389ae0f1, type: 3} m_Name: m_EditorClassIdentifier: - m_Name: - m_EditorClassIdentifier: - m_Name: - m_EditorClassIdentifier: - m_Name: - m_EditorClassIdentifier: - m_Name: - m_EditorClassIdentifier: - m_Name: - m_EditorClassIdentifier: - speed: {fileID: 0} --- !u!114 &727737757 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5318,7 +5307,7 @@ MonoBehaviour: m_Image: {fileID: 0} - m_Text: Na+ in Water m_Image: {fileID: 0} - - m_Text: '...' + - m_Text: Nucleosynthesis m_Image: {fileID: 0} m_OnValueChanged: m_PersistentCalls: From a3125064b3526dacd83e11eb5aa5b4807c81e988 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Mon, 17 Feb 2020 19:01:37 -0800 Subject: [PATCH 02/12] got protons colliding, tried to disable temperature slider --- Assets/ModelSlector.cs | 22 ++++++++++++++++++++++ Assets/main.cs | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index 846fbae1..f71bd5e3 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -101,6 +101,28 @@ public void ChooseModel() { Particle Hyd1 = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, coords[x], scale: 2f); Hyd1.Spawn(); + /* + GameObject BuffetTable = GameObject.Find("Buffet Table"); + Purpose: disable temperature (will be fixed at 15 million Kelvin) + for (int i = 0; i < BuffetTable.transform.childCount - 1; i++) + { + if (BuffetTable.transform.GetChild(i).transform.name == "Panel") + { + GameObject Panel = BuffetTable.transform.GetChild(i).gameObject; + for (int j = 0; j < Panel.transform.childCount - 1; j++) + { + if (Panel.transform.GetChild(j).transform.name == "temperatureSlider") + { + Panel.transform.GetChild(j).gameObject.GetComponent().enabled = false; + } + } + } + } + */ + float G = GameObject.Find("GameObject").GetComponent
().G; + float k = GameObject.Find("GameObject").GetComponent
().k; + G = 100000; + GameObject.Find("GameObject").GetComponent().initialize(G, k); } } } diff --git a/Assets/main.cs b/Assets/main.cs index 6fbabeeb..69cf9562 100644 --- a/Assets/main.cs +++ b/Assets/main.cs @@ -13,7 +13,7 @@ public class main : MonoBehaviour private void Start() { - // Initializes forces - gameObject.AddComponent().initialize(G, k); + // Initializes forces + gameObject.AddComponent().initialize(G, k); } } \ No newline at end of file From 78e17af1565c8e5b9d097290644da262f2432f8b Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Tue, 18 Feb 2020 16:33:00 -0800 Subject: [PATCH 03/12] created NuclearPhysics component to implement PPC, cleaned up code --- Assets/IC2020.cs | 1 + Assets/ModelSlector.cs | 20 +---------------- Assets/NuclearPhysics.cs | 41 +++++++++++++++++++++++++++++++++++ Assets/NuclearPhysics.cs.meta | 11 ++++++++++ 4 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 Assets/NuclearPhysics.cs create mode 100644 Assets/NuclearPhysics.cs.meta diff --git a/Assets/IC2020.cs b/Assets/IC2020.cs index 26720cea..742d2a5c 100644 --- a/Assets/IC2020.cs +++ b/Assets/IC2020.cs @@ -44,6 +44,7 @@ public static class ICColor public static Color Magnesium = new Color32(42, 128, 42, 255); public static Color Calcium = new Color32(128, 128, 128, 255); public static Color Potassium = new Color32(255, 20, 147, 255); + public static Color Neutron = new Color32(0, 124, 196, 255); } public class Particle diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index f71bd5e3..83585a93 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -100,25 +100,7 @@ public void ChooseModel() for (int x = 0; x < 4; x++) { Particle Hyd1 = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, coords[x], scale: 2f); - Hyd1.Spawn(); - /* - GameObject BuffetTable = GameObject.Find("Buffet Table"); - Purpose: disable temperature (will be fixed at 15 million Kelvin) - for (int i = 0; i < BuffetTable.transform.childCount - 1; i++) - { - if (BuffetTable.transform.GetChild(i).transform.name == "Panel") - { - GameObject Panel = BuffetTable.transform.GetChild(i).gameObject; - for (int j = 0; j < Panel.transform.childCount - 1; j++) - { - if (Panel.transform.GetChild(j).transform.name == "temperatureSlider") - { - Panel.transform.GetChild(j).gameObject.GetComponent().enabled = false; - } - } - } - } - */ + Hyd1.Spawn().AddComponent(); float G = GameObject.Find("GameObject").GetComponent
().G; float k = GameObject.Find("GameObject").GetComponent
().k; G = 100000; diff --git a/Assets/NuclearPhysics.cs b/Assets/NuclearPhysics.cs new file mode 100644 index 00000000..f13a7db0 --- /dev/null +++ b/Assets/NuclearPhysics.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using IC2020; + +/* + * This new component will be added to all protons in the Nucleosynthesis simulation + * This component gives nuclear physics abilities to the particles in question + * Ideas: + * Each of the particles in the 2H isotope (1 P, 1 P->N) of H will have the name '[P] 2Hydrogen' instead of '[P] Hydrogen' + * When two protons collide, collision.gameObject can become a neutron to form the 2H isotope (no new neutron instantiated) +*/ + +public class NuclearPhysics : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + private void OnCollisionEnter(Collision collision) { + // int NeutronCount = 0; + // Proton-Proton collision + if (collision.gameObject.name.Split(' ')[1] == "Hydrogen" && name.Split(' ')[1] == "Hydrogen") + { + Debug.Log("Collision!"); + /* Improved Method: making collision.gameObject a neutron + Particle Neutron = new Particle("Neutron " + NeutronCount, 0f, ICColor.Neutron, collision.gameObject.transform.position); + Neutron.Spawn(); // will be joined to the existing proton (to form isotope of H, 2H) + NeutronCount++; + */ + } + } +} diff --git a/Assets/NuclearPhysics.cs.meta b/Assets/NuclearPhysics.cs.meta new file mode 100644 index 00000000..7317c052 --- /dev/null +++ b/Assets/NuclearPhysics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb43df499052c864e951ec4f33137bfe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 3b8a313bf982c10dddab7a353571d5628d163132 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Wed, 19 Feb 2020 11:52:08 -0800 Subject: [PATCH 04/12] first step of PPC complete --- Assets/ModelSlector.cs | 6 ++---- Assets/NuclearPhysics.cs | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index 83585a93..098dc8df 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -97,14 +97,12 @@ public void ChooseModel() List coords = generateRandomCoords(4); dropDownMenu.GetComponent().value = 0; pannel.SetActive(false); + float k = GameObject.Find("GameObject").GetComponent
().k; for (int x = 0; x < 4; x++) { Particle Hyd1 = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, coords[x], scale: 2f); Hyd1.Spawn().AddComponent(); - float G = GameObject.Find("GameObject").GetComponent
().G; - float k = GameObject.Find("GameObject").GetComponent
().k; - G = 100000; - GameObject.Find("GameObject").GetComponent().initialize(G, k); + GameObject.Find("GameObject").GetComponent().initialize(100000, k); } } } diff --git a/Assets/NuclearPhysics.cs b/Assets/NuclearPhysics.cs index f13a7db0..002de135 100644 --- a/Assets/NuclearPhysics.cs +++ b/Assets/NuclearPhysics.cs @@ -30,12 +30,29 @@ private void OnCollisionEnter(Collision collision) { // Proton-Proton collision if (collision.gameObject.name.Split(' ')[1] == "Hydrogen" && name.Split(' ')[1] == "Hydrogen") { - Debug.Log("Collision!"); - /* Improved Method: making collision.gameObject a neutron - Particle Neutron = new Particle("Neutron " + NeutronCount, 0f, ICColor.Neutron, collision.gameObject.transform.position); - Neutron.Spawn(); // will be joined to the existing proton (to form isotope of H, 2H) - NeutronCount++; + gameObject.name = "[P] 2Hydrogen"; // Identify particles as belonging to an isotope + collision.gameObject.name = "[P] 2Hydrogen"; + collision.gameObject.GetComponent().charge = 0f; + collision.gameObject.GetComponent().material.color = ICColor.Neutron; + + /* Attempt: change image displayed on new neutron to reflect its neutral charge + GameObject tempLable; + tempLable = MonoBehaviour.Instantiate(GameObject.Find("Lable Canvas").GetComponent().imagePrefabs[2], Vector3.zero, Quaternion.identity); + tempLable.transform.SetParent(GameObject.Find("Lable Canvas").transform); + tempLable.GetComponent().sphereToFollow = collision.gameObject; + collision.gameObject.GetComponent().material.color = ICColor.Neutron; */ + + // Join proton and neutron + FixedJoint joint = gameObject.AddComponent(); + joint.connectedBody = collision.gameObject.GetComponent(); + + // Release a beta particle and neutrino + Particle beta = new Particle("[P] Beta", 1.0f, ICColor.Electron); + GameObject betaObject = beta.Spawn(); + + Particle neutrino = new Particle("[P] Neutrino", 0.1f, ICColor.Electron); + GameObject neutrinoObject = neutrino.Spawn(); } } } From f3905c003ea0a1b1e164a053f4859e332ef04f6c Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Wed, 26 Feb 2020 22:32:18 -0800 Subject: [PATCH 05/12] third class design --- Assets/Buffet Table/Image Prefabs/Zero.prefab | 125 ++++++++++++++++++ .../Image Prefabs/Zero.prefab.meta | 7 + Assets/Buffet Table/Image Prefabs/zero.png | Bin 0 -> 30741 bytes .../Buffet Table/Image Prefabs/zero.png.meta | 88 ++++++++++++ Assets/IC2020.cs | 4 +- Assets/ImageFollower.cs | 4 +- Assets/ModelSlector.cs | 20 ++- Assets/NuclearPhysics.cs | 58 -------- Assets/NuclearSimulation.cs | 24 ++++ Assets/NuclearSimulation.cs.meta | 11 ++ Assets/Scenes/base.unity | 2 + Assets/time.cs | 49 ++++--- UpgradeLog.htm | Bin 0 -> 33854 bytes 13 files changed, 299 insertions(+), 93 deletions(-) create mode 100644 Assets/Buffet Table/Image Prefabs/Zero.prefab create mode 100644 Assets/Buffet Table/Image Prefabs/Zero.prefab.meta create mode 100644 Assets/Buffet Table/Image Prefabs/zero.png create mode 100644 Assets/Buffet Table/Image Prefabs/zero.png.meta delete mode 100644 Assets/NuclearPhysics.cs create mode 100644 Assets/NuclearSimulation.cs create mode 100644 Assets/NuclearSimulation.cs.meta create mode 100644 UpgradeLog.htm diff --git a/Assets/Buffet Table/Image Prefabs/Zero.prefab b/Assets/Buffet Table/Image Prefabs/Zero.prefab new file mode 100644 index 00000000..c69b97c3 --- /dev/null +++ b/Assets/Buffet Table/Image Prefabs/Zero.prefab @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8526863496484344483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6607910320808845062} + - component: {fileID: 2099319776012936699} + - component: {fileID: 7746644101679292531} + - component: {fileID: 2462606199636594406} + m_Layer: 0 + m_Name: Zero + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6607910320808845062 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8526863496484344483} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 2.6842406, y: 1.8127503} + m_SizeDelta: {x: 12, y: 12} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!212 &2099319776012936699 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8526863496484344483} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, 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_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: b9f22128f2aec6641bdf83ded7e5bebb, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 12, y: 12} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!222 &7746644101679292531 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8526863496484344483} + m_CullTransparentMesh: 0 +--- !u!114 &2462606199636594406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8526863496484344483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b9f22128f2aec6641bdf83ded7e5bebb, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 diff --git a/Assets/Buffet Table/Image Prefabs/Zero.prefab.meta b/Assets/Buffet Table/Image Prefabs/Zero.prefab.meta new file mode 100644 index 00000000..f1d0ce20 --- /dev/null +++ b/Assets/Buffet Table/Image Prefabs/Zero.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 510780d5c8db4f443a0df858bd24b975 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Buffet Table/Image Prefabs/zero.png b/Assets/Buffet Table/Image Prefabs/zero.png new file mode 100644 index 0000000000000000000000000000000000000000..59d29b2b13db7a221586fea4ec3e7f814ce1e1a2 GIT binary patch literal 30741 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, sphereToFollow.transform.position); + //Convert the player's position to the UI space then apply the offset + transform.position = worldToUISpace(lableCanvas.GetComponent(), sphereToFollow.transform.position); } private Vector3 worldToUISpace(Canvas parentCanvas, Vector3 worldPos) diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index 098dc8df..074ba6b3 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -3,6 +3,7 @@ using UnityEngine; using UnityEngine.UI; using IC2020; +using System; public class ModelSlector : MonoBehaviour { @@ -93,17 +94,22 @@ public void ChooseModel() //... else if (dropDownValue == 4) - { - List coords = generateRandomCoords(4); + { + List StartPosition = new List(); + StartPosition.Add(new Vector3(0f, Screen.height / 2)); + StartPosition.Add(new Vector3(Screen.width / 2, Screen.height)); + StartPosition.Add(new Vector3(Screen.width, Screen.height / 2)); + dropDownMenu.GetComponent().value = 0; pannel.SetActive(false); - float k = GameObject.Find("GameObject").GetComponent
().k; - for (int x = 0; x < 4; x++) + + for (int x = 0; x < 3; x++) { - Particle Hyd1 = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, coords[x], scale: 2f); - Hyd1.Spawn().AddComponent(); - GameObject.Find("GameObject").GetComponent().initialize(100000, k); + Particle Proton = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, scale: 2f); + GameObject ProtonGO = Proton.Spawn(); + ProtonGO.transform.position = Camera.main.ScreenToWorldPoint(StartPosition[x % 3]); } + GameObject.Find("GameObject").AddComponent(); } } diff --git a/Assets/NuclearPhysics.cs b/Assets/NuclearPhysics.cs deleted file mode 100644 index 002de135..00000000 --- a/Assets/NuclearPhysics.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using IC2020; - -/* - * This new component will be added to all protons in the Nucleosynthesis simulation - * This component gives nuclear physics abilities to the particles in question - * Ideas: - * Each of the particles in the 2H isotope (1 P, 1 P->N) of H will have the name '[P] 2Hydrogen' instead of '[P] Hydrogen' - * When two protons collide, collision.gameObject can become a neutron to form the 2H isotope (no new neutron instantiated) -*/ - -public class NuclearPhysics : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } - - private void OnCollisionEnter(Collision collision) { - // int NeutronCount = 0; - // Proton-Proton collision - if (collision.gameObject.name.Split(' ')[1] == "Hydrogen" && name.Split(' ')[1] == "Hydrogen") - { - gameObject.name = "[P] 2Hydrogen"; // Identify particles as belonging to an isotope - collision.gameObject.name = "[P] 2Hydrogen"; - collision.gameObject.GetComponent().charge = 0f; - collision.gameObject.GetComponent().material.color = ICColor.Neutron; - - /* Attempt: change image displayed on new neutron to reflect its neutral charge - GameObject tempLable; - tempLable = MonoBehaviour.Instantiate(GameObject.Find("Lable Canvas").GetComponent().imagePrefabs[2], Vector3.zero, Quaternion.identity); - tempLable.transform.SetParent(GameObject.Find("Lable Canvas").transform); - tempLable.GetComponent().sphereToFollow = collision.gameObject; - collision.gameObject.GetComponent().material.color = ICColor.Neutron; - */ - - // Join proton and neutron - FixedJoint joint = gameObject.AddComponent(); - joint.connectedBody = collision.gameObject.GetComponent(); - - // Release a beta particle and neutrino - Particle beta = new Particle("[P] Beta", 1.0f, ICColor.Electron); - GameObject betaObject = beta.Spawn(); - - Particle neutrino = new Particle("[P] Neutrino", 0.1f, ICColor.Electron); - GameObject neutrinoObject = neutrino.Spawn(); - } - } -} diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs new file mode 100644 index 00000000..a74f5c03 --- /dev/null +++ b/Assets/NuclearSimulation.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using IC2020; + +public class NuclearSimulation : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + private void FixedUpdate() + { + + } +} diff --git a/Assets/NuclearSimulation.cs.meta b/Assets/NuclearSimulation.cs.meta new file mode 100644 index 00000000..0bd12ce9 --- /dev/null +++ b/Assets/NuclearSimulation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c40a636ab67b8dc44b3a3d48511d2a3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/base.unity b/Assets/Scenes/base.unity index ac74607b..b06dbfb0 100644 --- a/Assets/Scenes/base.unity +++ b/Assets/Scenes/base.unity @@ -1467,6 +1467,7 @@ MonoBehaviour: - {fileID: 1778059490039022324, guid: 43691fde131ee4143b8d7f1568678636, type: 3} - {fileID: 8520551613667858557, guid: b4d9ba947cdb3894fbb66450481d9f9b, type: 3} - {fileID: 8520551613667858557, guid: a6098b3de202abf45832b953cbc0f9ed, type: 3} + - {fileID: 8526863496484344483, guid: 510780d5c8db4f443a0df858bd24b975, type: 3} --- !u!1 &428324403 GameObject: m_ObjectHideFlags: 0 @@ -3048,6 +3049,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3706410f444085f4cb9d366cc5cb27ad, type: 3} m_Name: m_EditorClassIdentifier: + divider: 4 --- !u!1 &997558820 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/time.cs b/Assets/time.cs index ff6efea5..5af2431b 100644 --- a/Assets/time.cs +++ b/Assets/time.cs @@ -7,29 +7,28 @@ public class time : MonoBehaviour { Text speed; - - public void updateTimeScale(float scale) - { - GameObject.Find("speedText").GetComponent().text = "Speed: " + (scale/4).ToString() + "x"; - if(scale < 0) - { - if(GameObject.Find("GameObject").GetComponent().frame == -1) - { - Time.timeScale = 0f; - GetComponent().value = 0; - } - else - { - GameObject.Find("GameObject").GetComponent().startRewind(); - Time.timeScale = Math.Abs(scale/4); - GetComponent().value = scale; - } - } - else - { - Time.timeScale = scale/4; - GetComponent().value = scale; - GameObject.Find("GameObject").GetComponent().stopRewind(); - } - } + + public void updateTimeScale(float scale) + { + GameObject.Find("speedText").GetComponent().text = "Speed: " + (scale/4).ToString() + "x"; + if (scale < 0) { + if (GameObject.Find("GameObject").GetComponent().frame == -1) + { + Time.timeScale = 0f; + GetComponent().value = 0; + } + else + { + GameObject.Find("GameObject").GetComponent().startRewind(); + Time.timeScale = Math.Abs(scale/4); + GetComponent().value = scale; + } + } + else + { + Time.timeScale = scale/4; + GetComponent().value = scale; + GameObject.Find("GameObject").GetComponent().stopRewind(); + } + } } diff --git a/UpgradeLog.htm b/UpgradeLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..42889ceceaf7865391f919823e7d9878589814d9 GIT binary patch literal 33854 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%0Dpl%87&OqHe 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 b(y@Tv5~FoTjpF2ae0@~;mJ?=jRqFjesue~K literal 0 HcmV?d00001 From e2032e5eba7cb1fcb498c0ab3182ee2af2ce1e28 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Sun, 1 Mar 2020 20:52:09 -0800 Subject: [PATCH 06/12] first two steps of PPC implemented --- Assets/ModelSlector.cs | 14 +--- Assets/MoleculeType.cs | 19 +++++ ...arPhysics.cs.meta => MoleculeType.cs.meta} | 2 +- Assets/NuclearSimulation.cs | 75 ++++++++++++++++++- 4 files changed, 96 insertions(+), 14 deletions(-) create mode 100644 Assets/MoleculeType.cs rename Assets/{NuclearPhysics.cs.meta => MoleculeType.cs.meta} (83%) diff --git a/Assets/ModelSlector.cs b/Assets/ModelSlector.cs index 074ba6b3..a77f19d7 100644 --- a/Assets/ModelSlector.cs +++ b/Assets/ModelSlector.cs @@ -95,21 +95,11 @@ public void ChooseModel() //... else if (dropDownValue == 4) { - List StartPosition = new List(); - StartPosition.Add(new Vector3(0f, Screen.height / 2)); - StartPosition.Add(new Vector3(Screen.width / 2, Screen.height)); - StartPosition.Add(new Vector3(Screen.width, Screen.height / 2)); - dropDownMenu.GetComponent().value = 0; pannel.SetActive(false); - - for (int x = 0; x < 3; x++) - { - Particle Proton = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, scale: 2f); - GameObject ProtonGO = Proton.Spawn(); - ProtonGO.transform.position = Camera.main.ScreenToWorldPoint(StartPosition[x % 3]); - } GameObject.Find("GameObject").AddComponent(); + float k = GameObject.Find("GameObject").GetComponent
().k; + GameObject.Find("GameObject").GetComponent().initialize(1, k); } } diff --git a/Assets/MoleculeType.cs b/Assets/MoleculeType.cs new file mode 100644 index 00000000..cc71f3f0 --- /dev/null +++ b/Assets/MoleculeType.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MoleculeType : MonoBehaviour +{ + public string ParticleType = null; + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/NuclearPhysics.cs.meta b/Assets/MoleculeType.cs.meta similarity index 83% rename from Assets/NuclearPhysics.cs.meta rename to Assets/MoleculeType.cs.meta index 7317c052..22ad548c 100644 --- a/Assets/NuclearPhysics.cs.meta +++ b/Assets/MoleculeType.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bb43df499052c864e951ec4f33137bfe +guid: d4429854e5ba1ab4cb53dfa9361ff377 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index a74f5c03..182996fa 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -2,13 +2,31 @@ using System.Collections.Generic; using UnityEngine; using IC2020; +using System; public class NuclearSimulation : MonoBehaviour { + private List StartPosition = new List(); + private List CurrentObjects = new List(); + private List CurrentlyInactive = new List(); + // Start is called before the first frame update void Start() { - + // Going back to the first design: fixing the starting positions of the protons + StartPosition.Add(new Vector3(-7f, 7f)); + StartPosition.Add(new Vector3(-7f, -7f)); + StartPosition.Add(new Vector3(7f, 7f)); + + // Also the first solution: giving each proton an incredible mass + for (int x = 0; x < 3; x++) + { + Particle Proton = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, mass: 100000f, scale: 2f); + GameObject ProtonGO = Proton.Spawn(); + ProtonGO.transform.position = StartPosition[x % 3]; + ProtonGO.AddComponent(); + CurrentObjects.Add(ProtonGO); + } } // Update is called once per frame @@ -19,6 +37,61 @@ void Update() private void FixedUpdate() { + for (int AIdx = 0; AIdx < CurrentObjects.Count; AIdx++) + { + for (int BIdx = 0; BIdx < CurrentObjects.Count; BIdx++) + { + GameObject a = CurrentObjects[AIdx]; + GameObject b = CurrentObjects[BIdx]; + if (a != b) + { + // improvised collision detection + float ObjRadius = a.GetComponent().radius * a.transform.localScale.x; // sphere must have identical scale in each direction + if (Math.Abs(Vector3.Distance(a.transform.position, b.transform.position) - 2 * ObjRadius) <= .25f) + { + // Scenario 1: Two protons, not part of any molecule, have collided + if (a.name.Split(' ')[1] == "Hydrogen" && b.name.Split(' ')[1] == "Hydrogen" && + a.GetComponent().ParticleType == null && b.GetComponent().ParticleType == null) + { + // Join the protons to form deuterium + a.AddComponent().connectedBody = b.GetComponent(); + a.GetComponent().ParticleType = "Deuterium"; + b.GetComponent().ParticleType = "Deuterium"; + } + + // Scenario 2: A particle in deuterium and a free proton have collided + else if (a.GetComponent().ParticleType == "Deuterium" && b.GetComponent().ParticleType == null) + { + a.GetComponent().ParticleType = "3Helium"; + b.GetComponent().ParticleType = "3Helium"; + + // The particle doesn't have the FixedJoint component itself + // This is necessary to identify the other particle that comprises deuterium + if (!(a.HasComponent())) + { + foreach (GameObject GO in CurrentObjects) + { + if (GO != a && GO != b) + { + GO.GetComponent().ParticleType = "3Helium"; + } + } + } + else + { + a.GetComponent().connectedBody.gameObject.GetComponent().ParticleType = "3Helium"; + } + } + } + } + } + } } } + +/* Where to go from here (March 1st) + * When the '3Helium' isotope is formed, it needs to disappear from the screen + * It will reappear after the second one has formed + * Obviously, the neutrons are still identified as protons (change particle color and symbol) +*/ \ No newline at end of file From 07a3c2505afaa102d10bb6a4256ff55c82d16504 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Mon, 2 Mar 2020 22:57:49 -0800 Subject: [PATCH 07/12] added particle identification --- Assets/IC2020.cs | 1 + Assets/NuclearSimulation.cs | 55 +++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/Assets/IC2020.cs b/Assets/IC2020.cs index e272183e..e4ef8162 100644 --- a/Assets/IC2020.cs +++ b/Assets/IC2020.cs @@ -46,6 +46,7 @@ public static class ICColor public static Color Calcium = new Color32(128, 128, 128, 255); public static Color Potassium = new Color32(255, 20, 147, 255); public static Color Deuterium = new Color32(255, 182, 193, 255); + public static Color HeliumIsotope = new Color32(238, 221, 130, 255); public static Color Neutrino = new Color32(255, 0, 0, 255); } diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index 182996fa..c6702b54 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -57,6 +57,9 @@ private void FixedUpdate() a.AddComponent().connectedBody = b.GetComponent(); a.GetComponent().ParticleType = "Deuterium"; b.GetComponent().ParticleType = "Deuterium"; + RemoveLableFollower(b); + AddLabel(b, 3); + ChangeColor(0); } // Scenario 2: A particle in deuterium and a free proton have collided @@ -64,6 +67,7 @@ private void FixedUpdate() { a.GetComponent().ParticleType = "3Helium"; b.GetComponent().ParticleType = "3Helium"; + a.AddComponent().connectedBody = b.GetComponent(); // The particle doesn't have the FixedJoint component itself // This is necessary to identify the other particle that comprises deuterium @@ -81,6 +85,7 @@ private void FixedUpdate() { a.GetComponent().connectedBody.gameObject.GetComponent().ParticleType = "3Helium"; } + ChangeColor(1); } } } @@ -88,10 +93,56 @@ private void FixedUpdate() } } + + private void RemoveLableFollower(GameObject ObjToRemoveLabel) + { + Transform ChildrenList = GameObject.Find("Lable Canvas").transform; + for (int x = 0; x < ChildrenList.childCount; x++) + { + Transform child = ChildrenList.GetChild(x); + if (child.gameObject.GetComponent().sphereToFollow == ObjToRemoveLabel) + { + Destroy(child.gameObject); + } + } + } + + private void AddLabel(GameObject ObjToAddLabel, int LabelIdx) + { + if (LabelIdx < (GameObject.Find("Lable Canvas").GetComponent().imagePrefabs.Length)) + { + GameObject Lable = MonoBehaviour.Instantiate(GameObject.Find("Lable Canvas").GetComponent().imagePrefabs[LabelIdx], Vector3.zero, Quaternion.identity); + Lable.transform.parent = GameObject.Find("Lable Canvas").transform; + Lable.AddComponent().sphereToFollow = ObjToAddLabel; + } + } + + private void ChangeColor(int MoleculeColorIdx) + { + for (int x = 0; x < CurrentObjects.Count; x++) + { + GameObject GO = CurrentObjects[x]; + if (GO.GetComponent().ParticleType == "Deuterium" && MoleculeColorIdx == 0) + { + GO.GetComponent().material.color = ICColor.Deuterium; + } + + else if (GO.GetComponent().ParticleType == "3Helium" && MoleculeColorIdx == 1) + { + GO.GetComponent().material.color = ICColor.HeliumIsotope; + } + } + + } } /* Where to go from here (March 1st) * When the '3Helium' isotope is formed, it needs to disappear from the screen * It will reappear after the second one has formed - * Obviously, the neutrons are still identified as protons (change particle color and symbol) -*/ \ No newline at end of file + * Obviously, the neutrons are still identified as protons (change particle color and symbol) [Done, March 2nd] + + * Bugs! + * Currently, when initializing two particles in the simulation, when they collide, they remain stationary. + * Many foreach loops are still in use. Since CurrentObjects is being modified, this will not work. + * Add method documentation. +*/ From dd8c1b166fa2f59d25cf1e69a3eb05b0cfc4ece3 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Fri, 6 Mar 2020 21:01:33 -0800 Subject: [PATCH 08/12] two steps of PPC implemented --- Assets/NuclearSimulation.cs | 53 ++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index c6702b54..18ed1f64 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -7,8 +7,9 @@ public class NuclearSimulation : MonoBehaviour { private List StartPosition = new List(); - private List CurrentObjects = new List(); - private List CurrentlyInactive = new List(); + public List CurrentObjects = new List(); + public List CurrentlyInactive = new List(); + bool SecondRound = false; // Start is called before the first frame update void Start() @@ -73,8 +74,9 @@ private void FixedUpdate() // This is necessary to identify the other particle that comprises deuterium if (!(a.HasComponent())) { - foreach (GameObject GO in CurrentObjects) + for (int idx = 0; idx < CurrentObjects.Count; idx++) { + GameObject GO = CurrentObjects[idx]; if (GO != a && GO != b) { GO.GetComponent().ParticleType = "3Helium"; @@ -86,6 +88,7 @@ private void FixedUpdate() a.GetComponent().connectedBody.gameObject.GetComponent().ParticleType = "3Helium"; } ChangeColor(1); + StartCoroutine("ResetNew3Helium"); } } } @@ -96,6 +99,8 @@ private void FixedUpdate() private void RemoveLableFollower(GameObject ObjToRemoveLabel) { + // This codebase implements labels (e.g. +) as GameObjects following particles + // This method removes the label follower that follows ObjToRemoveLabel Transform ChildrenList = GameObject.Find("Lable Canvas").transform; for (int x = 0; x < ChildrenList.childCount; x++) { @@ -108,11 +113,11 @@ private void RemoveLableFollower(GameObject ObjToRemoveLabel) } private void AddLabel(GameObject ObjToAddLabel, int LabelIdx) - { + { if (LabelIdx < (GameObject.Find("Lable Canvas").GetComponent().imagePrefabs.Length)) { GameObject Lable = MonoBehaviour.Instantiate(GameObject.Find("Lable Canvas").GetComponent().imagePrefabs[LabelIdx], Vector3.zero, Quaternion.identity); - Lable.transform.parent = GameObject.Find("Lable Canvas").transform; + Lable.transform.SetParent(GameObject.Find("Lable Canvas").transform, false); Lable.AddComponent().sphereToFollow = ObjToAddLabel; } } @@ -134,15 +139,49 @@ private void ChangeColor(int MoleculeColorIdx) } } + + IEnumerator ResetNew3Helium() + { + // When Deuterium collides with a proton, and the He-3 isotope is formed, the process must restart + // Restarts after a 2s delay + yield return new WaitForSeconds(2f); + if (!SecondRound) + { + SecondRound = true; + for (int idx = 0; idx < 3; idx++) + { + CurrentObjects[idx].SetActive(false); + RemoveLableFollower(CurrentObjects[idx]); + CurrentlyInactive.Add(CurrentObjects[idx]); + } + + CurrentObjects.Clear(); + for (int idx = 0; idx < 3; idx++) + { + Particle Proton = new Particle("Hydrogen " + (idx + 3), 2f, ICColor.Hydrogen, mass: 100000f, scale: 2f); + GameObject ProtonGO = Proton.Spawn(); + ProtonGO.transform.position = StartPosition[idx % 3]; + ProtonGO.AddComponent(); + CurrentObjects.Add(ProtonGO); + } + } + } } /* Where to go from here (March 1st) * When the '3Helium' isotope is formed, it needs to disappear from the screen * It will reappear after the second one has formed * Obviously, the neutrons are still identified as protons (change particle color and symbol) [Done, March 2nd] + * We need particles (beta, neutrino, gamma radiation) * Bugs! * Currently, when initializing two particles in the simulation, when they collide, they remain stationary. - * Many foreach loops are still in use. Since CurrentObjects is being modified, this will not work. - * Add method documentation. + * Many foreach loops are still in use. Since CurrentObjects is being modified, this will not work. [Done, March 6th] + * Add method documentation. [Done, March 6th] +*/ + +/* + * ResetGame [renamed ResetNew3Helium]: + * Move 3Helium to the side instead of making it invisible + * Can we introduce a blocking delay so people can see three new protons materialize [Done, March 6th] */ From 8a373c677e7fb2a12d1fac53b160f3a4dc7317de Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Tue, 10 Mar 2020 23:07:37 -0700 Subject: [PATCH 09/12] added gamma prefab and started 3Helium collision code --- .../Buffet Table/Image Prefabs/Gamma.prefab | 125 ++++++++++++++++++ .../Image Prefabs/Gamma.prefab.meta | 7 + .../Image Prefabs/gamma-radiation.jpg | Bin 0 -> 39743 bytes .../Image Prefabs/gamma-radiation.jpg.meta | 88 ++++++++++++ Assets/NuclearSimulation.cs | 116 +++++++++++----- Assets/Scenes/base.unity | 2 +- 6 files changed, 305 insertions(+), 33 deletions(-) create mode 100644 Assets/Buffet Table/Image Prefabs/Gamma.prefab create mode 100644 Assets/Buffet Table/Image Prefabs/Gamma.prefab.meta create mode 100644 Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg create mode 100644 Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg.meta diff --git a/Assets/Buffet Table/Image Prefabs/Gamma.prefab b/Assets/Buffet Table/Image Prefabs/Gamma.prefab new file mode 100644 index 00000000..d6ecd39e --- /dev/null +++ b/Assets/Buffet Table/Image Prefabs/Gamma.prefab @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8006402977536635982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2135732722106203458} + - component: {fileID: 6132841249056728844} + - component: {fileID: 8172981974303022031} + - component: {fileID: 6055098838179665480} + m_Layer: 0 + m_Name: Gamma + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2135732722106203458 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8006402977536635982} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -15.05, y: 0.08} + m_SizeDelta: {x: 9, y: 9} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6132841249056728844 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8006402977536635982} + m_CullTransparentMesh: 0 +--- !u!114 &8172981974303022031 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8006402977536635982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 9407a53847906704598fbcb1611ba986, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!212 &6055098838179665480 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8006402977536635982} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, 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_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 9407a53847906704598fbcb1611ba986, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 9, y: 9} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Buffet Table/Image Prefabs/Gamma.prefab.meta b/Assets/Buffet Table/Image Prefabs/Gamma.prefab.meta new file mode 100644 index 00000000..85ee2b68 --- /dev/null +++ b/Assets/Buffet Table/Image Prefabs/Gamma.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8315f809954548849a00d367e96f4d34 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg b/Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a80f0c11abe23381f3b4f47deddfca4bd400c5d5 GIT binary patch literal 39743 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 e5>9wm@_w}995^_zHh(_wNIx2 literal 0 HcmV?d00001 diff --git a/Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg.meta b/Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg.meta new file mode 100644 index 00000000..df5442bf --- /dev/null +++ b/Assets/Buffet Table/Image Prefabs/gamma-radiation.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 9407a53847906704598fbcb1611ba986 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: ec323844b14d12f46bc89244414d25e0 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index 18ed1f64..527af5dd 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -16,7 +16,7 @@ void Start() { // Going back to the first design: fixing the starting positions of the protons StartPosition.Add(new Vector3(-7f, 7f)); - StartPosition.Add(new Vector3(-7f, -7f)); + StartPosition.Add(new Vector3(0f, -7f)); StartPosition.Add(new Vector3(7f, 7f)); // Also the first solution: giving each proton an incredible mass @@ -58,9 +58,18 @@ private void FixedUpdate() a.AddComponent().connectedBody = b.GetComponent(); a.GetComponent().ParticleType = "Deuterium"; b.GetComponent().ParticleType = "Deuterium"; + b.GetComponent().charge = 0f; RemoveLableFollower(b); AddLabel(b, 3); ChangeColor(0); + + Particle Neutrino = new Particle("Neutrino", 0f, ICColor.Neutrino, mass: 0f); + GameObject NeutrinoGO = Neutrino.Spawn(); + RemoveLableFollower(NeutrinoGO); + AddLabel(NeutrinoGO, 3); + Particle Beta = new Particle("Beta", 2f, ICColor.Electron, mass: 0f); + GameObject BetaGO = Beta.Spawn(); + StartCoroutine(DeleteBetaNeutrino(BetaGO, NeutrinoGO)); } // Scenario 2: A particle in deuterium and a free proton have collided @@ -70,26 +79,31 @@ private void FixedUpdate() b.GetComponent().ParticleType = "3Helium"; a.AddComponent().connectedBody = b.GetComponent(); - // The particle doesn't have the FixedJoint component itself - // This is necessary to identify the other particle that comprises deuterium - if (!(a.HasComponent())) + for (int idx = 0; idx < CurrentObjects.Count; idx++) { - for (int idx = 0; idx < CurrentObjects.Count; idx++) + GameObject GO = CurrentObjects[idx]; + if (GO != a && GO != b) { - GameObject GO = CurrentObjects[idx]; - if (GO != a && GO != b) - { - GO.GetComponent().ParticleType = "3Helium"; - } + GO.GetComponent().ParticleType = "3Helium"; } } - else - { - a.GetComponent().connectedBody.gameObject.GetComponent().ParticleType = "3Helium"; - } + ChangeColor(1); + Particle Gamma = new Particle("Gamma", 0f, ICColor.Neutrino, mass: 0f); + GameObject GammaGO = Gamma.Spawn(); + RemoveLableFollower(GammaGO); + AddLabel(GammaGO, 4, true, new Vector3(3f, 3f)); + StartCoroutine(DeleteGamma(GammaGO)); StartCoroutine("ResetNew3Helium"); } + + /* What should be my approach to solve the problem when two 3Heliums collide? + * Should I make a 4Helium prefab and instantiate two Hydrogens? + else if (a.GetComponent().ParticleType == "3Helium" && b.GetComponent().ParticleType == "3Helium") + { + + } + */ } } } @@ -112,11 +126,15 @@ private void RemoveLableFollower(GameObject ObjToRemoveLabel) } } - private void AddLabel(GameObject ObjToAddLabel, int LabelIdx) + private void AddLabel(GameObject ObjToAddLabel, int LabelIdx, bool UsingScale = false, Vector3 scale = new Vector3()) { if (LabelIdx < (GameObject.Find("Lable Canvas").GetComponent().imagePrefabs.Length)) { GameObject Lable = MonoBehaviour.Instantiate(GameObject.Find("Lable Canvas").GetComponent().imagePrefabs[LabelIdx], Vector3.zero, Quaternion.identity); + if (UsingScale) + { + Lable.transform.localScale = scale; + } Lable.transform.SetParent(GameObject.Find("Lable Canvas").transform, false); Lable.AddComponent().sphereToFollow = ObjToAddLabel; } @@ -124,6 +142,8 @@ private void AddLabel(GameObject ObjToAddLabel, int LabelIdx) private void ChangeColor(int MoleculeColorIdx) { + // When certain molecules are formed, atoms must be colored in certain ways + // Colors assigned based on ParticleType variable of MoleculeType component for (int x = 0; x < CurrentObjects.Count; x++) { GameObject GO = CurrentObjects[x]; @@ -156,6 +176,7 @@ IEnumerator ResetNew3Helium() } CurrentObjects.Clear(); + for (int idx = 0; idx < 3; idx++) { Particle Proton = new Particle("Hydrogen " + (idx + 3), 2f, ICColor.Hydrogen, mass: 100000f, scale: 2f); @@ -165,23 +186,54 @@ IEnumerator ResetNew3Helium() CurrentObjects.Add(ProtonGO); } } + // Second round + else + { + // simpler alternative to temporarily stop motion to position new particles + float OldTimeScale = Time.timeScale; + Time.timeScale = 0f; + + for (int idx = 0; idx < 3; idx++) + { + CurrentObjects[idx].transform.position = StartPosition[1] + idx * new Vector3(1f, 0f); + CurrentlyInactive[idx].transform.position = StartPosition[2] + idx * new Vector3(1f, 0f); + CurrentlyInactive[idx].SetActive(true); + RemoveLableFollower(CurrentlyInactive[idx]); + /* Problem 2: Why is Unity mentioning that the sphereToFollow variable of the ImageFollower component hasn't been assigned? + if (idx == 0) + { + AddLabel(CurrentlyInactive[idx], 3); + } + else + { + AddLabel(CurrentlyInactive[idx], 0); + } + + CurrentObjects.Add(CurrentlyInactive[idx]); + */ + } + CurrentlyInactive.Clear(); + yield return new WaitForSeconds(2f); + Time.timeScale = OldTimeScale; + } + } + + IEnumerator DeleteBetaNeutrino(GameObject Beta, GameObject Neutrino) + { + // Deleting GameObjects after a time interval is difficult -- associated labels must be removed + yield return new WaitForSeconds(2f); + RemoveLableFollower(Beta); + Beta.SetActive(false); + RemoveLableFollower(Neutrino); + Neutrino.SetActive(false); + } + + IEnumerator DeleteGamma(GameObject Gamma) + { + // Deleting GameObjects after a time interval is difficult -- associated labels must be removed + yield return new WaitForSeconds(2f); + RemoveLableFollower(Gamma); + Gamma.SetActive(false); } } -/* Where to go from here (March 1st) - * When the '3Helium' isotope is formed, it needs to disappear from the screen - * It will reappear after the second one has formed - * Obviously, the neutrons are still identified as protons (change particle color and symbol) [Done, March 2nd] - * We need particles (beta, neutrino, gamma radiation) - - * Bugs! - * Currently, when initializing two particles in the simulation, when they collide, they remain stationary. - * Many foreach loops are still in use. Since CurrentObjects is being modified, this will not work. [Done, March 6th] - * Add method documentation. [Done, March 6th] -*/ - -/* - * ResetGame [renamed ResetNew3Helium]: - * Move 3Helium to the side instead of making it invisible - * Can we introduce a blocking delay so people can see three new protons materialize [Done, March 6th] -*/ diff --git a/Assets/Scenes/base.unity b/Assets/Scenes/base.unity index b06dbfb0..27a642e1 100644 --- a/Assets/Scenes/base.unity +++ b/Assets/Scenes/base.unity @@ -1468,6 +1468,7 @@ MonoBehaviour: - {fileID: 8520551613667858557, guid: b4d9ba947cdb3894fbb66450481d9f9b, type: 3} - {fileID: 8520551613667858557, guid: a6098b3de202abf45832b953cbc0f9ed, type: 3} - {fileID: 8526863496484344483, guid: 510780d5c8db4f443a0df858bd24b975, type: 3} + - {fileID: 8006402977536635982, guid: 8315f809954548849a00d367e96f4d34, type: 3} --- !u!1 &428324403 GameObject: m_ObjectHideFlags: 0 @@ -3049,7 +3050,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3706410f444085f4cb9d366cc5cb27ad, type: 3} m_Name: m_EditorClassIdentifier: - divider: 4 --- !u!1 &997558820 GameObject: m_ObjectHideFlags: 0 From 0a1bf73997babf5aeaac852fc0d92813aa4d7726 Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Mon, 16 Mar 2020 16:02:17 -0700 Subject: [PATCH 10/12] still not working --- Assets/IC2020.cs | 1 + Assets/NuclearSimulation.cs | 58 ++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/Assets/IC2020.cs b/Assets/IC2020.cs index e4ef8162..4db9287e 100644 --- a/Assets/IC2020.cs +++ b/Assets/IC2020.cs @@ -48,6 +48,7 @@ public static class ICColor public static Color Deuterium = new Color32(255, 182, 193, 255); public static Color HeliumIsotope = new Color32(238, 221, 130, 255); public static Color Neutrino = new Color32(255, 0, 0, 255); + public static Color HeliumIsotope4 = new Color32(255, 165, 0, 255); } public class Particle diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index 527af5dd..139f9bae 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -47,6 +47,12 @@ private void FixedUpdate() if (a != b) { // improvised collision detection + // use Unity collision detection + // Use tags (assign in inspector) + // find a way to release a fixed joint + // use prefab for Helium-3 collision + // use parent-child relationship to create a multi-particle prefab + // add a FixedJoint component to ensure that it behaves correctly float ObjRadius = a.GetComponent().radius * a.transform.localScale.x; // sphere must have identical scale in each direction if (Math.Abs(Vector3.Distance(a.transform.position, b.transform.position) - 2 * ObjRadius) <= .25f) { @@ -59,13 +65,13 @@ private void FixedUpdate() a.GetComponent().ParticleType = "Deuterium"; b.GetComponent().ParticleType = "Deuterium"; b.GetComponent().charge = 0f; - RemoveLableFollower(b); + DestroyLableFollower(b); AddLabel(b, 3); ChangeColor(0); Particle Neutrino = new Particle("Neutrino", 0f, ICColor.Neutrino, mass: 0f); GameObject NeutrinoGO = Neutrino.Spawn(); - RemoveLableFollower(NeutrinoGO); + DestroyLableFollower(NeutrinoGO); AddLabel(NeutrinoGO, 3); Particle Beta = new Particle("Beta", 2f, ICColor.Electron, mass: 0f); GameObject BetaGO = Beta.Spawn(); @@ -91,19 +97,16 @@ private void FixedUpdate() ChangeColor(1); Particle Gamma = new Particle("Gamma", 0f, ICColor.Neutrino, mass: 0f); GameObject GammaGO = Gamma.Spawn(); - RemoveLableFollower(GammaGO); + DestroyLableFollower(GammaGO); AddLabel(GammaGO, 4, true, new Vector3(3f, 3f)); StartCoroutine(DeleteGamma(GammaGO)); StartCoroutine("ResetNew3Helium"); } - - /* What should be my approach to solve the problem when two 3Heliums collide? - * Should I make a 4Helium prefab and instantiate two Hydrogens? + else if (a.GetComponent().ParticleType == "3Helium" && b.GetComponent().ParticleType == "3Helium") { - + } - */ } } } @@ -111,7 +114,7 @@ private void FixedUpdate() } - private void RemoveLableFollower(GameObject ObjToRemoveLabel) + private void DestroyLableFollower(GameObject ObjToRemoveLabel) { // This codebase implements labels (e.g. +) as GameObjects following particles // This method removes the label follower that follows ObjToRemoveLabel @@ -126,6 +129,21 @@ private void RemoveLableFollower(GameObject ObjToRemoveLabel) } } + private void EnableLableFollower(GameObject ObjToRemoveLabel) + { + // This codebase implements labels (e.g. +) as GameObjects following particles + // This method removes the label follower that follows ObjToRemoveLabel + Transform ChildrenList = GameObject.Find("Lable Canvas").transform; + for (int x = 0; x < ChildrenList.childCount; x++) + { + Transform child = ChildrenList.GetChild(x); + if (child.gameObject.GetComponent().sphereToFollow == ObjToRemoveLabel) + { + child.gameObject.SetActive(true); + } + } + } + private void AddLabel(GameObject ObjToAddLabel, int LabelIdx, bool UsingScale = false, Vector3 scale = new Vector3()) { if (LabelIdx < (GameObject.Find("Lable Canvas").GetComponent().imagePrefabs.Length)) @@ -171,7 +189,7 @@ IEnumerator ResetNew3Helium() for (int idx = 0; idx < 3; idx++) { CurrentObjects[idx].SetActive(false); - RemoveLableFollower(CurrentObjects[idx]); + DestroyLableFollower(CurrentObjects[idx]); CurrentlyInactive.Add(CurrentObjects[idx]); } @@ -198,19 +216,8 @@ IEnumerator ResetNew3Helium() CurrentObjects[idx].transform.position = StartPosition[1] + idx * new Vector3(1f, 0f); CurrentlyInactive[idx].transform.position = StartPosition[2] + idx * new Vector3(1f, 0f); CurrentlyInactive[idx].SetActive(true); - RemoveLableFollower(CurrentlyInactive[idx]); - /* Problem 2: Why is Unity mentioning that the sphereToFollow variable of the ImageFollower component hasn't been assigned? - if (idx == 0) - { - AddLabel(CurrentlyInactive[idx], 3); - } - else - { - AddLabel(CurrentlyInactive[idx], 0); - } - + EnableLableFollower(CurrentlyInactive[idx]); CurrentObjects.Add(CurrentlyInactive[idx]); - */ } CurrentlyInactive.Clear(); yield return new WaitForSeconds(2f); @@ -222,9 +229,9 @@ IEnumerator DeleteBetaNeutrino(GameObject Beta, GameObject Neutrino) { // Deleting GameObjects after a time interval is difficult -- associated labels must be removed yield return new WaitForSeconds(2f); - RemoveLableFollower(Beta); + DestroyLableFollower(Beta); Beta.SetActive(false); - RemoveLableFollower(Neutrino); + DestroyLableFollower(Neutrino); Neutrino.SetActive(false); } @@ -232,8 +239,7 @@ IEnumerator DeleteGamma(GameObject Gamma) { // Deleting GameObjects after a time interval is difficult -- associated labels must be removed yield return new WaitForSeconds(2f); - RemoveLableFollower(Gamma); + DestroyLableFollower(Gamma); Gamma.SetActive(false); } } - From ea48c9957cd24868dd7a4a9d34ea8f7bdcdcfe8d Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Tue, 24 Mar 2020 20:55:53 -0700 Subject: [PATCH 11/12] finished final stage + added documentation --- Assets/4Helium.prefab | 658 ++++++++++++++++++ Assets/4Helium.prefab.meta | 7 + .../Buffet Table/Image Prefabs/Gamma.prefab | 14 + Assets/Buffet Table/Image Prefabs/Zero.prefab | 14 + Assets/NuclearSimulation.cs | 129 ++-- Logs/Packages-Update.log | 43 ++ ProjectSettings/TagManager.asset | 3 + 7 files changed, 823 insertions(+), 45 deletions(-) create mode 100644 Assets/4Helium.prefab create mode 100644 Assets/4Helium.prefab.meta create mode 100644 Logs/Packages-Update.log diff --git a/Assets/4Helium.prefab b/Assets/4Helium.prefab new file mode 100644 index 00000000..6a3c06ef --- /dev/null +++ b/Assets/4Helium.prefab @@ -0,0 +1,658 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &21035431808068591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7347252890428880314} + - component: {fileID: 4988407749138656176} + - component: {fileID: 6552059411469479376} + - component: {fileID: 1286831565342670173} + - component: {fileID: 8804507360475649606} + - component: {fileID: 5067217094610958766} + - component: {fileID: 205839306541850622} + m_Layer: 0 + m_Name: '[P] Proton 1' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7347252890428880314 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_LocalRotation: {x: -0, y: -0, z: 0.00057421235, w: 0.9999999} + m_LocalPosition: {x: 11.44, y: 2.04, z: 15} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 1340637283444663531} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4988407749138656176 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &6552059411469479376 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1286831565342670173 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + 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_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!114 &8804507360475649606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} + m_Name: + m_EditorClassIdentifier: + charge: 2 +--- !u!114 &5067217094610958766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &205839306541850622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21035431808068591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} + m_Name: + m_EditorClassIdentifier: + ParticleType: 4Helium +--- !u!1 &1278303084633472936 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5930597007113408150} + - component: {fileID: 1167848824556111232} + - component: {fileID: 4341587313731115592} + - component: {fileID: 290194173537912149} + - component: {fileID: 5601861735692852318} + - component: {fileID: 2535674182972524294} + - component: {fileID: 1499621133173604369} + m_Layer: 0 + m_Name: '[P] Neutron 2' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5930597007113408150 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_LocalRotation: {x: -0, y: -0, z: 0.00057421153, w: 0.9999998} + m_LocalPosition: {x: 17.38, y: 2, z: 15} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 1340637283444663531} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1167848824556111232 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &4341587313731115592 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &290194173537912149 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!114 &5601861735692852318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} + m_Name: + m_EditorClassIdentifier: + charge: 0 +--- !u!114 &2535674182972524294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1499621133173604369 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278303084633472936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} + m_Name: + m_EditorClassIdentifier: + ParticleType: 4Helium +--- !u!1 &4194214623522146268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1340637283444663531} + - component: {fileID: 2536340632225940579} + - component: {fileID: 4518648095243819193} + - component: {fileID: 8089606043278715089} + - component: {fileID: 5497377763517340098} + - component: {fileID: 9037743878357269606} + m_Layer: 0 + m_Name: 4Helium + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1340637283444663531 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -15, y: 0, z: -15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7347252890428880314} + - {fileID: 7213084585243371773} + - {fileID: 1262446500503981545} + - {fileID: 5930597007113408150} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &2536340632225940579 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + serializedVersion: 2 + m_Mass: 400000 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!138 &4518648095243819193 +FixedJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + m_ConnectedBody: {fileID: 0} + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!138 &8089606043278715089 +FixedJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + m_ConnectedBody: {fileID: 0} + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!138 &5497377763517340098 +FixedJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + m_ConnectedBody: {fileID: 2716058644296725883} + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!138 &9037743878357269606 +FixedJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4194214623522146268} + m_ConnectedBody: {fileID: 0} + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!1 &4682121949896197664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7213084585243371773} + - component: {fileID: 2829678708880831813} + - component: {fileID: 3119986494334070715} + - component: {fileID: 2686432880266117193} + - component: {fileID: 4628476009491322222} + - component: {fileID: 6940795326731743858} + - component: {fileID: 5742816838426260506} + m_Layer: 0 + m_Name: '[P] Proton 2' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7213084585243371773 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_LocalRotation: {x: -0, y: -0, z: -0.0091262255, w: 0.9999584} + m_LocalPosition: {x: 13.41, y: 1.94, z: 15} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 1340637283444663531} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2829678708880831813 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &3119986494334070715 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2686432880266117193 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!114 &4628476009491322222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} + m_Name: + m_EditorClassIdentifier: + charge: 2 +--- !u!114 &6940795326731743858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &5742816838426260506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4682121949896197664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} + m_Name: + m_EditorClassIdentifier: + ParticleType: 4Helium +--- !u!1 &9008623808600828214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1262446500503981545} + - component: {fileID: 2293751466951331547} + - component: {fileID: 6301944685173000335} + - component: {fileID: 7372738967754603904} + - component: {fileID: 2716058644296725883} + - component: {fileID: 3821854256072606318} + - component: {fileID: 5376604150013950073} + - component: {fileID: 9010214473475895995} + m_Layer: 0 + m_Name: '[P] Neutron 1' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1262446500503981545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_LocalRotation: {x: -0, y: -0, z: 0.00057421153, w: 0.9999998} + m_LocalPosition: {x: 15.4, y: 1.92, z: 15} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 1340637283444663531} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2293751466951331547 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &6301944685173000335 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &7372738967754603904 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!54 &2716058644296725883 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + serializedVersion: 2 + m_Mass: 100000 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 8 + m_CollisionDetection: 2 +--- !u!114 &3821854256072606318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} + m_Name: + m_EditorClassIdentifier: + charge: 0 +--- !u!114 &5376604150013950073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9010214473475895995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9008623808600828214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} + m_Name: + m_EditorClassIdentifier: + ParticleType: 4Helium diff --git a/Assets/4Helium.prefab.meta b/Assets/4Helium.prefab.meta new file mode 100644 index 00000000..16475747 --- /dev/null +++ b/Assets/4Helium.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d3e1ae00a52e9a4479fa7a323dc81390 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Buffet Table/Image Prefabs/Gamma.prefab b/Assets/Buffet Table/Image Prefabs/Gamma.prefab index d6ecd39e..27a30885 100644 --- a/Assets/Buffet Table/Image Prefabs/Gamma.prefab +++ b/Assets/Buffet Table/Image Prefabs/Gamma.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: 6132841249056728844} - component: {fileID: 8172981974303022031} - component: {fileID: 6055098838179665480} + - component: {fileID: 1638071961686837473} m_Layer: 0 m_Name: Gamma m_TagString: Untagged @@ -123,3 +124,16 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!114 &1638071961686837473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8006402977536635982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d3e7c246620578488479fc2e161e0c7, type: 3} + m_Name: + m_EditorClassIdentifier: + sphereToFollow: {fileID: 0} diff --git a/Assets/Buffet Table/Image Prefabs/Zero.prefab b/Assets/Buffet Table/Image Prefabs/Zero.prefab index c69b97c3..69d92edf 100644 --- a/Assets/Buffet Table/Image Prefabs/Zero.prefab +++ b/Assets/Buffet Table/Image Prefabs/Zero.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: 2099319776012936699} - component: {fileID: 7746644101679292531} - component: {fileID: 2462606199636594406} + - component: {fileID: 4967449586410954121} m_Layer: 0 m_Name: Zero m_TagString: Untagged @@ -123,3 +124,16 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 +--- !u!114 &4967449586410954121 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8526863496484344483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d3e7c246620578488479fc2e161e0c7, type: 3} + m_Name: + m_EditorClassIdentifier: + sphereToFollow: {fileID: 0} diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index 139f9bae..a2dac8af 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -7,13 +7,17 @@ public class NuclearSimulation : MonoBehaviour { private List StartPosition = new List(); + // An object in the scene is stored in CurrentObjects public List CurrentObjects = new List(); public List CurrentlyInactive = new List(); - bool SecondRound = false; + bool SecondRound = false; // the second round of producing Helium-3 + bool FinalCollisionRound = false; // colliding two Helium-3 molecules in the final stage + bool CollisionNotRegistered = true; // Start is called before the first frame update void Start() { + // TODO: Update Buffet Table (3/24) // Going back to the first design: fixing the starting positions of the protons StartPosition.Add(new Vector3(-7f, 7f)); StartPosition.Add(new Vector3(0f, -7f)); @@ -24,8 +28,8 @@ void Start() { Particle Proton = new Particle("Hydrogen " + x, 2f, ICColor.Hydrogen, mass: 100000f, scale: 2f); GameObject ProtonGO = Proton.Spawn(); + ProtonGO.tag = "Hydrogen"; ProtonGO.transform.position = StartPosition[x % 3]; - ProtonGO.AddComponent(); CurrentObjects.Add(ProtonGO); } } @@ -46,26 +50,21 @@ private void FixedUpdate() GameObject b = CurrentObjects[BIdx]; if (a != b) { - // improvised collision detection - // use Unity collision detection - // Use tags (assign in inspector) - // find a way to release a fixed joint - // use prefab for Helium-3 collision - // use parent-child relationship to create a multi-particle prefab - // add a FixedJoint component to ensure that it behaves correctly + // there is no way to detect a collision without adding a component to each GO float ObjRadius = a.GetComponent().radius * a.transform.localScale.x; // sphere must have identical scale in each direction if (Math.Abs(Vector3.Distance(a.transform.position, b.transform.position) - 2 * ObjRadius) <= .25f) { // Scenario 1: Two protons, not part of any molecule, have collided - if (a.name.Split(' ')[1] == "Hydrogen" && b.name.Split(' ')[1] == "Hydrogen" && - a.GetComponent().ParticleType == null && b.GetComponent().ParticleType == null) + if (a.tag == "Hydrogen" && b.tag == "Hydrogen") { // Join the protons to form deuterium a.AddComponent().connectedBody = b.GetComponent(); - a.GetComponent().ParticleType = "Deuterium"; - b.GetComponent().ParticleType = "Deuterium"; + a.tag = "Deuterium"; + b.tag = "Deuterium"; + b.name = "[P] Neutron " + b.name.Split(' ')[2]; b.GetComponent().charge = 0f; DestroyLableFollower(b); + // '0' designates neutral charge AddLabel(b, 3); ChangeColor(0); @@ -73,39 +72,83 @@ private void FixedUpdate() GameObject NeutrinoGO = Neutrino.Spawn(); DestroyLableFollower(NeutrinoGO); AddLabel(NeutrinoGO, 3); + Particle Beta = new Particle("Beta", 2f, ICColor.Electron, mass: 0f); GameObject BetaGO = Beta.Spawn(); + + // the beta and neutrino cannot be deleted immediately after their creation + // the coroutine I created deletes them after 2s StartCoroutine(DeleteBetaNeutrino(BetaGO, NeutrinoGO)); } // Scenario 2: A particle in deuterium and a free proton have collided - else if (a.GetComponent().ParticleType == "Deuterium" && b.GetComponent().ParticleType == null) + else if (a.tag == "Deuterium" && b.tag == "Hydrogen") { - a.GetComponent().ParticleType = "3Helium"; - b.GetComponent().ParticleType = "3Helium"; + a.tag = "3Helium"; + b.tag = "3Helium"; + a.AddComponent().connectedBody = b.GetComponent(); + // all three particles are part of Helium-3 for (int idx = 0; idx < CurrentObjects.Count; idx++) { GameObject GO = CurrentObjects[idx]; if (GO != a && GO != b) { - GO.GetComponent().ParticleType = "3Helium"; + GO.tag = "3Helium"; } } ChangeColor(1); + Particle Gamma = new Particle("Gamma", 0f, ICColor.Neutrino, mass: 0f); GameObject GammaGO = Gamma.Spawn(); DestroyLableFollower(GammaGO); AddLabel(GammaGO, 4, true, new Vector3(3f, 3f)); + StartCoroutine(DeleteGamma(GammaGO)); StartCoroutine("ResetNew3Helium"); } - - else if (a.GetComponent().ParticleType == "3Helium" && b.GetComponent().ParticleType == "3Helium") + + // Final case: two Helium-3 isotopes have collided + else if (a.tag == "3Helium" && b.tag == "3Helium" && FinalCollisionRound && CollisionNotRegistered) { - + CollisionNotRegistered = false; + + for (int idx = 0; idx < CurrentObjects.Count; idx++) + { + DestroyLableFollower(CurrentObjects[idx]); + CurrentObjects[idx].SetActive(false); + } + + GameObject PrevObject = null; + + for (int idx = 0; idx < 4; idx++) + { + Particle Hydrogen = new Particle("Hydrogen " + (idx + 6), 2f, ICColor.HeliumIsotope4, scale: 2f); + GameObject HydrogenGO = Hydrogen.Spawn(); + + // 2 protons, 2 neutrons in Helium-4 + if (idx > 1) + { + DestroyLableFollower(HydrogenGO); + AddLabel(HydrogenGO, 3); + HydrogenGO.name = "[P] Neutron " + HydrogenGO.name.Split(' ')[2]; + } + + if (!(PrevObject == null)) + { + HydrogenGO.AddComponent().connectedBody = PrevObject.GetComponent(); + } + + PrevObject = HydrogenGO; + } + + Particle StdHydrogen = new Particle("Hydrogen 11", 2f, ICColor.Hydrogen, scale: 2f); + StdHydrogen.Spawn(); + + Particle StdHydrogen2 = new Particle("Hydrogen 12", 2f, ICColor.Hydrogen, scale: 2f); + StdHydrogen2.Spawn(); } } } @@ -124,22 +167,7 @@ private void DestroyLableFollower(GameObject ObjToRemoveLabel) Transform child = ChildrenList.GetChild(x); if (child.gameObject.GetComponent().sphereToFollow == ObjToRemoveLabel) { - Destroy(child.gameObject); - } - } - } - - private void EnableLableFollower(GameObject ObjToRemoveLabel) - { - // This codebase implements labels (e.g. +) as GameObjects following particles - // This method removes the label follower that follows ObjToRemoveLabel - Transform ChildrenList = GameObject.Find("Lable Canvas").transform; - for (int x = 0; x < ChildrenList.childCount; x++) - { - Transform child = ChildrenList.GetChild(x); - if (child.gameObject.GetComponent().sphereToFollow == ObjToRemoveLabel) - { - child.gameObject.SetActive(true); + GameObject.Destroy(child.gameObject); } } } @@ -154,7 +182,7 @@ private void EnableLableFollower(GameObject ObjToRemoveLabel) Lable.transform.localScale = scale; } Lable.transform.SetParent(GameObject.Find("Lable Canvas").transform, false); - Lable.AddComponent().sphereToFollow = ObjToAddLabel; + Lable.GetComponent().sphereToFollow = ObjToAddLabel; } } @@ -165,12 +193,12 @@ private void ChangeColor(int MoleculeColorIdx) for (int x = 0; x < CurrentObjects.Count; x++) { GameObject GO = CurrentObjects[x]; - if (GO.GetComponent().ParticleType == "Deuterium" && MoleculeColorIdx == 0) + if (GO.tag == "Deuterium" && MoleculeColorIdx == 0) { GO.GetComponent().material.color = ICColor.Deuterium; } - else if (GO.GetComponent().ParticleType == "3Helium" && MoleculeColorIdx == 1) + else if (GO.tag == "3Helium" && MoleculeColorIdx == 1) { GO.GetComponent().material.color = ICColor.HeliumIsotope; } @@ -184,7 +212,7 @@ IEnumerator ResetNew3Helium() // Restarts after a 2s delay yield return new WaitForSeconds(2f); if (!SecondRound) - { + { SecondRound = true; for (int idx = 0; idx < 3; idx++) { @@ -200,7 +228,7 @@ IEnumerator ResetNew3Helium() Particle Proton = new Particle("Hydrogen " + (idx + 3), 2f, ICColor.Hydrogen, mass: 100000f, scale: 2f); GameObject ProtonGO = Proton.Spawn(); ProtonGO.transform.position = StartPosition[idx % 3]; - ProtonGO.AddComponent(); + ProtonGO.tag = "Hydrogen"; CurrentObjects.Add(ProtonGO); } } @@ -213,13 +241,25 @@ IEnumerator ResetNew3Helium() for (int idx = 0; idx < 3; idx++) { - CurrentObjects[idx].transform.position = StartPosition[1] + idx * new Vector3(1f, 0f); - CurrentlyInactive[idx].transform.position = StartPosition[2] + idx * new Vector3(1f, 0f); + // change position and status + CurrentObjects[idx].transform.position = StartPosition[1] + idx * new Vector3(1f, 1f); + CurrentlyInactive[idx].transform.position = StartPosition[2] - idx * new Vector3(1f, 1f); CurrentlyInactive[idx].SetActive(true); - EnableLableFollower(CurrentlyInactive[idx]); + + if (CurrentlyInactive[idx].name.Split(' ')[1] == "Hydrogen") + { + AddLabel(CurrentlyInactive[idx], 0); + } + else + { + AddLabel(CurrentlyInactive[idx], 3); + } CurrentObjects.Add(CurrentlyInactive[idx]); } + CurrentlyInactive.Clear(); + FinalCollisionRound = true; + yield return new WaitForSeconds(2f); Time.timeScale = OldTimeScale; } @@ -237,7 +277,6 @@ IEnumerator DeleteBetaNeutrino(GameObject Beta, GameObject Neutrino) IEnumerator DeleteGamma(GameObject Gamma) { - // Deleting GameObjects after a time interval is difficult -- associated labels must be removed yield return new WaitForSeconds(2f); DestroyLableFollower(Gamma); Gamma.SetActive(false); diff --git a/Logs/Packages-Update.log b/Logs/Packages-Update.log new file mode 100644 index 00000000..6a6ba9e1 --- /dev/null +++ b/Logs/Packages-Update.log @@ -0,0 +1,43 @@ + +=== Mon Mar 16 16:03:19 2020 + +Packages were changed. +Update Mode: resetToDefaultDependencies + +The following packages were added: + com.unity.analytics@3.2.2 + com.unity.purchasing@2.0.3 + com.unity.ads@2.0.8 + com.unity.textmeshpro@1.3.0 + com.unity.package-manager-ui@2.0.7 + com.unity.collab-proxy@1.2.15 + com.unity.modules.ai@1.0.0 + com.unity.modules.animation@1.0.0 + com.unity.modules.assetbundle@1.0.0 + com.unity.modules.audio@1.0.0 + com.unity.modules.cloth@1.0.0 + com.unity.modules.director@1.0.0 + com.unity.modules.imageconversion@1.0.0 + com.unity.modules.imgui@1.0.0 + com.unity.modules.jsonserialize@1.0.0 + com.unity.modules.particlesystem@1.0.0 + com.unity.modules.physics@1.0.0 + com.unity.modules.physics2d@1.0.0 + com.unity.modules.screencapture@1.0.0 + com.unity.modules.terrain@1.0.0 + com.unity.modules.terrainphysics@1.0.0 + com.unity.modules.tilemap@1.0.0 + com.unity.modules.ui@1.0.0 + com.unity.modules.uielements@1.0.0 + com.unity.modules.umbra@1.0.0 + com.unity.modules.unityanalytics@1.0.0 + com.unity.modules.unitywebrequest@1.0.0 + com.unity.modules.unitywebrequestassetbundle@1.0.0 + com.unity.modules.unitywebrequestaudio@1.0.0 + com.unity.modules.unitywebrequesttexture@1.0.0 + com.unity.modules.unitywebrequestwww@1.0.0 + com.unity.modules.vehicles@1.0.0 + com.unity.modules.video@1.0.0 + com.unity.modules.vr@1.0.0 + com.unity.modules.wind@1.0.0 + com.unity.modules.xr@1.0.0 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 48f795c9..286988f0 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -5,6 +5,9 @@ TagManager: serializedVersion: 2 tags: - Water + - Hydrogen + - Deuterium + - 3Helium layers: - Default - TransparentFX From 598e1a6193aee4e9e28f06685ec5e88ef06c2efb Mon Sep 17 00:00:00 2001 From: saimachi <37318129+saimachi@users.noreply.github.com> Date: Wed, 25 Mar 2020 14:52:27 -0700 Subject: [PATCH 12/12] buffet table + unnecessary file removal --- Assets/4Helium.prefab | 658 ------------------------------------ Assets/4Helium.prefab.meta | 7 - Assets/NuclearSimulation.cs | 44 ++- 3 files changed, 43 insertions(+), 666 deletions(-) delete mode 100644 Assets/4Helium.prefab delete mode 100644 Assets/4Helium.prefab.meta diff --git a/Assets/4Helium.prefab b/Assets/4Helium.prefab deleted file mode 100644 index 6a3c06ef..00000000 --- a/Assets/4Helium.prefab +++ /dev/null @@ -1,658 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &21035431808068591 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7347252890428880314} - - component: {fileID: 4988407749138656176} - - component: {fileID: 6552059411469479376} - - component: {fileID: 1286831565342670173} - - component: {fileID: 8804507360475649606} - - component: {fileID: 5067217094610958766} - - component: {fileID: 205839306541850622} - m_Layer: 0 - m_Name: '[P] Proton 1' - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7347252890428880314 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_LocalRotation: {x: -0, y: -0, z: 0.00057421235, w: 0.9999999} - m_LocalPosition: {x: 11.44, y: 2.04, z: 15} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 1340637283444663531} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &4988407749138656176 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!135 &6552059411469479376 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1286831565342670173 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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 ---- !u!114 &8804507360475649606 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} - m_Name: - m_EditorClassIdentifier: - charge: 2 ---- !u!114 &5067217094610958766 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &205839306541850622 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21035431808068591} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} - m_Name: - m_EditorClassIdentifier: - ParticleType: 4Helium ---- !u!1 &1278303084633472936 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5930597007113408150} - - component: {fileID: 1167848824556111232} - - component: {fileID: 4341587313731115592} - - component: {fileID: 290194173537912149} - - component: {fileID: 5601861735692852318} - - component: {fileID: 2535674182972524294} - - component: {fileID: 1499621133173604369} - m_Layer: 0 - m_Name: '[P] Neutron 2' - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5930597007113408150 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_LocalRotation: {x: -0, y: -0, z: 0.00057421153, w: 0.9999998} - m_LocalPosition: {x: 17.38, y: 2, z: 15} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 1340637283444663531} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1167848824556111232 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!135 &4341587313731115592 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &290194173537912149 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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 ---- !u!114 &5601861735692852318 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} - m_Name: - m_EditorClassIdentifier: - charge: 0 ---- !u!114 &2535674182972524294 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &1499621133173604369 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278303084633472936} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} - m_Name: - m_EditorClassIdentifier: - ParticleType: 4Helium ---- !u!1 &4194214623522146268 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1340637283444663531} - - component: {fileID: 2536340632225940579} - - component: {fileID: 4518648095243819193} - - component: {fileID: 8089606043278715089} - - component: {fileID: 5497377763517340098} - - component: {fileID: 9037743878357269606} - m_Layer: 0 - m_Name: 4Helium - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1340637283444663531 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15, y: 0, z: -15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 7347252890428880314} - - {fileID: 7213084585243371773} - - {fileID: 1262446500503981545} - - {fileID: 5930597007113408150} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!54 &2536340632225940579 -Rigidbody: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - serializedVersion: 2 - m_Mass: 400000 - m_Drag: 0 - m_AngularDrag: 0.05 - m_UseGravity: 1 - m_IsKinematic: 0 - m_Interpolate: 0 - m_Constraints: 0 - m_CollisionDetection: 0 ---- !u!138 &4518648095243819193 -FixedJoint: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - m_ConnectedBody: {fileID: 0} - m_BreakForce: Infinity - m_BreakTorque: Infinity - m_EnableCollision: 0 - m_EnablePreprocessing: 1 - m_MassScale: 1 - m_ConnectedMassScale: 1 ---- !u!138 &8089606043278715089 -FixedJoint: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - m_ConnectedBody: {fileID: 0} - m_BreakForce: Infinity - m_BreakTorque: Infinity - m_EnableCollision: 0 - m_EnablePreprocessing: 1 - m_MassScale: 1 - m_ConnectedMassScale: 1 ---- !u!138 &5497377763517340098 -FixedJoint: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - m_ConnectedBody: {fileID: 2716058644296725883} - m_BreakForce: Infinity - m_BreakTorque: Infinity - m_EnableCollision: 0 - m_EnablePreprocessing: 1 - m_MassScale: 1 - m_ConnectedMassScale: 1 ---- !u!138 &9037743878357269606 -FixedJoint: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4194214623522146268} - m_ConnectedBody: {fileID: 0} - m_BreakForce: Infinity - m_BreakTorque: Infinity - m_EnableCollision: 0 - m_EnablePreprocessing: 1 - m_MassScale: 1 - m_ConnectedMassScale: 1 ---- !u!1 &4682121949896197664 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7213084585243371773} - - component: {fileID: 2829678708880831813} - - component: {fileID: 3119986494334070715} - - component: {fileID: 2686432880266117193} - - component: {fileID: 4628476009491322222} - - component: {fileID: 6940795326731743858} - - component: {fileID: 5742816838426260506} - m_Layer: 0 - m_Name: '[P] Proton 2' - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7213084585243371773 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_LocalRotation: {x: -0, y: -0, z: -0.0091262255, w: 0.9999584} - m_LocalPosition: {x: 13.41, y: 1.94, z: 15} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 1340637283444663531} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2829678708880831813 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!135 &3119986494334070715 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &2686432880266117193 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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 ---- !u!114 &4628476009491322222 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} - m_Name: - m_EditorClassIdentifier: - charge: 2 ---- !u!114 &6940795326731743858 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &5742816838426260506 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4682121949896197664} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} - m_Name: - m_EditorClassIdentifier: - ParticleType: 4Helium ---- !u!1 &9008623808600828214 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1262446500503981545} - - component: {fileID: 2293751466951331547} - - component: {fileID: 6301944685173000335} - - component: {fileID: 7372738967754603904} - - component: {fileID: 2716058644296725883} - - component: {fileID: 3821854256072606318} - - component: {fileID: 5376604150013950073} - - component: {fileID: 9010214473475895995} - m_Layer: 0 - m_Name: '[P] Neutron 1' - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1262446500503981545 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_LocalRotation: {x: -0, y: -0, z: 0.00057421153, w: 0.9999998} - m_LocalPosition: {x: 15.4, y: 1.92, z: 15} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 1340637283444663531} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2293751466951331547 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!135 &6301944685173000335 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &7372738967754603904 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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 ---- !u!54 &2716058644296725883 -Rigidbody: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - serializedVersion: 2 - m_Mass: 100000 - m_Drag: 0 - m_AngularDrag: 0 - m_UseGravity: 0 - m_IsKinematic: 0 - m_Interpolate: 1 - m_Constraints: 8 - m_CollisionDetection: 2 ---- !u!114 &3821854256072606318 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 275dd7e633a1dc34b839f4d7b533912b, type: 3} - m_Name: - m_EditorClassIdentifier: - charge: 0 ---- !u!114 &5376604150013950073 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6911d929f6f50bd4bb62dedc0260837a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &9010214473475895995 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9008623808600828214} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d4429854e5ba1ab4cb53dfa9361ff377, type: 3} - m_Name: - m_EditorClassIdentifier: - ParticleType: 4Helium diff --git a/Assets/4Helium.prefab.meta b/Assets/4Helium.prefab.meta deleted file mode 100644 index 16475747..00000000 --- a/Assets/4Helium.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d3e1ae00a52e9a4479fa7a323dc81390 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NuclearSimulation.cs b/Assets/NuclearSimulation.cs index a2dac8af..78082ac8 100644 --- a/Assets/NuclearSimulation.cs +++ b/Assets/NuclearSimulation.cs @@ -3,6 +3,8 @@ using UnityEngine; using IC2020; using System; +using UnityEngine.UI; +using UnityEditor; public class NuclearSimulation : MonoBehaviour { @@ -17,7 +19,47 @@ public class NuclearSimulation : MonoBehaviour // Start is called before the first frame update void Start() { - // TODO: Update Buffet Table (3/24) + List Names = new List() + { + "Hydrogen", + "Deuterium", + "Helium-3", + "Helium-4", + "Beta Particle", + "Neutrino" + }; + + List ParticleColors = new List() + { + ICColor.Hydrogen, + ICColor.Deuterium, + ICColor.HeliumIsotope, + ICColor.HeliumIsotope4, + ICColor.Electron, + ICColor.Neutrino + }; + + GameObject BTPanel = GameObject.Find("Buffet Table").transform.GetChild(0).gameObject; + + for (int idx = 0; idx < BTPanel.transform.childCount; idx++) + { + GameObject BTElement = BTPanel.transform.GetChild(idx).gameObject; + + if (BTElement.name == "Tile" + (idx - 1)) + { + GameObject Indicator = BTElement.transform.GetChild(0).gameObject; + GameObject Name = BTElement.transform.GetChild(1).gameObject; + + Name.GetComponent().text = Names[idx - 1]; + + Indicator.GetComponent().sprite = AssetDatabase.GetBuiltinExtraResource("UI/Skin/Knob.psd"); + Indicator.GetComponent().color = ParticleColors[idx - 1]; + Indicator.GetComponent().sizeDelta = new Vector2(50, 50); + + GameObject.Destroy(Indicator.GetComponent()); + } + } + // Going back to the first design: fixing the starting positions of the protons StartPosition.Add(new Vector3(-7f, 7f)); StartPosition.Add(new Vector3(0f, -7f));