Show More
Commit Description:
Tidy code.
Commit Description:
Tidy code.
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/Effect/EffectAnnotation.cs
185 lines | 2.8 KiB | text/x-csharp | CSharpLexer
#region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
* Copyright 2009-2020 Ethan Lee and the MonoGame Team
*
* Released under the Microsoft Public License.
* See LICENSE for details.
*/
#endregion
#region Using Statements
using System;
#endregion
namespace Microsoft.Xna.Framework.Graphics
{
public sealed class EffectAnnotation
{
#region Public Properties
public string Name
{
get;
private set;
}
public string Semantic
{
get;
private set;
}
public int RowCount
{
get;
private set;
}
public int ColumnCount
{
get;
private set;
}
public EffectParameterClass ParameterClass
{
get;
private set;
}
public EffectParameterType ParameterType
{
get;
private set;
}
#endregion
#region Private Variables
IntPtr values;
#endregion
#region Internal Constructor
internal EffectAnnotation(
string name,
string semantic,
int rowCount,
int columnCount,
EffectParameterClass parameterClass,
EffectParameterType parameterType,
IntPtr data
) {
Name = name;
Semantic = semantic ?? string.Empty;
RowCount = rowCount;
ColumnCount = columnCount;
ParameterClass = parameterClass;
ParameterType = parameterType;
values = data;
}
#endregion
#region Public Methods
public bool GetValueBoolean()
{
unsafe
{
// Values are always 4 bytes, so we get to do this. -flibit
int* resPtr = (int*) values;
return *resPtr != 0;
}
}
public int GetValueInt32()
{
unsafe
{
int* resPtr = (int*) values;
return *resPtr;
}
}
public Matrix GetValueMatrix()
{
unsafe
{
float* resPtr = (float*) values;
return new Matrix(
resPtr[0],
resPtr[4],
resPtr[8],
resPtr[12],
resPtr[1],
resPtr[5],
resPtr[9],
resPtr[13],
resPtr[2],
resPtr[6],
resPtr[10],
resPtr[14],
resPtr[3],
resPtr[7],
resPtr[11],
resPtr[15]
);
}
}
public float GetValueSingle()
{
unsafe
{
float* resPtr = (float*) values;
return *resPtr;
}
}
public string GetValueString()
{
/* FIXME: This requires digging into the effect->objects list.
* We've got the data, we just need to hook it up to FNA.
* -flibit
*/
throw new NotImplementedException("effect->objects[?]");
}
public Vector2 GetValueVector2()
{
unsafe
{
float* resPtr = (float*) values;
return new Vector2(resPtr[0], resPtr[1]);
}
}
public Vector3 GetValueVector3()
{
unsafe
{
float* resPtr = (float*) values;
return new Vector3(resPtr[0], resPtr[1], resPtr[2]);
}
}
public Vector4 GetValueVector4()
{
unsafe
{
float* resPtr = (float*) values;
return new Vector4(
resPtr[0],
resPtr[1],
resPtr[2],
resPtr[3]
);
}
}
#endregion
}
}