[font="Calibri"]
its slow right now it's taking 56ms a frame downfrom 420ms but still too high. [/font]
[font="Calibri"]I have attached the code to give you an idea of what I amdoing. Admittedly, I could use a smaller texture and lose the 1 to 1relationship but does anyone have another ideas?[/font]
Uploaded with ImageShack.us
[font="Times New Roman"]
tags seem broken??/?[/font]
what I do
[font="Times New Roman"][color="#0000ff"][color="#0000ff"]int xLength = myTexture2D.width;[/font][font="Times New Roman"] [color="#0000ff"][color="#0000ff"]int yCounter = 0;[/font][font="Times New Roman"] [color="#0000ff"][color="#0000ff"]int xCounter = 0;
[/font][font="Times New Roman"] [color="#0000ff"][color="#0000ff"]for ([color="#0000ff"][color="#0000ff"]int i = 0; i < colors.Length; ++i)
[/font][font="Times New Roman"] {
colors.a = 0.0F; [color="#008000"][color="#008000"]//clear
[/font][font="Times New Roman"] [color="#0000ff"][color="#0000ff"]if (i / (yCounter + 1) == xLength)
[/font][font="Times New Roman"] {
++yCounter;
xCounter = 0;
}
[color="#0000ff"][color="#0000ff"]else
[color="#0000ff"] [/font][font="Times New Roman"] {
++xCounter;
}
[color="#0000ff"][color="#0000ff"]for ([color="#0000ff"][color="#0000ff"]int i2 = 0; i2 < testArray.Length; ++i2)
[/font][font="Times New Roman"] {
[color="#008000"][color="#008000"]//float luminanceTest = ;//0.299F * colors.r + 0.587F * colors.g + 0.114F * colors.b;[/font][font="Times New Roman"] [color="#0000ff"][color="#0000ff"]if (colors.a < testArray[i2].Luminance)
[/font][font="Times New Roman"] {
[color="#0000ff"][color="#0000ff"]if (testArray[i2].MaxX >= xCounter && testArray[i2].MaxY >= yCounter && testArray[i2].MinX <= xCounter && testArray[i2].MinY <= yCounter)
{
[color="#2b91af"][color="#2b91af"]Vector2 testPos = [color="#0000ff"][color="#0000ff"]new [color="#2b91af"][color="#2b91af"]Vector2(xCounter, yCounter);
[color="#0000ff"][color="#0000ff"]if ((testPos - testArray[i2].Position).sqrMagnitude < ([color="#2b91af"][color="#2b91af"]Mathf.Pow(testArray[i2].Length, 2.0F)) &&
[color="#2b91af"][color="#2b91af"]Vector2.Angle(testArray[i2].ForwardDirection, (testPos - testArray[i2].Position).normalized) <= testArray[i2].ArcLengthDegrees)
[/font][font="Times New Roman"] {
colors.a = testArray[i2].Luminance;
}
}
}
}
}[/font]
and the data I use for each cone
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]struct [color="#2b91af"][color="#2b91af"]SightTestCase
[color="#2b91af"] {
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]float Length;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]float ArcLengthDegrees;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]int MinX;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]int MinY;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]int MaxX;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]int MaxY;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#2b91af"][color="#2b91af"]Color AreaColor;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#0000ff"][color="#0000ff"]float Luminance;
[color="#008000"][color="#008000"]//public readonly float GrayScale;
[color="#008000"] [color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#2b91af"][color="#2b91af"]Vector2 Position;
[color="#0000ff"][color="#0000ff"]public [color="#0000ff"][color="#0000ff"]readonly [color="#2b91af"][color="#2b91af"]Vector2 ForwardDirection;
[color="#0000ff"][color="#0000ff"]public SightTestCase([color="#2b91af"][color="#2b91af"]Vector2 position, [color="#2b91af"][color="#2b91af"]Vector2 forwardDirection, [color="#0000ff"][color="#0000ff"]int minX, [color="#0000ff"][color="#0000ff"]int minY, [color="#0000ff"][color="#0000ff"]int maxX, [color="#0000ff"][color="#0000ff"]int maxY, [color="#2b91af"][color="#2b91af"]Color myColor, [color="#0000ff"][color="#0000ff"]float length, [color="#0000ff"][color="#0000ff"]float arcLengthDegrees)
{
[color="#0000ff"][color="#0000ff"]this.Length = length;
[color="#0000ff"][color="#0000ff"]this.ArcLengthDegrees = arcLengthDegrees;
[color="#0000ff"][color="#0000ff"]this.MinX = minX;
[color="#0000ff"][color="#0000ff"]this.MinY = minY;
[color="#0000ff"][color="#0000ff"]this.MaxX = maxX;
[color="#0000ff"][color="#0000ff"]this.MaxY = maxY;
[color="#0000ff"][color="#0000ff"]this.AreaColor = myColor;
[color="#0000ff"][color="#0000ff"]this.Position = position;
[color="#0000ff"][color="#0000ff"]this.ForwardDirection = forwardDirection;
[color="#0000ff"][color="#0000ff"]this.Luminance = 0.299F * myColor.r + 0.587F * myColor.g + 0.114F * myColor.b - [color="#2b91af"][color="#2b91af"]LinearMath.Epsilon;
[color="#008000"][color="#008000"]//this.GrayScale = myColor.grayscale;
[color="#008000"] }
}