public AtomSpriteBufferCreator() { availableFields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), new DataFields(VertexFormats.PointSize, "POINTSIZE"), new DataFields(VertexFormats.Diffuse, "DIFFUSE"), }; }
public BondLinesBufferCreator() { availableFields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), //new DataFields(VertexFormats.Texture1, "TEXTURE0"), new DataFields(VertexFormats.Normal, "NORMAL"), new DataFields(VertexFormats.Diffuse, "DIFFUSE"), }; }
// public override bool DesiredGeomDataFields(out DataFields[] fields, bool exclusive) // { // fields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), // new DataFields(VertexFormats.PointSize, "SIZEFLOAT"), // new DataFields(VertexFormats.Diffuse, "DIFFUSE") }; // return true; // } public override bool DesiredFrameData(out DataFields[] fields) { fields = new DataFields[] { new DataFields(VertexFormats.Transformed, "POSITION"), new DataFields(VertexFormats.Texture1, "TCURR"), new DataFields(VertexFormats.Texture2, "TBACK"), new DataFields(VertexFormats.PointSize, "FSIZE"), new DataFields(VertexFormats.Texture3, "VCOLOR") }; return(true); }
/// <summary> /// Initializes a new instance of the BondLinesBufferCreator class. /// </summary> public BondThickLinesBufferCreator(int numSides) { this.numSides = numSides; availableFields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), //new DataFields(VertexFormats.Texture1, "TEXTURE0"), new DataFields(VertexFormats.Normal, "NORMAL"), new DataFields(VertexFormats.Diffuse, "DIFFUSE"), }; }
public AtomSphereBufferCreator(float scale, int detail1, int detail2) { availableFields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), new DataFields(VertexFormats.Normal, "NORMAL"), new DataFields(VertexFormats.Diffuse, "DIFFUSE"), new DataFields(VertexFormats.Texture1, "TEXTURE0") }; this._Scaling = scale; this.sphereDetail1 = detail1; this.sphereDetail2 = detail2; }
// public override bool DesiredGeomDataFields(out DataFields[] fields, bool exclusive) // { // fields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), // new DataFields(VertexFormats.PointSize, "SIZEFLOAT"), // new DataFields(VertexFormats.Diffuse, "DIFFUSE") }; // return true; // } public override bool DesiredFrameData(out DataFields[] fields) { fields = new DataFields[] { new DataFields(VertexFormats.Transformed, "POSITION"), new DataFields(VertexFormats.Texture1, "TCURR"), new DataFields(VertexFormats.Texture2, "TBACK"), new DataFields(VertexFormats.PointSize, "FSIZE"), new DataFields(VertexFormats.Texture3, "VCOLOR") }; return true; }
public virtual bool DesiredFrameData(out DataFields[] fields) { fields = null; return false; }
public AtomBlobBufferCreator() { availableFields = new DataFields[] { new DataFields(VertexFormats.Position, "POSITION"), new DataFields(VertexFormats.PointSize, "SIZEFLOAT"), new DataFields(VertexFormats.Normal, "DIFFUSE") }; }
public override void SetupForCreation(int[] reqFields) { if (reqFields == null) { fields = availableFields; } else { fields = new DataFields[reqFields.Length]; for (int i = 0; i < reqFields.Length; i++) { fields[i] = availableFields[reqFields[i]]; } } }
public void UpdateBonds(CompleteOutputDescription latestCoDesc, IBond[] bonds) { if (scheme.HandlesBonds) { scheme.SetOutputDescription(coDesc); DataFields[][] allStreams = new DataFields[1][]; IGeometryCreator[] schStreams = scheme.GetBondStreams(); GeomDataBufferStream[] geomStream = new GeomDataBufferStream[schStreams.Length]; for (int i = 0; i < geomStream.Length; i++) { allStreams[0] = schStreams[i].Fields; GeomDataTransformer.CreateBufferStream(allStreams, out geomStream[i]); } // fill buffer stream scheme.SetBondData(bonds, geomStream); } }
public void UpdateAtoms(CompleteOutputDescription coDesc, IAtom[] atoms) { if (scheme.HandlesAtoms) { scheme.SetOutputDescription(coDesc); // pass throught scheme & effects IGeometryCreator[] schStreams = scheme.GetAtomStreams(); DataFields[][] allStreams = new DataFields[1][]; GeomDataBufferStream[] geomStream = new GeomDataBufferStream[schStreams.Length]; for (int i = 0; i < geomStream.Length; i++) { allStreams[0] = schStreams[i].Fields; GeomDataTransformer.CreateBufferStream(allStreams, out geomStream[i]); } // fill buffer stream scheme.SetAtomData(atoms, geomStream); } }
public void OnNewDataSource(IAtom[] atoms, IBond[] bonds, Vector3 origin, Bounds3D bounds) { sceneGraph = new OcTree<ChemEntity>((int)bounds.radius * 2, -bounds.min); /*screenEntities.Add(new BondAngle(device, atoms[0], atoms[1], atoms[2])); screenEntities[0].Init(device); postSceneWorldEntities.Add(new BoundingBoxEntity(new BoundingBox(bounds.min, bounds.max), false, Color.LightGray.ToArgb())); postSceneWorldEntities[0].Init(device); postSceneWorldEntities.Add(new SphereAxis3D()); postSceneWorldEntities[1].Init(device);*/ sceneGraphEntities = sceneGraph.SceneItems; // create molecule entities foreach (IAtom atom in atoms) { AtomEntity aentity = AtomEntity.BuildEntity(atom); sceneGraph.Insert(aentity); /*ScreenLabelVSpaceEntity entity = new ScreenLabelVSpaceEntity(atom.ID + ":" + aentity.UId.ToString(), (Vector3)aentity.Position3D); entity.Init(device); screenEntities.Add(entity);*/ /*AtomSymbolEntity entity = new AtomSymbolEntity(aentity); entity.Init(device); postSceneViewEntities.Add(entity);*/ } //foreach (IBond bond in bonds) //{ //sceneGraph.Insert(new BondE); //} scheme.SetOutputDescription(coDesc); scheme.SetupScene(origin, bounds.radius); // pass throught scheme & effects IGeometryCreator[] schStreams = scheme.GetAtomStreams(); DataFields[] efxFields = null; //effect.DesiredData(out efxFields, false); DataFields[][] allStreams = new DataFields[1 + (efxFields != null ? 1 : 0 )][]; //if (efxFields != null) // allStreams[1] = efxFields; if (scheme.HandlesAtoms && atoms != null) { GeomDataBufferStream[] geomStream = new GeomDataBufferStream[schStreams.Length]; for (int i = 0; i < geomStream.Length; i++) { allStreams[0] = schStreams[i].Fields; GeomDataTransformer.CreateBufferStream(allStreams, out geomStream[i]); } // fill buffer stream scheme.SetAtomData(atoms, geomStream); } schStreams = scheme.GetBondStreams(); if (scheme.HandlesBonds && bonds != null) { GeomDataBufferStream[] geomStream = new GeomDataBufferStream[schStreams.Length]; for (int i = 0; i < geomStream.Length; i++) { allStreams[0] = schStreams[i].Fields; GeomDataTransformer.CreateBufferStream(allStreams, out geomStream[i]); } // fill buffer stream scheme.SetBondData(bonds, geomStream); } }