Esempio n. 1
0
 protected void InitMeshBuffers()
 {
     if (meshBuffers != null)
     {
         meshBuffers.GetNext().Clear();
         meshBuffers.GetNext().Clear();
     }
     else
     {
         meshBuffers = new DoubleBuffered <MeshRendererBuffers.SmartMesh>();
     }
 }
        public void UpdateMesh()
        {
            if (!this.IsValid)
            {
                return;
            }

            skeleton.SetColor(this.color);
            var smartMesh           = meshBuffers.GetNext();
            var currentInstructions = this.currentInstructions;

            MeshGenerator.GenerateSingleSubmeshInstruction(currentInstructions, skeleton, null);
            bool updateTriangles = SkeletonRendererInstruction.GeometryNotEqual(currentInstructions, smartMesh.instructionUsed);

            meshGenerator.Begin();
            if (currentInstructions.hasActiveClipping)
            {
                meshGenerator.AddSubmesh(currentInstructions.submeshInstructions.Items[0], updateTriangles);
            }
            else
            {
                meshGenerator.BuildMeshWithArrays(currentInstructions, updateTriangles);
            }

            if (canvas != null)
            {
                meshGenerator.ScaleVertexData(canvas.referencePixelsPerUnit);
            }
            if (OnPostProcessVertices != null)
            {
                OnPostProcessVertices.Invoke(this.meshGenerator.Buffers);
            }

            var mesh = smartMesh.mesh;

            meshGenerator.FillVertexData(mesh);
            if (updateTriangles)
            {
                meshGenerator.FillTriangles(mesh);
            }
            meshGenerator.FillLateVertexData(mesh);

            canvasRenderer.SetMesh(mesh);
            smartMesh.instructionUsed.Set(currentInstructions);

            if (currentInstructions.submeshInstructions.Count > 0)
            {
                var material = currentInstructions.submeshInstructions.Items[0].material;
                if (material != null && baseTexture != material.mainTexture)
                {
                    baseTexture = material.mainTexture;
                    if (overrideTexture == null)
                    {
                        canvasRenderer.SetTexture(this.mainTexture);
                    }
                }
            }

            //this.UpdateMaterial(); // TODO: This allocates memory.
        }
Esempio n. 3
0
        public void UpdateMesh()
        {
            if (!this.IsValid)
            {
                return;
            }

            skeleton.SetColor(this.color);
            var smartMesh           = meshBuffers.GetNext();
            var currentInstructions = this.currentInstructions;

            MeshGenerator.GenerateSingleSubmeshInstruction(currentInstructions, skeleton, this.material);
            bool updateTriangles = SkeletonRendererInstruction.GeometryNotEqual(currentInstructions, smartMesh.instructionUsed);

            meshGenerator.Begin();
            if (currentInstructions.hasActiveClipping)
            {
                meshGenerator.AddSubmesh(currentInstructions.submeshInstructions.Items[0], updateTriangles);
            }
            else
            {
                meshGenerator.BuildMeshWithArrays(currentInstructions, updateTriangles);
            }

            if (canvas != null)
            {
                meshGenerator.ScaleVertexData(canvas.referencePixelsPerUnit);
            }

            var mesh = smartMesh.mesh;

            meshGenerator.FillVertexData(mesh);
            if (updateTriangles)
            {
                meshGenerator.FillTrianglesSingle(mesh);
            }

            canvasRenderer.SetMesh(mesh);
            smartMesh.instructionUsed.Set(currentInstructions);

            //this.UpdateMaterial(); // TODO: This allocates memory.
        }
Esempio n. 4
0
 public void UpdateMesh()
 {
     if (IsValid)
     {
         skeleton.SetColor(color);
         MeshRendererBuffers.SmartMesh next = meshBuffers.GetNext();
         SkeletonRendererInstruction   skeletonRendererInstruction = currentInstructions;
         MeshGenerator.GenerateSingleSubmeshInstruction(skeletonRendererInstruction, skeleton, material);
         bool flag = SkeletonRendererInstruction.GeometryNotEqual(skeletonRendererInstruction, next.instructionUsed);
         meshGenerator.Begin();
         if (skeletonRendererInstruction.hasActiveClipping)
         {
             meshGenerator.AddSubmesh(skeletonRendererInstruction.submeshInstructions.Items[0], flag);
         }
         else
         {
             meshGenerator.BuildMeshWithArrays(skeletonRendererInstruction, flag);
         }
         if (base.canvas != null)
         {
             meshGenerator.ScaleVertexData(base.canvas.referencePixelsPerUnit);
         }
         if (this.OnPostProcessVertices != null)
         {
             this.OnPostProcessVertices(meshGenerator.Buffers);
         }
         Mesh mesh = next.mesh;
         meshGenerator.FillVertexData(mesh);
         if (flag)
         {
             meshGenerator.FillTrianglesSingle(mesh);
         }
         base.canvasRenderer.SetMesh(mesh);
         next.instructionUsed.Set(skeletonRendererInstruction);
     }
 }
Esempio n. 5
0
 public SmartMesh GetNextMesh()
 {
     return(doubleBufferedMesh.GetNext());
 }