Korzystam z czyjegoś kodu źródłowego hydrodynamiki cząstek otwartych .NET 4 o otwartym kodzie źródłowym i próbuję przekonwertować go na projekt Unity, na który można tylko liczyć, aby być .NET 2 standardy. Niestety kod używa klasy Parallels (co jest niesamowite!), Ale użył jednego z bardziej niejasnych przeciążeń. Czy każdy może zobaczyć dobry sposób na osiągnięcie tego samego w .NET 2 bez ogromnego uderzenia wydajności?Konwertowanie .NET 4 Gwintowanie do .NET 2
Parallel.For(
0,
_numActiveParticles,
() => new Vector2[MAX_PARTICLES],
(i, state, accumulatedDelta) => calculateForce(_activeParticles[i], accumulatedDelta),
(accumulatedDelta) =>
{
lock (_calculateForcesLock)
{
for (int i = _numActiveParticles - 1; i >= 0; i--)
{
int index = _activeParticles[i];
_delta[index] += accumulatedDelta[index]/MULTIPLIER;
}
}
}
);
myślę to co robi kod (bez gwintowanych):
for (int i = 0; i < _numActiveParticles; i++)
{
Vector2[] temp = new Vector2[MAX_PARTICLES];
temp = calculateForce(_activeParticles[i], temp);
for (int k = _numActiveParticles - 1; k >= 0; k--)
{
int index = _activeParticles[k];
_delta[index] += temp[index]/MULTIPLIER;
}
}
Może się okazać się pomocne http://stackoverflow.com/q/12386686/809009 –
@OndrejJanacek Thanks to pomocne, ale nie jestem też w 100% pewna, co robi wersja Parallels, więc chcę się upewnić, że poprawnie ją przetłumaczę. – PorcupineRending
Nie sądzę, że twoje zrozumienie jest właściwe. W ogóle nie używasz zmiennej "temp". Przeczytaj to: http://msdn.microsoft.com/en-us/library/ff963547.aspx –