Show More
Commit Description:
Add basic infrastructure to store and display visitor count....
Commit Description:
Add basic infrastructure to store and display visitor count. May eventually move to simulating visitors as entities. We'll see.
File last commit:
Show/Diff file:
Action:
FNA/src/Content/ContentReaders/ArrayReader.cs
85 lines | 1.6 KiB | text/x-csharp | CSharpLexer
Early working version (including all dependencies, lol).
r0 #region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
Upgrade FNA to 22.12...
r690 * Copyright 2009-2022 Ethan Lee and the MonoGame Team
Early working version (including all dependencies, lol).
r0 *
* Released under the Microsoft Public License.
* See LICENSE for details.
*/
/* Derived from code by the Mono.Xna Team (Copyright 2006).
* Released under the MIT License. See monoxna.LICENSE for details.
*/
#endregion
#region Using Statements
using System;
#endregion
namespace Microsoft.Xna.Framework.Content
{
internal class ArrayReader<T> : ContentTypeReader<T[]>
{
#region Private ContentTypeReader Instance
ContentTypeReader elementReader;
#endregion
#region Public Constructor
public ArrayReader()
{
}
#endregion
#region Protected Initialization Method
protected internal override void Initialize(ContentTypeReaderManager manager)
{
Type readerType = typeof(T);
elementReader = manager.GetTypeReader(readerType);
}
#endregion
#region Protected Read Method
protected internal override T[] Read(ContentReader input, T[] existingInstance)
{
uint count = input.ReadUInt32();
T[] array = existingInstance;
if (array == null)
{
array = new T[count];
}
if (typeof(T).IsValueType)
{
for (uint i = 0; i < count; i += 1)
{
array[i] = input.ReadObject<T>(elementReader);
}
}
else
{
for (uint i = 0; i < count; i += 1)
{
int readerType = input.Read7BitEncodedInt();
if (readerType > 0)
{
array[i] = input.ReadObject<T>(
input.TypeReaders[readerType - 1]
);
}
else {
array[i] = default(T);
}
}
}
return array;
}
#endregion
}
}