private IEnumerable <Vector3> _GetVolumePoints()
        {
            foreach (var obj in _objects)
            {
                IBoundable bound = obj as IBoundable;
                if (bound == null)
                {
                    continue;
                }

                var boundingBox    = bound.BoundingBox;
                var boundingSphere = bound.BoundingSphere;
                if (boundingBox != null)
                {
                    BoxBuilder box = new BoxBuilder(2, 2, 2);

                    for (int i = 0; i < box.Vertices.Length; i++)
                    {
                        var mat = Matrix.Scale(boundingBox.Extends) * boundingBox.GlobalPose;
                        yield return(Vector3.Transform(box.Vertices[i].Position, mat));
                    }
                }
                else if (boundingSphere.Radius > 0)
                {
                    SphereBuilder sphere = new SphereBuilder(16, 16, boundingSphere.Radius);
                    for (int i = 0; i < sphere.Vertices.Length; i++)
                    {
                        var mat = Matrix.Translate(boundingSphere.Center);
                        yield return(Vector3.Transform(sphere.Vertices[i].Position, mat));
                    }
                }
            }
        }
示例#2
0
        public void TestBoxBuilderTests(string input, string expectedResult)
        {
            Box    box    = BoxBuilder.Build(input);
            string result = box.ToString();

            Assert.Equal(expectedResult, result);
            Console.Out.WriteLine(result);
        }
示例#3
0
        public Reflections()
        {
            _boxBuilder = new BoxBuilder(2, 2, 1);
            Vector3 translation = new Vector3(0, 0, 0.5f);

            for (int i = 0; i < _boxBuilder.Vertices.Length; i++)
            {
                _boxBuilder.Vertices[i].Position += translation;
            }
            _vb = GraphicDeviceFactory.Device.CreateVertexBuffer <MeshVertex>(data: _boxBuilder.Vertices);
        }
示例#4
0
        public BoxBuilder GetGeometry()
        {
            BoxBuilder box = new BoxBuilder(2, 2, 2);

            for (int i = 0; i < box.Vertices.Length; i++)
            {
                var mat = Matrix.Scale(extends) * globalPose;
                box.Vertices[i].Position = Vector3.Transform(box.Vertices[i].Position, mat);
            }
            return(box);
        }
        public BoxMesh()
        {
            _builder = new BoxBuilder(10, 10, 10);
            _mat     = BasicMaterial.CreateDefaultMaterial("boxMaterial");

            //VertexPositionColor[] vertexes = new VertexPositionColor[_builder.Vertices.Length];
            //for (int i = 0; i < vertexes.Length; i++)
            //{
            //    vertexes[i] = new VertexPositionColor(_builder.Vertices[i].Position, new Color4(1, 1, 0, 0));
            //}
            var device = GraphicDeviceFactory.Device;

            _vb = device.CreateVertexBuffer(data: _builder.Vertices);
            _ib = device.CreateIndexBuffer(data: _builder.Indices);

            _mat.Diffuse           = new Vector3(1, 1, 1);
            _mat.DiffuseMap        = device.CreateTexture2DFromFile(@"I:\Pictures\lufy.png");
            _mat.SpecularIntensity = 0;
            _mat.EmisiveIntensity  = 0;
            _mat.Alpha             = 1f;
            IsTransparent          = _mat.ContainsTrasparency;

            SetRender <DefaultTechnique, BasicMeshEffect>((box, render) =>
            {
                var effect = render.Effect;

                //effect.Constants.gId = new Vector4(1, 1, 0, 0);
                //effect.U.World = Matrix.Identity;
                //map.World = Matrix.Identity;

                device.PrimitiveTopology = IAPrimitive.TriangleList;
                device.SetVertexBuffer(0, _vb, 0);
                device.SetIndexBuffer(_ib, 0);

                render.Bind(_mat);
                foreach (var pass in effect.Passes(0))
                {
                    effect.Apply(pass);
                    device.DrawIndexed(_builder.Indices.Length, 0, 0);
                }
                effect.EndPasses();
            });
            //.BindWith(new CameraBinding())
            //.BindWith(new MeshMaterialBinding())
            //.BindWith(new LightBinding())
            //.BindWith(new AmbientLightBinding())
            //.BindWith(new PixelClippingBinding());
        }
        public void CreateTest()
        {
            var builder = new BoxBuilder()
                          .SetHeight(5)
                          .SetLenght(4)
                          .SetWith(6);

            var box1 = builder.Create();
            var box2 = builder.Create();

            Assert.AreEqual(box1, box2);

            var box3 = builder.SetWith(1).Create();

            Assert.AreNotEqual(box1, box3);
        }
