Exemplo n.º 1
0
 private static extern void MDDriver_getEnergies(ref IMDEnergies energies);
Exemplo n.º 2
0
    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...");
        }
    }