//public void AddProteinInstance(string path, Vector3 position, Quaternion rotation) //{ // if (!ProteinIngredientNames.Contains(path)) // { // throw new Exception("Ingredient path do not exists"); // } // var ingredientId = ProteinIngredientNames.IndexOf(path); // CPUBuffers.Get.ProteinInstanceInfos.Add(new Vector4(ingredientId, (int) InstanceState.Normal, 0)); // CPUBuffers.Get.ProteinInstancePositions.Add(position); // CPUBuffers.Get.ProteinInstanceRotations.Add(MyUtility.QuanternionToVector4(rotation)); // TotalNumProteinAtoms += CPUBuffers.Get.ProteinAtomCount[ingredientId]; //} //*** Curve Ingredients ****// public void AddCurveIngredient(string path, string pdbName) { if (SceneHierarchy.Contains(path)) { throw new Exception("Invalid curve ingredient path: " + path); } if (CurveIngredientNames.Contains(path)) { throw new Exception("Invalid curve ingredient path: " + path); } AddIngredientToHierarchy(path); CurveIngredientNames.Add(path); var numSteps = 1; var twistAngle = 0.0f; var segmentLength = 34.0f; var color = new Color(1, 1, 1, 1); if (path.Contains("DNA")) { numSteps = 12; twistAngle = 34.3f; segmentLength = 34.0f; color = Color.yellow; var atomSpheres = PdbLoader.LoadAtomSpheres(pdbName); CPUBuffers.Get.CurveIngredientsAtomStart.Add(CPUBuffers.Get.CurveIngredientsAtoms.Count); CPUBuffers.Get.CurveIngredientsAtomCount.Add(atomSpheres.Count); CPUBuffers.Get.CurveIngredientsAtoms.AddRange(atomSpheres); } //else if (path.Contains("mRNA")) else if (path.Contains("RNA")) { numSteps = 12; twistAngle = 34.3f; segmentLength = 34.0f; color = Color.red; var atomSpheres = PdbLoader.LoadAtomSpheres(pdbName); CPUBuffers.Get.CurveIngredientsAtomStart.Add(CPUBuffers.Get.CurveIngredientsAtoms.Count); CPUBuffers.Get.CurveIngredientsAtomCount.Add(atomSpheres.Count); CPUBuffers.Get.CurveIngredientsAtoms.AddRange(atomSpheres); } else if (path.Contains("peptide")) { numSteps = 10; twistAngle = 0; segmentLength = 20.0f; color = Color.magenta; var atomSphere = new Vector4(0, 0, 0, 3); CPUBuffers.Get.CurveIngredientsAtomStart.Add(CPUBuffers.Get.CurveIngredientsAtoms.Count); CPUBuffers.Get.CurveIngredientsAtomCount.Add(1); CPUBuffers.Get.CurveIngredientsAtoms.Add(atomSphere); } else if (path.Contains("lypoglycane")) { numSteps = 10; twistAngle = 0; segmentLength = 20; color = Color.green; var atomSphere = new Vector4(0, 0, 0, 8); CPUBuffers.Get.CurveIngredientsAtomStart.Add(CPUBuffers.Get.CurveIngredientsAtoms.Count); CPUBuffers.Get.CurveIngredientsAtomCount.Add(1); CPUBuffers.Get.CurveIngredientsAtoms.Add(atomSphere); } else { throw new Exception("Curve ingredient unknown"); } CPUBuffers.Get.CurveIngredientsColors.Add(color); CPUBuffers.Get.CurveIngredientToggleFlags.Add(1); CPUBuffers.Get.CurveIngredientsInfos.Add(new Vector4(numSteps, twistAngle, segmentLength, 0)); }
public void AddCurveIngredient(string name, string pdbName) { if (ProteinNames.Contains(name)) { return; } int numSteps = 1; float twistAngle = 0; float segmentLength = 34.0f; var color = Helper.GetRandomColor(); if (name.Contains("DNA")) { numSteps = 12; twistAngle = 34.3f; segmentLength = 34.0f; color = Color.yellow; var atomSpheres = PdbLoader.LoadAtomSpheres(pdbName); CurveIngredientsAtomCount.Add(atomSpheres.Count); CurveIngredientsAtomStart.Add(CurveIngredientsAtoms.Count); CurveIngredientsAtoms.AddRange(atomSpheres); } else if (name.Contains("mRNA")) { numSteps = 12; twistAngle = 34.3f; segmentLength = 34.0f; color = Color.red; var atomSpheres = PdbLoader.LoadAtomSpheres(pdbName); CurveIngredientsAtomCount.Add(atomSpheres.Count); CurveIngredientsAtomStart.Add(CurveIngredientsAtoms.Count); CurveIngredientsAtoms.AddRange(atomSpheres); } else if (name.Contains("peptide")) { numSteps = 10; twistAngle = 0; segmentLength = 20.0f; color = Color.magenta; var atomSphere = new Vector4(0, 0, 0, 3); CurveIngredientsAtomCount.Add(1); CurveIngredientsAtomStart.Add(CurveIngredientsAtoms.Count); CurveIngredientsAtoms.Add(atomSphere); } else if (name.Contains("lypoglycane")) { numSteps = 10; twistAngle = 0; segmentLength = 20; color = Color.green; var atomSphere = new Vector4(0, 0, 0, 8); CurveIngredientsAtomCount.Add(1); CurveIngredientsAtomStart.Add(CurveIngredientsAtoms.Count); CurveIngredientsAtoms.Add(atomSphere); } else { throw new Exception("Curve ingredient unknown"); } CurveIngredientsNames.Add(name); CurveIngredientsColors.Add(color); CurveIngredientToggleFlags.Add(1); CurveIngredientsInfos.Add(new Vector4(numSteps, twistAngle, segmentLength)); }