示例#7
0
        public PartialViewResult BoxSummary(string id, string userid)
        {
            int.TryParse(id, out int exchangeId);
            userid = BifSessionData.IsInRole("ADMIN") ? userid ?? BifSessionData.Id : BifSessionData.Id;

            Exchange exchange = DAL.Context.Exchanges.Find(exchangeId);

            List <Item> items = DAL.Context.Items.Where(x => x.UserId == userid && x.ExchangeId == exchangeId).ToList();

            BoxBuilder boxBuilder = new BoxBuilder(items)
                                    .SetMinimumOunces(exchange?.MinOunces)
                                    .SetMinimumBeerRating(exchange?.MinRating)
                                    .SetMinimumBoxRating(exchange?.MinBoxRating)
                                    .SetMinimumUnique(exchange?.MinUnique)
                                    .SetMinimumCost(exchange?.MinCost);

            return(PartialView("__BoxSummary", boxBuilder));
        }
示例#8
0
    public override void BuildGeometry()
    {
        foreach (Transform c in transform)
        {
            if (c.gameObject.name == "_Walls")
            {
                GameObject.Destroy(c.gameObject);
                break;
            }
        }

        GameObject newObj = new GameObject("_Walls");

        newObj.transform.SetParent(transform, false);

        BoxBuilder.BuildRoof(gameObject, this);
        BoxBuilder.BuildWalls(newObj, this);
    }
示例#9
0
        public IBox Box([NotNull] VariableVector anchor, [CanBeNull] string text, [CanBeNull] VariableVector minDiagonal = null,
                        BoxAnchoring boxAnchoring         = BoxAnchoring.Center, [CanBeNull] Color?boxColor = null /*White*/, int connectors = 8,
                        double borderWidth                = 0, [CanBeNull] Color?borderColor = null /*Black*/,
                        BoxTextPlacement boxTextPlacement = BoxTextPlacement.Center, [CanBeNull] Font textFont = null /*___*/, [CanBeNull] Color?textColor = null /*Black*/,
                        double textPadding                = 0.2, int drawingOrder = 0, int fixingOrder = 100, [CanBeNull] string name = null, [CanBeNull] string htmlRef = null)
        {
            if (anchor == null)
            {
                throw new ArgumentNullException(nameof(anchor));
            }

            var boxBuilder = new BoxBuilder(_solver, anchor, new VariableVector((text ?? anchor.Name) + "./", _solver).Restrict(minDiagonal),
                                            boxAnchoring, boxColor ?? Color.White, borderWidth, borderColor ?? Color.Black, connectors,
                                            text ?? "", boxTextPlacement, textFont ?? _defaultTextFont, textColor ?? Color.Black, textPadding,
                                            _builders.Count, drawingOrder, fixingOrder, name, htmlRef);

            _builders.Add(boxBuilder);
            return(boxBuilder);
        }
