RenderPackage
using Autodesk.DesignScript.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Dynamo.DSEngine
{
public class RenderPackage : IRenderPackage, IDisposable
{
private IntPtr nativeRenderPackage;
private List<double> lineStripVertices = new List<double>();
private List<byte> lineStripVertexColors = new List<byte>();
private List<int> lineStripVertexCounts = new List<int>();
private List<double> pointVertices = new List<double>();
private List<byte> pointVertexColors = new List<byte>();
private List<double> triangleVertices = new List<double>();
private List<byte> triangleVertexColor = new List<byte>();
private List<double> triangleNormals = new List<double>();
public bool Selected { get; set; }
public bool DisplayLabels { get; set; }
public string Tag { get; set; }
public List<double> LineStripVertices {
get {
return lineStripVertices;
}
set {
lineStripVertices = value;
}
}
public List<double> PointVertices {
get {
return pointVertices;
}
set {
pointVertices = value;
}
}
public List<double> TriangleVertices {
get {
return triangleVertices;
}
set {
triangleVertices = value;
}
}
public List<double> TriangleNormals {
get {
return triangleNormals;
}
set {
triangleNormals = value;
}
}
public List<byte> LineStripVertexColors {
get {
return lineStripVertexColors;
}
set {
lineStripVertexColors = value;
}
}
public List<int> LineStripVertexCounts {
get {
return lineStripVertexCounts;
}
set {
lineStripVertexCounts = value;
}
}
public List<byte> PointVertexColors {
get {
return pointVertexColors;
}
set {
pointVertexColors = value;
}
}
public List<byte> TriangleVertexColors {
get {
return triangleVertexColor;
}
set {
triangleVertexColor = value;
}
}
public int ItemsCount { get; set; }
public IntPtr NativeRenderPackage => nativeRenderPackage;
public RenderPackage()
{
Tag = string.Empty;
ItemsCount = 0;
}
public RenderPackage(bool selected, bool displayLabels)
{
Selected = selected;
DisplayLabels = displayLabels;
Tag = string.Empty;
ItemsCount = 0;
}
public void Clear()
{
lineStripVertices.Clear();
lineStripVertexColors.Clear();
lineStripVertexCounts.Clear();
pointVertices.Clear();
pointVertexColors.Clear();
triangleVertices.Clear();
triangleVertexColor.Clear();
triangleNormals.Clear();
Tag = string.Empty;
ItemsCount = 0;
}
public void PushLineStripVertex(double x, double y, double z)
{
lineStripVertices.Add(x);
lineStripVertices.Add(y);
lineStripVertices.Add(z);
}
public void PushLineStripVertexColor(byte red, byte green, byte blue, byte alpha)
{
lineStripVertexColors.Add(red);
lineStripVertexColors.Add(green);
lineStripVertexColors.Add(blue);
lineStripVertexColors.Add(alpha);
}
public void PushLineStripVertexCount(int n)
{
lineStripVertexCounts.Add(n);
}
public void PushPointVertex(double x, double y, double z)
{
pointVertices.Add(x);
pointVertices.Add(y);
pointVertices.Add(z);
}
public void PushPointVertexColor(byte red, byte green, byte blue, byte alpha)
{
pointVertexColors.Add(red);
pointVertexColors.Add(green);
pointVertexColors.Add(blue);
pointVertexColors.Add(alpha);
}
public void PushTriangleVertex(double x, double y, double z)
{
triangleVertices.Add(x);
triangleVertices.Add(y);
triangleVertices.Add(z);
}
public void PushTriangleVertexColor(byte red, byte green, byte blue, byte alpha)
{
triangleVertexColor.Add(red);
triangleVertexColor.Add(green);
triangleVertexColor.Add(blue);
triangleVertexColor.Add(alpha);
}
public void PushTriangleVertexNormal(double x, double y, double z)
{
triangleNormals.Add(x);
triangleNormals.Add(y);
triangleNormals.Add(z);
}
public void Dispose()
{
}
public bool IsNotEmpty()
{
return lineStripVertices.Any() || pointVertices.Any() || triangleVertices.Any();
}
}
}