public void Serialize()
        {
            var container = new GraphicStreamContainer();
            var positions = new[] { Vector3.XAxis, Vector3.YAxis, Vector3.ZAxis };
            container.Create(GraphicStreamUsage.Position, positions);
            var texCoords = new[] { Vector2.XAxis, Vector2.YAxis };
            container.Create(GraphicStreamUsage.TextureCoordinate, texCoords);

            var filename = "test.txt";
            Serializer.SerializeBinary(container, filename);

            var deserializedContainer = Serializer.DeserializeBinary<GraphicStreamContainer>(filename);

            deserializedContainer.ShouldNotBeNull();
            deserializedContainer.Count().ShouldEqual(2);

            deserializedContainer.GetByUsage(GraphicStreamUsage.Position)
                .ShouldNotBeNull()
                .TypeShouldBe<GraphicStream<Vector3>>()
                .Data.ShouldEqual(positions);

            deserializedContainer.GetByUsage(GraphicStreamUsage.TextureCoordinate)
                .ShouldNotBeNull()
                .TypeShouldBe<GraphicStream<Vector2>>()
                .Data.ShouldEqual(texCoords);
        }
Ejemplo n.º 2
0
        public GraphicStreamContainer Parse()
        {
            int triangleCount = Convert.ToInt32(
                mTriangleElement.Attribute("count").Value,
                CultureInfo.InvariantCulture);

            var allIndices = ParseUIntArray(mTriangleElement.Element(
                ColladaImporter.Namespace + "p"));
            var segmentLenght = allIndices.Count() / triangleCount / 3;

            var container = new GraphicStreamContainer();
            var indices = allIndices.EachNthElement(segmentLenght).ToArray();
            container.Create(GraphicStreamUsage.Index, indices);
            var vertexCount = (int)indices.Max() + 1;

            var inputs = ParseInputs();

            foreach (var input in inputs)
            {
                var usage = SemanticHelper.GetUsageForSemantic(input.Semantic);
                var data = new SourceParser(input.SourceElement).Parse();

                if (usage != GraphicStreamUsage.Position)
                {
                    var specificIndices = allIndices.EachNthElement(
                        segmentLenght, input.Offset).ToArray();

                    var newData = new float[vertexCount][];
                    for (int i = 0; i < indices.Length; i++)
                    {
                        var positionIndex = (int)indices[i];
                        newData[positionIndex] = data.ElementAt((int)specificIndices[i]);
                    }

                    data = newData;
                }

                var elementLength = data.First().Length;
                switch (elementLength)
                {
                    case 2:
                        container.Create(usage,
                            data.Select(element => new Vector2(element)).ToArray());
                        break;
                    case 3:
                        container.Create(usage,
                            data.Select(element => new Vector3(element)).ToArray());
                        break;
                    case 4:
                        container.Create(usage,
                            data.Select(element => new Vector4(element)).ToArray());
                        break;
                }
            }

            return container;
        }
        public void Add()
        {
            var container = new GraphicStreamContainer();
            Assert.IsNotNull(container);
            Assert.AreEqual(0, container.Count());

            container.Add(new Mock<IGraphicStream>().Object);

            Assert.AreEqual(1, container.Count());
        }
        public void GetEnumerator()
        {
            var container = new GraphicStreamContainer();

            var streams = new[] { new Mock<IGraphicStream>().Object, new Mock<IGraphicStream>().Object };

            container.Add(streams[0]);
            container.Add(streams[1]);

            var enumerator = (container as IEnumerable).GetEnumerator();

            Assert.IsNotNull(enumerator);
        }
        public void GetByUsage()
        {
            var container = new GraphicStreamContainer();

            var indices = new[] { 0, 1, 3 };
            container.Create(GraphicStreamUsage.Position, new[] { 1f, 2f, 3f });
            container.Create(GraphicStreamUsage.Index, indices);

            var stream = container.GetByUsage(GraphicStreamUsage.Index);

            Assert.IsNotNull(stream);
            Assert.AreEqual(GraphicStreamUsage.Index, stream.Description.Usage);
            Assert.AreElementsEqual(indices, stream.DowncastTo<GraphicStream<int>>().Data);
        }
        public void Create_Returns_Stream_And_Adds_Stream()
        {
            var container = new GraphicStreamContainer();

            var usage = GraphicStreamUsage.Normal;
            var data = new[] { 1f, 2f, 3f };
            var stream = container.Create(usage, data);

            Assert.IsNotNull(stream);
            Assert.AreEqual(usage, stream.Description.Usage);
            Assert.AreEqual(data, stream.Data);

            Assert.AreEqual(1, container.Count());
        }
        /// <summary>
        /// Loads the resources for this scene.
        /// </summary>
        public override void Load()
        {
            var container = new GraphicStreamContainer();
            var positions = container.Create(GraphicStreamUsage.Position, CreatePositions());
            var colors = container.Create(GraphicStreamUsage.Color, CreateColors());
            var indices = container.Create(GraphicStreamUsage.Index, CreateIndices());

            IBufferService bufferService = new OpenTKBufferService();

            var bufferBindings = new[]
            {
                bufferService.CreateFor(positions),
             //   bufferService.CreateFor(colors),
                bufferService.CreateFor(indices)
            };

            mRenderer = new OpenTKObjectRenderer(bufferBindings);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Loads the resources for this scene.
        /// </summary>
        public override void Load()
        {
            var container = new GraphicStreamContainer();
            var positions = container.Create(GraphicStreamUsage.Position, CreatePositions());
            var colors = container.Create(GraphicStreamUsage.Color, CreateColors());

            IBufferService bufferService = new SlimDXBufferService(RenderWindow.Device);

            var bufferBindings = new[]
            {
                bufferService.CreateFor(positions),
                bufferService.CreateFor(colors)
            };

            mEffect = new SlimDXEffectCompiler(RenderWindow.Device).Compile("MyShader10.fx");

            mRenderer = new SlimDXObjectRenderer(RenderWindow.Device,
                mEffect, bufferBindings);

            mWorldViewProjectionParameter = new SlimDXMatrixEffectParameter("WorldViewProjection");
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Loads the resources for this scene.
        /// </summary>
        public override void Load()
        {
            var container = new GraphicStreamContainer();
            var positions = container.Create(GraphicStreamUsage.Position, CreatePositions());
            var colors = container.Create(GraphicStreamUsage.Color, CreateColors());

            IBufferService bufferService = new XnaBufferService(RenderWindow.Device);

            var bufferBindings = new[]
            {
                bufferService.CreateFor(colors),
                bufferService.CreateFor(positions),
            };

            mEffect = new XnaEffectCompiler(RenderWindow.Device).Compile("MyShader.fx");
            mRenderer = new XnaObjectRenderer(RenderWindow.Device, mEffect, bufferBindings);

            mWorldViewProjectionParameter = new XnaMatrixEffectParameter("WorldViewProjection");

            mCamera = new Camera(new Stand(), new PerspectiveProjectionLense());
            mCamera.Stand.Position = new Vector3(0, 0, 3);

            SetupKeysAndActions();
        }
        public void GetEnumerator_gernic_version()
        {
            var container = new GraphicStreamContainer();

            var streams = new[] { new Mock<IGraphicStream>().Object, new Mock<IGraphicStream>().Object };

            container.Add(streams[0]);
            container.Add(streams[1]);

            Assert.AreElementsEqual(streams, container);
        }
        public void GetByUsage_returns_null_if_usage_is_not_found()
        {
            var container = new GraphicStreamContainer();

            Assert.IsNull(container.GetByUsage(GraphicStreamUsage.Normal));
        }
        public void Constructor()
        {
            var container = new GraphicStreamContainer();

            Assert.IsNotNull(container);
        }