示例#10
0
        public void MeasurePass(Painter g)
        {
            if (parent_ != null)
            {
                level = parent_.level + 1;
            }
            int  x      = 0;
            int  y      = 0;
            bool hasBox = false;

            if ((box != null))
            {
                hasBox = true;
                x      = box.X;
                y      = box.Y;
            }

            if ((((box == null) || ((level < 2))) || ((level == 2))) || ((level > 2)))
            {
                BoxBuilder.MakeBox(this, g);
            }
            if ((type_ != null) && (type_.type == ElementType.Math))
            {
                PushdownStyleScript();
            }

            if (hasBox)
            {
                box.X = x;
                box.Y = y;
            }


            NodesList list = GetChildrenNodes();
            Node      n    = list.Next();

            if ((style_ != null) && (style_.size.Length > 0))
            {
                try
                {
                    style_.scale = StyleAttributes.FontScale(style_.size, (double)g.GetSuitableFont(this, style_).SizeInPoints);
                    style_.size  = "";
                }
                catch
                {
                }
            }
            if ((style_ != null))
            {
                if (type_.type == ElementType.Math)
                {
                    style_.isTop = true;
                }
                else if (style_.canOverride)
                {
                    style_.isTop = false;
                }
            }
            while (n != null)
            {
                if (style_ != null)
                {
                    if (((n.style_ != null) && n.style_.canOverride) && n.IsSameStyleParent())
                    {
                        n.CombineStyles(n.style_, style_);
                    }
                    else if (n.type_.type == ElementType.Entity)
                    {
                        n.style_ = null;
                    }
                    else
                    {
                        try
                        {
                            StyleAttributes style = n.CascadeOverride(style_);
                            if (style != null)
                            {
                                if (type_.type == ElementType.Math)
                                {
                                    style.fontFamily  = "";
                                    style.isUnderline = false;
                                }
                                n.style_ = new StyleAttributes();
                                style.CopyTo(n.style_);
                                if ((style_ != null) && style_.isTop)
                                {
                                    n.style_.canOverride = false;
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
                n.MeasurePass(g);
                box.setChildSize(n);
                n = list.Next();
            }

            if (((((level < 2)) || ((level == 2))) || ((level > 2))))
            {
                box.getSize(this);
            }
        }
        public CoordinateGlyp Initialize()
        {
            var graphics = Engine.Graphics;

            GlypComponent[] components;
            if (EnablePlanes)
            {
                components = new GlypComponent[6]
                {
                    new GlypComponent {
                        Id = X
                    },
                    new GlypComponent {
                        Id = Y
                    },
                    new GlypComponent {
                        Id = Z
                    },
                    new GlypComponent {
                        Id = XY
                    },
                    new GlypComponent {
                        Id = XZ
                    },
                    new GlypComponent {
                        Id = YZ
                    }
                };
            }
            else
            {
                components = new GlypComponent[3]
                {
                    new GlypComponent {
                        Id = X
                    },
                    new GlypComponent {
                        Id = Y
                    },
                    new GlypComponent {
                        Id = Z
                    }
                };
            }
            Components = components;


            var arrow = new ConeBuilder(16, 16, arrowRadius, arrowHeight);

            //var trunk2 = trunk; // new CylindreBuilder(16, 16, 1, 10, false);
            //cylyndre = new Component { Color = new Color4(1, 1, 1, 1), Axix = AxisName.None };
            //VertexPositionColor[] data2 = new VertexPositionColor[trunk2.Vertices.Length];
            //var transform2 = Matrix.RotationZ(-Numerics.PIover2) * Matrix.Translate(0.5f * trunk2.height, 0, 0);
            //for (int i = 0; i < data2.Length; i++)
            //{
            //    data2[i] = new VertexPositionColor(Vector3.TransformCoordinates(trunk2.Vertices[i].Position, transform2), new Color4(1, 1, 0, 0));
            //}
            //cylyndre.VertexBuffer = graphics.CreateVertexBuffer(data: data2);
            //cylyndre.IndexBufffer = graphics.CreateIndexBuffer(data: trunk2.Indices);

            // X Axis
            var xAxis = components[0];

            VertexPositionColor[] data = new VertexPositionColor[arrow.Vertices.Length];
            Matrix transform           = Matrix.RotationZ(-Numerics.PIover2) * Matrix.Translate(0.5f * arrow.height + trunkHeight, 0, 0);

            for (int i = 0; i < data.Length; i++)
            {
                data[i] = new VertexPositionColor(Vector3.TransformCoordinates(arrow.Vertices[i].Position, transform), new Color4(alpha, 1, 0, 0));
            }
            xAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
            xAxis.IndexBufffer = graphics.CreateIndexBuffer(data: arrow.Indices);

            //Y Axis
            var yAxis = components[1];

            transform = Matrix.Translate(0, 0.5f * arrow.height + trunkHeight, 0);
            for (int i = 0; i < data.Length; i++)
            {
                data[i] = new VertexPositionColor(Vector3.TransformCoordinates(arrow.Vertices[i].Position, transform), new Color4(alpha, 0, 1, 0));
            }

            yAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
            yAxis.IndexBufffer = graphics.CreateIndexBuffer(data: arrow.Indices);

            // Z axis
            var zAxis = components[2];

            transform = Matrix.RotationX(Numerics.PIover2) * Matrix.Translate(0, 0, 0.5f * arrow.height + trunkHeight);
            for (int i = 0; i < data.Length; i++)
            {
                data[i] = new VertexPositionColor(Vector3.TransformCoordinates(arrow.Vertices[i].Position, transform), new Color4(alpha, 0, 0, 1));
            }

            zAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
            zAxis.IndexBufffer = graphics.CreateIndexBuffer(data: arrow.Indices);

            if (EnablePlanes)
            {
                //XY
                BoxBuilder box    = new BoxBuilder(width, width, tick);
                var        xyAxis = components[3];

                data = new VertexPositionColor[box.Vertices.Length];
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = new VertexPositionColor(box.Vertices[i].Position, new Color4(alpha, 1, 0, 0));
                }
                xyAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
                xyAxis.IndexBufffer = graphics.CreateIndexBuffer(data: box.Indices);

                //XZ
                box = new BoxBuilder(width, tick, width);
                var xzAxis = components[4];

                data = new VertexPositionColor[box.Vertices.Length];
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = new VertexPositionColor(box.Vertices[i].Position, new Color4(alpha, 0, 0, 1));
                }
                xzAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
                xzAxis.IndexBufffer = graphics.CreateIndexBuffer(data: box.Indices);

                //YZ
                box = new BoxBuilder(tick, width, width);
                var yzAxis = components[5];

                data = new VertexPositionColor[box.Vertices.Length];
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = new VertexPositionColor(box.Vertices[i].Position, new Color4(alpha, 0, 1, 0));
                }
                yzAxis.VertexBuffer = graphics.CreateVertexBuffer(data: data);
                yzAxis.IndexBufffer = graphics.CreateIndexBuffer(data: box.Indices);
            }

            return(this);
        }
示例#12
0
        public static Mesh CreateBox(float dimX, float dimY, float dimZ)
        {
            BoxBuilder boxBuilder = new BoxBuilder(dimX, dimY, dimZ);

            return(CreateMesh(boxBuilder.Vertices, boxBuilder.Indices));
        }