private static extern void MDDriver_getEnergies(ref IMDEnergies energies);
void Update() { IMDEnergies energies = new IMDEnergies(); if (MDDriver_isConnected()) { // if (!logFPS) // { // logFPS = true; // Molecule3DComp.toggleFPSLog (); // } MDDriver_getEnergies(ref energies); // Debug.Log (energies.Etot); PlotManager.Instance.PlotAdd("Total Energy", energies.Etot); if (Input.GetKeyDown(KeyCode.A)) { MDDriver_pause(); } if (Input.GetKeyDown(KeyCode.Z)) { MDDriver_play(); } int readParticles = MDDriver_getNbParticles(); //Debug.Log("readParticles: " + readParticles); if (readParticles != nbParticles) { Debug.Log("readParticles: " + readParticles); nbParticles = readParticles; pos2 = new float[nbParticles * 3]; } else if (pos2.Length == readParticles * 3) { // Store retrieved positions but let managers update positions later readParticles = MDDriver_getPositions(pos2, readParticles); List <Vector3> lst = new List <Vector3>(); for (int i = 0; i < readParticles; i++) { lst.Add(new Vector3(pos2[i * 3], pos2[i * 3 + 1], pos2[i * 3 + 2])); } MoleculeModel.atomsMDDriverLocationlist = lst; } List <GenericManager> managers = Molecule.View.DisplayMolecule.GetManagers(); GenericManager atomManager = managers[0]; atomManager.ResetMDDriverPositions(); // Copied from DisplayMolecule.GetManagers // Does not work otherwise. Why? if (UIData.bondtype == UIData.BondType.line) { GameObject lineManagerObj = GameObject.FindGameObjectWithTag("LineManager"); LineManager lineManager = lineManagerObj.GetComponent <LineManager>(); lineManager.ResetPositions(); } else if (UIData.bondtype == UIData.BondType.cube) { GameObject cubeBondManagerObj = GameObject.FindGameObjectWithTag("CubeBondManager"); CubeBondManager cubeBondManager = cubeBondManagerObj.GetComponent <CubeBondManager>(); cubeBondManager.ResetPositions(); } else if (UIData.bondtype == UIData.BondType.hyperstick) { GameObject hStickManagerObj = GameObject.FindGameObjectWithTag("HStickManager"); HStickManager hStickManager = hStickManagerObj.GetComponent <HStickManager>(); hStickManager.ResetPositions(); } if (MDDriver.hb) { // Debug.Log (RNAView.findHbonds().Count); // List<int[]> hbonds = RNAView.findHbonds(); // Debug.Log (bonds.Count + " bonds found"); // int sequenceLength = MoleculeModel.sequence.Count(); // string structure = VARNA.generateStructureString(sequenceLength, hbonds); // VARNA.generateImage(MoleculeModel.sequence, structure, "test.png"); } } else { Debug.Log("Not connected..."); } }