public void It_Should_Determine_The_Length_Of_a_Descending_Generator()
        {
            // Arrange
            var generatorValue = new GeneratorValue(NumericValue.Create(5), NumericValue.Create(2));
            
            // Assert
            Assert.That(generatorValue.Length, Is.EqualTo(4));

        }
        public void It_Should_Generate_Some_Values_Descending()
        {
            // Arrange
            var generatorValue = new GeneratorValue(NumericValue.Create(5), NumericValue.Create(2));

            // Act
            var result = generatorValue.AsEnumerable();

            // Assert
            Assert.That(result.Select(x => x.Value), Is.EqualTo(new List<int> { 5,4,3,2 }));

        }
        public void It_Should_Generate_Some_Values(int start, int end, int[] expected )
        {
            // Arrange
            var generatorValue = new GeneratorValue(NumericValue.Create(start), NumericValue.Create(end));

            // Act
            var result = generatorValue.AsEnumerable();

            // Assert
            Assert.That(result.Select(x => x.Value), Is.EqualTo(expected.ToList()));

        }
예제 #4
0
        private void Generate()
        {
            var seed   = System.DateTime.Now.Millisecond;
            var perlin = new GeneratorValue(seed, 1, 0.5f, 0.025f, 2, 4);

            float[] density = new float[width * height * depth];

            for (int k = 0; k < depth; k++)
            {
                for (int j = 0; j < height; j++)
                {
                    for (int i = 0; i < width; i++)
                    {
                        density[i + j * width + k * width * height] = perlin.GetNoise3D(new Vector3(i, j, k));
                    }
                }
            }

            var cubeMarcher = new MarchingCubes(0.1f);

            var verts    = new List <Vector3>();
            var indicies = new List <int>();

            cubeMarcher.GenerateMesh(density, width, height, depth, verts, indicies);
            Debug.Log(verts.Count);
            Debug.Log(indicies.Count);

            var mesh = new Mesh();

            mesh.SetVertices(verts);
            mesh.SetIndices(indicies.ToArray(), MeshTopology.Triangles, 0);
            mesh.RecalculateBounds();
            mesh.RecalculateNormals();

            meshFilter.mesh = mesh;
        }
예제 #5
0
        public IEnumerable<IExpressionConstant> Eval(ITemplateContext templateContext)
        {
            if (_startExpression == null)
            {
                // this shouldn't happen
                throw new Exception("The Generator start expression is null");
            }
            if (_endExpression == null)
            {
                // this shouldn't happen
                throw new Exception("The Generator end expression is null");
            }
            var startValue = ValueAsNumeric(_startExpression, templateContext);
            var endValue = ValueAsNumeric(_endExpression, templateContext);
            //Console.WriteLine("*** Generating sequence from "+ startValue.IntValue+ " to " +endValue.IntValue);
            var generatorValue = new GeneratorValue(startValue, endValue);
            return generatorValue;

        }
예제 #6
0
        public void A_Generator_Value_Should_Return_The_Size()
        {
            // Arrange
            var strVal = new GeneratorValue(NumericValue.Create(3), NumericValue.Create(10));
            var filter = new SizeFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), strVal).SuccessValue<NumericValue>();

            // Assert
            Assert.That(result.Value, Is.EqualTo(8));

        }