Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <param name="data">
        /// </param>
        /// <param name="updatable">
        /// </param>
        public virtual void setVerticesData(VertexBufferKind kind, Array <double> data, bool updatable = false)
        {
            this._vertexBuffers = this._vertexBuffers ?? new Map <VertexBufferKind, VertexBuffer>();
            if (this._vertexBuffers.ContainsKey(kind))
            {
                this._vertexBuffers[kind].dispose();
            }

            this._vertexBuffers[kind] = new VertexBuffer(this._engine, data, kind, updatable, this._meshes.Length == 0);
            if (kind == VertexBufferKind.PositionKind)
            {
                var stride = this._vertexBuffers[kind].getStrideSize();
                this._totalVertices = data.Length / stride;
                var extend      = Tools.ExtractMinAndMax(data, 0, this._totalVertices);
                var meshes      = this._meshes;
                var numOfMeshes = meshes.Length;
                for (var index = 0; index < numOfMeshes; index++)
                {
                    var mesh = meshes[index];
                    mesh._resetPointsArrayCache();
                    mesh._boundingInfo = new BoundingInfo(extend.minimum, extend.maximum);
                    mesh._createGlobalSubMesh();
                    mesh.computeWorldMatrix(true);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <param name="data">
        /// </param>
        /// <param name="updateExtends">
        /// </param>
        /// <param name="makeItUnique">
        /// </param>
        public virtual void updateVerticesData(VertexBufferKind kind, Array <double> data, bool updateExtends = false, bool makeItUnique = false)
        {
            var vertexBuffer = this.getVertexBuffer(kind);

            if (vertexBuffer == null)
            {
                return;
            }

            vertexBuffer.update(data);
            if (kind == VertexBufferKind.PositionKind)
            {
                MinMax extend = null;
                if (updateExtends)
                {
                    var stride = vertexBuffer.getStrideSize();
                    this._totalVertices = data.Length / stride;
                    extend = Tools.ExtractMinAndMax(data, 0, this._totalVertices);
                }

                var meshes      = this._meshes;
                var numOfMeshes = meshes.Length;
                for (var index = 0; index < numOfMeshes; index++)
                {
                    var mesh = meshes[index];
                    mesh._resetPointsArrayCache();
                    if (updateExtends)
                    {
                        mesh._boundingInfo = new BoundingInfo(extend.minimum, extend.maximum);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// </summary>
        /// <param name="data">
        /// </param>
        /// <param name="kind">
        /// </param>
        public virtual void set(Array <double> data, VertexBufferKind kind)
        {
            switch (kind)
            {
            case VertexBufferKind.PositionKind:
                this.positions = data;
                break;

            case VertexBufferKind.NormalKind:
                this.normals = data;
                break;

            case VertexBufferKind.UVKind:
                this.uvs = data;
                break;

            case VertexBufferKind.UV2Kind:
                this.uv2s = data;
                break;

            case VertexBufferKind.ColorKind:
                this.colors = data;
                break;

            case VertexBufferKind.MatricesIndicesKind:
                this.matricesIndices = data;
                break;

            case VertexBufferKind.MatricesWeightsKind:
                this.matricesWeights = data;
                break;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public virtual VertexBuffer getVertexBuffer(VertexBufferKind kind)
        {
            if (!this.isReady())
            {
                return(null);
            }

            return(this._vertexBuffers[kind]);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public override Array <double> getVerticesData(VertexBufferKind kind)
        {
            if (this._geometry == null)
            {
                return(null);
            }

            return(this._geometry.getVerticesData(kind));
        }
Ejemplo n.º 6
0
                public override void setVerticesData(VertexBufferKind kind, Array <double> data, bool updatable = false)
                {
                    if (!this._beingRegenerated)
                    {
                        return;
                    }

                    base.setVerticesData(kind, data, updatable);
                }
Ejemplo n.º 7
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public virtual VertexBuffer getVertexBuffer(VertexBufferKind kind)
        {
            if (this._geometry == null)
            {
                return(null);
            }

            return(this._geometry.getVertexBuffer(kind));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public virtual Array <double> getVerticesData(VertexBufferKind kind)
        {
            var vertexBuffer = this.getVertexBuffer(kind);

            if (vertexBuffer == null)
            {
                return(null);
            }

            return(vertexBuffer.getData());
        }
Ejemplo n.º 9
0
 /// <summary>
 /// </summary>
 /// <param name="kind">
 /// </param>
 /// <param name="data">
 /// </param>
 /// <param name="updatable">
 /// </param>
 public virtual void setVerticesData(VertexBufferKind kind, Array <double> data, bool updatable = false)
 {
     if (this._geometry == null)
     {
         var vertexData = new VertexData();
         vertexData.set(data, kind);
         var scene = this.getScene();
         new Geometry(Geometry.RandomId(), scene, vertexData, updatable, this);
     }
     else
     {
         this._geometry.setVerticesData(kind, data, updatable);
     }
 }
Ejemplo n.º 10
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public override bool isVerticesDataPresent(VertexBufferKind kind)
        {
            if (this._geometry == null)
            {
                if (this._delayInfo != null)
                {
                    return(this._delayInfo.IndexOf(kind) != -1);
                }

                return(false);
            }

            return(this._geometry.isVerticesDataPresent(kind));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <returns>
        /// </returns>
        public virtual bool isVerticesDataPresent(VertexBufferKind kind)
        {
            if (this._vertexBuffers == null)
            {
                if (this._delayInfo != null)
                {
                    return(this._delayInfo.IndexOf(kind) != -1);
                }

                return(false);
            }

            return(this._vertexBuffers[kind] != null);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// </summary>
        /// <param name="kind">
        /// </param>
        /// <param name="data">
        /// </param>
        /// <param name="updateExtends">
        /// </param>
        /// <param name="makeItUnique">
        /// </param>
        public virtual void updateVerticesData(VertexBufferKind kind, Array <double> data, bool updateExtends = false, bool makeItUnique = false)
        {
            if (this._geometry == null)
            {
                return;
            }

            if (!makeItUnique)
            {
                this._geometry.updateVerticesData(kind, data, updateExtends);
            }
            else
            {
                this.makeGeometryUnique();
                this.updateVerticesData(kind, data, updateExtends, false);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// </summary>
        /// <param name="engine">
        /// </param>
        /// <param name="data">
        /// </param>
        /// <param name="kind">
        /// </param>
        /// <param name="updatable">
        /// </param>
        /// <param name="postponeInternalCreation">
        /// </param>
        public VertexBuffer(Engine engine, Array <double> data, VertexBufferKind kind, bool updatable, bool postponeInternalCreation = false)
        {
            this._engine    = engine;
            this._updatable = updatable;
            this._data      = data;
            if (!postponeInternalCreation)
            {
                this.create();
            }

            this._kind = kind;
            switch (kind)
            {
            case VertexBufferKind.PositionKind:
                this._strideSize = 3;
                break;

            case VertexBufferKind.NormalKind:
                this._strideSize = 3;
                break;

            case VertexBufferKind.UVKind:
                this._strideSize = 2;
                break;

            case VertexBufferKind.UV2Kind:
                this._strideSize = 2;
                break;

            case VertexBufferKind.ColorKind:
                this._strideSize = 3;
                break;

            case VertexBufferKind.MatricesIndicesKind:
                this._strideSize = 4;
                break;

            case VertexBufferKind.MatricesWeightsKind:
                this._strideSize = 4;
                break;
            }
        }
Ejemplo n.º 14
0
 /// <summary>
 /// </summary>
 /// <param name="kind">
 /// </param>
 /// <returns>
 /// </returns>
 public virtual Array <double> getVerticesData(VertexBufferKind kind)
 {
     return(null);
 }
Ejemplo n.º 15
0
 /// <summary>
 /// </summary>
 /// <param name="kind">
 /// </param>
 /// <returns>
 /// </returns>
 public virtual bool isVerticesDataPresent(VertexBufferKind kind)
 {
     return(false);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// </summary>
 /// <param name="kind">
 /// </param>
 /// <returns>
 /// </returns>
 public override bool isVerticesDataPresent(VertexBufferKind kind)
 {
     return(this._sourceMesh.isVerticesDataPresent(kind));
 }
Ejemplo n.º 17
0
 /// <summary>
 /// </summary>
 /// <param name="kind">
 /// </param>
 /// <returns>
 /// </returns>
 public override Array <double> getVerticesData(VertexBufferKind kind)
 {
     return(this._sourceMesh.getVerticesData(kind));
 }