Example #1
0
        void DrawWithAlfaBlending(GraphicsDevice graphics,
                                  RasterizerStateDescription2 stated,
                                  IGeometryData geo)
        {
            var context = graphics.ImmediateContext;

            var mode = stated.CullMode;



            if (mode == CullMode.Back || mode == CullMode.None)
            {
                stated.CullMode = CullMode.Back;

                using (var rasterizerState = graphics.CreateRasterizerState(stated)) {
                    context.Rasterizer.State = rasterizerState;

                    graphics.ImmediateContext.DrawIndexed(geo.Indices.Length, 0, 0);
                }
            }

            if (mode == CullMode.Front || mode == CullMode.None)
            {
                stated.CullMode = CullMode.Front;

                using (var rasterizerState = graphics.CreateRasterizerState(stated)) {
                    context.Rasterizer.State = rasterizerState;

                    graphics.ImmediateContext.DrawIndexed(geo.Indices.Length, 0, 0);
                }
            }
        }
        public TilingPlaneEntity(IRigidBody body, IGeometryData geometryData)
        {
            if (geometryData.Prim.PrimType != CollideType.Plane) {throw new InvalidOperationException("You may not use this class with a CollideType other than CollideType.Plane");}

            this.body = body;
            this.geometryData = geometryData;
            //this.Texture = texture;
        }
Example #3
0
        public static void WriteObj(FileInfo file, IGeometryData geo)
        {
            var meshes = new List <WriteMesh>();
            var mesh   = new SimpleMesh();

            var map     = new Dictionary <Vector3, int>();
            var indeces = new List <int>();

            for (var index = 0; index < geo.Positions.Length; index++)
            {
                var v = geo.Positions[index];
                if (!map.ContainsKey(v))
                {
                    map.Add(v, map.Count);
                }
            }
            for (var index = 0; index < geo.Indices.Length; index++)
            {
                var i = geo.Indices[index];
                var v = geo.Positions[i];
                indeces.Add(map[v]);
            }


            var points = map.Keys.ToArray();
            var pcount = points.Length * 3;
            var pp     = new double[pcount];
            var pindex = 0;

            for (var index = 0; index < points.Length; index++)
            {
                var v = points[index];
                pp[pindex++] = v.X;
                pp[pindex++] = v.Y;
                pp[pindex++] = v.Z;
            }
            mesh.Initialize(new VectorArray3d(pp), new VectorArray3i(indeces.ToArray()));

            meshes.Add(new WriteMesh(mesh, $"d3dlab export"));

            StandardMeshWriter.WriteFile(file.FullName, meshes, WriteOptions.Defaults);
        }
Example #4
0
 public static void ToObjFile(this IGeometryData geo, string path)
 {
     G3Writers.WriteObj(new System.IO.FileInfo(path), geo);
 }