Ejemplo n.º 1
0
        public void Dump(string indent, IndentTextWriter writer)
        {
            writer.WriteLine(indent + "UpdateBlock: " + EntityId + " (FieldCount: " + UpdateCount + ")");

            writer.IndentLevel++;

            writer.WriteLine(indent + "Type: " + Type);
            if (m_movement != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "Movement:");
                m_movement.Dump(indent + "\t", writer);
            }
            writer.WriteLine();

            if (EntityIds != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "EntityIds:");
                foreach (var id in EntityIds)
                {
                    writer.WriteLine(indent + "\t" + id);
                }
            }

            if (Values != null)
            {
                writer.WriteLine(indent + "Fields:");
                var renderer = FieldRenderUtil.GetRenderer(EntityId.ObjectType);
                // use the exact if its available
                if (m_movement != null)
                {
                    renderer = FieldRenderUtil.GetRenderer(m_movement.ObjectTypeId);                     //
                }

                writer.IndentLevel++;
                uint size = 0;
                for (uint i = 0; i < SetIndices.Length; i++)
                {
                    var index = SetIndices[i];
                    size = renderer.Render(index, Values, writer);
                    while (size > 1 && SetIndices.Length > i + 1)
                    {
                        // check if we can skip the next indices
                        var next = SetIndices[i + 1];
                        if (next != index + 4)
                        {
                            break;
                        }

                        size--;
                        i++;
                    }
                }
                writer.IndentLevel--;
            }
            writer.WriteLine();

            writer.IndentLevel--;
        }