port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,158 @@
using System;
using System.Collections.Generic;
namespace Aiwaz.Contracts
{
public struct VertexElement
{
public enum Format
{
Position,
PositionT,
Normal,
Binormal,
Tangent,
Color,
BlendWeight,
BlendIndices,
Texture2D,
Texture3D,
Texture4D,
PointSize
};
public VertexElement(Format argFormat)
: this(argFormat, 0)
{
}
public VertexElement(Format argFormat, int argNameIndex)
{
NameIndex = argNameIndex;
WellKnownFormat = argFormat;
switch (argFormat)
{
case Format.PositionT:
{
SemanticName = "POSITIONT";
ElementFormat = SlimDX.DXGI.Format.R32G32B32A32_Float;
Size = 4 * sizeof(float);
break;
}
case Format.Normal:
{
SemanticName = "NORMAL";
ElementFormat = SlimDX.DXGI.Format.R32G32B32_Float;
Size = 3 * sizeof(float);
break;
}
case Format.Binormal:
{
SemanticName = "BINORMAL";
ElementFormat = SlimDX.DXGI.Format.R32G32B32_Float;
Size = 3 * sizeof(float);
break;
}
case Format.Tangent:
{
SemanticName = "TANGENT";
ElementFormat = SlimDX.DXGI.Format.R32G32B32_Float;
Size = 3 * sizeof(float);
break;
}
case Format.Color:
{
SemanticName = "COLOR";
ElementFormat = SlimDX.DXGI.Format.R8G8B8A8_UNorm;
Size = 4 * sizeof(byte);
break;
}
case Format.BlendWeight:
{
SemanticName = "BLENDWEIGHT";
ElementFormat = SlimDX.DXGI.Format.R32G32B32A32_Float;
Size = 4 * sizeof(float);
break;
}
case Format.BlendIndices:
{
SemanticName = "BLENDINDICES";
ElementFormat = SlimDX.DXGI.Format.R32G32B32A32_SInt;
Size = 4 * sizeof(int);
break;
}
case Format.Texture2D:
{
SemanticName = "TEXCOORD";
ElementFormat = SlimDX.DXGI.Format.R32G32_Float;
Size = 2 * sizeof(float);
break;
}
case Format.Texture3D:
{
SemanticName = "TEXCOORD";
ElementFormat = SlimDX.DXGI.Format.R32G32B32_Float;
Size = 3 * sizeof(float);
break;
}
case Format.Texture4D:
{
SemanticName = "TEXCOORD";
ElementFormat = SlimDX.DXGI.Format.R32G32B32A32_Float;
Size = 4 * sizeof(float);
break;
}
case Format.PointSize:
{
SemanticName = "PSIZE";
ElementFormat = SlimDX.DXGI.Format.R32_Float;
Size = 1 * sizeof(float);
break;
}
case Format.Position:
default:
{
SemanticName = "POSITION";
ElementFormat = SlimDX.DXGI.Format.R32G32B32_Float;
Size = 3 * sizeof(float);
break;
}
}
}
public string SemanticName;
public SlimDX.DXGI.Format ElementFormat;
public Format WellKnownFormat;
public int NameIndex;
public int Size;
};
public interface IGeometryBuffer
{
void ConvertToAdjacency();
void DeleteIndexData();
void DeleteVertexData();
int IndexBufferLength { get; }
int IndexBufferOffset { get; set; }
int IndexBufferUsableLength { get; set; }
void SetIndexData(IEnumerable<uint> argIndexData, bool argNeedsDynamicAccess);
void SetIndexData(int argIndexCount, SlimDX.DataStream argIndexData, bool argNeedsDynamicAccess);
void SetVertexData<TVertex>(IEnumerable<TVertex> argVertexData, VertexElement[] argVertexElements, bool argNeedsDynamicAccess) where TVertex : struct;
void SetVertexData(int argVertexCount, SlimDX.DataStream argVertexData, VertexElement[] argVertexElements, bool argNeedsDynamicAccess);
SlimDX.DataStream MapIndexBufferRaw(SlimDX.Direct3D10.MapMode argAccessMode);
uint[] MapIndexBuffer(SlimDX.Direct3D10.MapMode argAccessMode);
SlimDX.DataStream MapVertexBufferRaw(SlimDX.Direct3D10.MapMode argAccessMode);
TVertex[] MapVertexBuffer<TVertex>(SlimDX.Direct3D10.MapMode argAccessMode) where TVertex : struct;
void UnmapIndexBuffer();
void UnmapVertexBuffer();
SlimDX.Direct3D10.PrimitiveTopology PrimitiveTopology { get; set; }
int VertexBufferLength { get; }
bool IsPickable { get; set; }
IPickHull PickHull { get; }
}
}