15720


//----------------------------------------------------------------------------

static const hh_u32 _PageBatchSize = 4;

//----------------------------------------------------------------------------

class CParticleTask_BuildVBPositions : public CAsynchronousJob
{
protected:
TAtomic<hh_u32> *m_DoneCount;
CParticlePage *m_Pages[_PageBatchSize];
hh_u32 m_PagesCount;
TStridedMemoryView<CFloat3, sizeof(CFloat4)> m_DstPos;
/*const*/ CScreenBillboarderQuad *m_Billboarder;
CGuid m_PositionId;
CGuid m_SizeId;
CGuid m_RotationId;
const CFloat4x4 *m_BillboardingMatrix;

virtual bool _VirtualLaunch(SWorkerThreadContext &threadContext) override
{
for (hh_u32 p = 0; p < m_PagesCount; p++)
{
CParticlePage *pp = m_Pages[p];
HH_ASSERT(pp != null);

TStridedMemoryView<const CFloat3> attribPos = pp->StreamForReading<CFloat3>(m_PositionId);

if (g_RenderMode != RenderMode_Point)
{
// billboards
TStridedMemoryView<const float> attribSize = pp->StreamForReading<float>(m_SizeId);
TMemoryView<const float> attribRotation = m_RotationId.Valid() ? pp->StreamForReading<float>(m_RotationId).ToMemoryViewIFP() : TMemoryView<const float>();

HH_ASSERT(!attribPos.Empty());
HH_ASSERT(attribSize.Count() == attribPos.Count());
HH_ASSERT(attribRotation.Empty() || attribRotation.Count() == attribPos.Count());

CBillboarder:sorryAlignmentContext bbContext;

bbContext.m_OutPositions = m_DstPos.MakeSubView(0, attribPos.Count() * m_Billboarder->BillboardVertexCount());
bbContext.m_Centers = attribPos;
bbContext.m_Rads = attribSize;
bbContext.m_Rotations = attribRotation;

m_Billboarder->Align(*m_BillboardingMatrix, bbContext);
m_DstPos += pp->ParticleCount() * m_Billboarder->BillboardVertexCount();
}
else
{
// points

// copy the positions inside the target vertex buffer:
if (attribPos.Stride() == 0x10 && Mem::IsAligned<0x10>(attribPos.Data())) // optimized case, when the source stream is SIMD-friendly
{
static const hh_u32 parallelReduce = 4;
// hh_u32 parallelCount = attribPos.Count() / parallelReduce;
hh_u32 serialCount = attribPos.Count() % parallelReduce;
const hh_u8 * /*HH_RESTRICT*/ src = reinterpret_cast<const hh_u8*>(attribPos.Data()); // stupid VC2010 interleaves load/stores when __restrict is used.. god dammit
hh_u8 * /*HH_RESTRICT*/ dst = reinterpret_cast<hh_u8*>(m_DstPos.Data());

const hh_u8 *srcStop = src + attribPos.Count() * 0x10;
src += parallelReduce * 0x10;
while (src <= srcStop)
{
SIMD::Float4 v0 = SIMD::Float4::LoadAligned16(src + 0x00 - parallelReduce * 0x10);
SIMD::Float4 v1 = SIMD::Float4::LoadAligned16(src + 0x10 - parallelReduce * 0x10);
SIMD::Float4 v2 = SIMD::Float4::LoadAligned16(src + 0x20 - parallelReduce * 0x10);
SIMD::Float4 v3 = SIMD::Float4::LoadAligned16(src + 0x30 - parallelReduce * 0x10);

HH_STATIC_ASSERT(kVertexDynamicSizeInBytesP >= sizeof(CFloat4));

v0.StoreAligned16(dst + 0 * kVertexDynamicSizeInBytesP);
v1.StoreAligned16(dst + 1 * kVertexDynamicSizeInBytesP);
v2.StoreAligned16(dst + 2 * kVertexDynamicSizeInBytesP);
v3.StoreAligned16(dst + 3 * kVertexDynamicSizeInBytesP);

src += parallelReduce * 0x10;
dst += parallelReduce * kVertexDynamicSizeInBytesP;
}

while (serialCount-- != 0)
{
SIMD::Float4 v = SIMD::Float4::LoadAligned16(src - parallelReduce * 0x10);
v.StoreAligned16(dst);
src += 0x10;
dst += kVertexDynamicSizeInBytesP;
}
}
else // generic version
{
for (hh_u32 i = 0; i < attribPos.Count(); i++)
{
m_DstPos[i] = attribPos[i];
}
}
m_DstPos += pp->ParticleCount();
}
}
++(*m_DoneCount);
return true;
}

public:
CParticleTask_BuildVBPositions(TAtomic<hh_u32> *doneCount, CParticlePage *(&pages)[_PageBatchSize], hh_u32 pageCount, const TStridedMemoryView<CFloat3, sizeof(CFloat4)> &dstPos, /*const*/ CScreenBillboarderQuad &billboarder, CGuid positionId, CGuid sizeId, CGuid rotationId, const CFloat4x4 &billboardingMatrix)
: m_DoneCount(doneCount)
, m_PagesCount(pageCount)
, m_DstPos(dstPos)
, m_Billboarder(&billboarder)
, m_PositionId(positionId)
, m_SizeId(sizeId)
, m_RotationId(rotationId)
, m_BillboardingMatrix(&billboardingMatrix)
{
for (hh_u32 i = 0; i < _PageBatchSize; i++)
{
m_Pages[i] = pages[i];
}
}
~CParticleTask_BuildVBPositions()
{
}
};
HH_DECLARE_REFPTRCLASS(ParticleTask_BuildVBPositions);

//----------------------------------------------------------------------------

class CParticleTask_BuildVBColors : public CAsynchronousJob
{
protected:
TAtomic<hh_u32> *m_DoneCount;
CParticlePage *m_Pages[_PageBatchSize];
hh_u32 m_PagesCount;
TStridedMemoryView<CFloat4> m_DstCol;
CGuid m_ColorId;

static HH_ALIGN(0x10) CFloat4 m_ColWhiteA16;

virtual bool _VirtualLaunch(SWorkerThreadContext &threadContext) override
{
for (hh_u32 p = 0; p < m_PagesCount; p++)
{
CParticlePage *pp = m_Pages[p];
HH_ASSERT(pp != null);

TStridedMemoryView<const CFloat4> attribCol = m_ColorId.Valid() ? pp->StreamForReading<CFloat4>(m_ColorId) : TStridedMemoryView<const CFloat4>(&m_ColWhiteA16, pp->ParticleCount(), 0);

const CFloat4 * HH_RESTRICT col = attribCol.Data();
hh_u8 * HH_RESTRICT dst = reinterpret_cast<hh_u8*>(m_DstCol.Data());
hh_u8 * HH_RESTRICT stop = dst + attribCol.Count() * 4 * kVertexDynamicSizeInBytesC; // not really necessary to __restrict that one

// fill colors:
if (attribCol.Stride() == 0x10)
{
while (dst + 2 * 4 * kVertexDynamicSizeInBytesC <= stop)
{
SIMD::Float4 rgba32f_0 = SIMD::Float4::LoadAligned16(col, 0x00);
SIMD::Float4 rgba32f_1 = SIMD::Float4::LoadAligned16(col, 0x10);
SIMD::Float4 bgra32f_0 = rgba32f_0.Swizzle<2,1,0,3>();
SIMD::Float4 bgra32f_1 = rgba32f_1.Swizzle<2,1,0,3>();

SIMD::Float4 color_0 = SIMD::Converters::Float_0_1::Ubyte_x4_Broadcasted(bgra32f_0);
SIMD::Float4 color_1 = SIMD::Converters::Float_0_1::Ubyte_x4_Broadcasted(bgra32f_1);

color_0.StoreAligned16(dst, 0x00);
color_1.StoreAligned16(dst, 0x10);

dst += 2 * 4 * kVertexDynamicSizeInBytesC;
col += 2;
}
while (dst < stop)
{
SIMD::Float4 rgba32f = SIMD::Float4::LoadAligned16(col);
SIMD::Float4 bgra32f = rgba32f.Swizzle<2,1,0,3>();

SIMD::Float4 color = SIMD::Converters::Float_0_1::Ubyte_x4_Broadcasted(bgra32f);
color.StoreAligned16(dst);

dst += 1 * 4 * kVertexDynamicSizeInBytesC;
col += 1;
}
}
else
{
HH_ASSERT(attribCol.Stride() == 0);

SIMD::Float4 rgba32f = SIMD::Float4::LoadAligned16(attribCol.Data());
SIMD::Float4 bgra32f = rgba32f.Swizzle<2,1,0,3>();
SIMD::Float4 colorX4 = SIMD::Converters::Float_0_1::Ubyte_x4_Broadcasted(bgra32f);

while (dst < stop)
{
colorX4.StoreAligned16(dst);
dst += 4 * kVertexDynamicSizeInBytesC;
}
}
m_DstCol += pp->ParticleCount() * 4; // hardcoded: 4 vertices per particle
}
++(*m_DoneCount);
return true;
}

public:
CParticleTask_BuildVBColors(TAtomic<hh_u32> *doneCount, CParticlePage *(&pages)[_PageBatchSize], hh_u32 pageCount, const TStridedMemoryView<CFloat4> &dstCol, CGuid colorId)
: m_DoneCount(doneCount)
, m_PagesCount(pageCount)
, m_DstCol(dstCol)
, m_ColorId(colorId)
{
for (hh_u32 i = 0; i < _PageBatchSize; i++)
{
m_Pages[i] = pages[i];
}
}
~CParticleTask_BuildVBColors()
{
}
};
HH_DECLARE_REFPTRCLASS(ParticleTask_BuildVBColors);

HH_ALIGN(0x10) CFloat4 CParticleTask_BuildVBColors::m_ColWhiteA16 = CFloat4(1.0f);

//----------------------------------------------------------------------------

class CParticleTask_BuildVBTexcoords : public CAsynchronousJob
{
protected:
TAtomic<hh_u32> *m_DoneCount;
CParticlePage *m_Pages[_PageBatchSize];
hh_u32 m_PagesCount;
TStridedMemoryView<CFloat2> m_DstTex;
/*const*/ CScreenBillboarderQuad *m_Billboarder;
CGuid m_TextureId;
TMemoryView<const TRectangleMapper<float>::TCorners> m_RectangleMapperF32;
TMemoryView<const CGuid> m_RectangleMapperIDs;

virtual bool _VirtualLaunch(SWorkerThreadContext &threadContext) override
{
if (g_RenderMode == RenderMode_BillboardTextured)
{
for (hh_u32 p = 0; p < m_PagesCount; p++)
{
CParticlePage *pp = m_Pages[p];
HH_ASSERT(pp != null);

TStridedMemoryView<const float> attribTexId = pp->StreamForReading<float>(m_TextureId);
if (!attribTexId.Empty())
{
bool hasAtlas = true;
if (!hasAtlas)
{
m_Billboarder->FillTexcoords(m_DstTex);
}
else
{
HH_ASSERT(!m_RectangleMapperF32.Empty());
TRectangleMapper<float> mapper(m_RectangleMapperF32, m_RectangleMapperIDs);

// FIXME: make 'TextureID' an integer stream, and patch the necessary particle scripts in the resource directories ?
m_Billboarder->FillTexcoordsFromAtlas(m_DstTex, attribTexId, mapper);
}
}

m_DstTex += pp->ParticleCount() * m_Billboarder->BillboardVertexCount();
}
}
++(*m_DoneCount);
return true;
}

public:
CParticleTask_BuildVBTexcoords(TAtomic<hh_u32> *doneCount, CParticlePage *(&pages)[_PageBatchSize], hh_u32 pageCount, const TStridedMemoryView<CFloat2> &dstTex, /*const*/ CScreenBillboarderQuad &billboarder, CGuid textureId, const TMemoryView<const TRectangleMapper<float>::TCorners> &rectangleMapperF32, const TMemoryView<const CGuid> &rectangleMapperIDs)
: m_DoneCount(doneCount)
, m_PagesCount(pageCount)
, m_DstTex(dstTex)
, m_Billboarder(&billboarder)
, m_TextureId(textureId)
, m_RectangleMapperF32(rectangleMapperF32)
, m_RectangleMapperIDs(rectangleMapperIDs)
{
for (hh_u32 i = 0; i < _PageBatchSize; i++)
{
m_Pages[i] = pages[i];
}
}
~CParticleTask_BuildVBTexcoords()
{
}
};
HH_DECLARE_REFPTRCLASS(ParticleTask_BuildVBTexcoords);
avatar
HURRRR !

15721

avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15722

15723

@@ -453,8 +474,14 @@ inline void Battleground::_ProcessJoin(uint32 diff) sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType()); plr->GetSession()->SendPacket(&status); - plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); + plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); // TODO: Add minions support + // Remove preparation from the pet, if any. + if (Pet* playerPet = plr->GetPet()) + playerPet->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); + plr->ResetAllPowers(); + plr->RemoveAllSpellCooldown(); // Also reset CDs. + // remove auras with duration lower than 30s Unit::AuraApplicationMap & auraMap = plr->GetAppliedAuras(); for (Unit::AuraApplicationMap::iterator iter = auraMap.begin(); iter != auraMap.end();) @@ -1101,6 +1128,9 @@ void Battleground::AddPlayer(Player* plr) { plr->CastSpell(plr, SPELL_ARENA_PREPARATION, true); plr->ResetAllPowers(); + // Also cast this on the pet ... We have to remove it manually + if (Pet* playerPet = plr->GetPet()) + playerPet->CastSpell(playerPet, SPELL_ARENA_PREPARATION, true); } WorldPacket teammate; teammate.Initialize(SMSG_ARENA_OPPONENT_UPDATE, 8);

15724

.HGBDHDBD
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15725

function dbc2array($filename, $format) { $f = fopen($filename, "rb") or die("Cannot open file " . $filename . "\n"); $filesize = filesize($filename); if ($filesize < 20) die("File " . $filename . " is too small for a DBC file\n"); if (fread($f, 4) != "WDBC") die("File " . $filename . " has incorrect magic bytes\n"); $header = unpack("VrecordCount/VfieldCount/VrecordSize/VstringSize", fread($f, 16)); // Different debug checks to be sure, that file was opened correctly $debugstr = "\n(recordCount=" . $header["recordCount"] . " " . "fieldCount=" . $header["fieldCount"] . " " . "recordSize=" . $header["recordSize"] . " " . "stringSize=" . $header["stringSize"] . ")\n"; if ($header["recordCount"] * $header["recordSize"] + $header["stringSize"] + 20 != $filesize) die("File " . $filename . " has incorrect size" . $debugstr); if ($header["fieldCount"] != strlen($format)) die("Incorrect format string specified for file " . $filename . $debugstr); $unpack_fmt = array('x'=>"x/x/x/x", 'X'=>"x", 's'=>"V", 'f'=>"f", 'i'=>"V", 'b'=>"C", 'd'=>"x4", 'n'=>"V"); $unpackstr = ""; // Check that record size also matches $recsize = 0; for ($i=0; $i<strlen($format); $i++) { $ch = $format[$i]; if ($ch == 'X' || $ch == 'b') $recsize += 1; else $recsize += 4; if (!isset($unpack_fmt[$ch])) die("Unknown format parameter '" . $ch . "' in format string\n"); $unpackstr = $unpackstr . "/" . $unpack_fmt[$ch]; if ($ch != 'X' && $ch != 'x') $unpackstr = $unpackstr .'f'.$i; } $unpackstr = substr($unpackstr, 1); // Optimizing unpack string: "x/x/x/x/x/x" => "x6" while (ereg("(x/)+x", $unpackstr, $r)) $unpackstr = substr_replace($unpackstr, 'x'.((strlen($r[0])+1)/2), strpos($unpackstr, $r[0]), strlen($r[0])); //echo "Unpack string for " . $filename . ": " . $unpackstr . "\n"; // The last debug check (most of the code in this function is for debug checks) if ($recsize != $header["recordSize"]) die("Format string size (".$recsize.") for file " . $filename . " does not match actual size (".$header["recordSize"].")" . $debugstr); // Cache the data to make it faster $data = fread($f, $header["recordCount"] * $header["recordSize"]); $strings = fread($f, $header["stringSize"]); fclose($f); // And, finally, extract the records $result = array(); $cache = array(); $rcount = $header["recordCount"]; $rsize = $header["recordSize"]; $fcount = strlen($format); for ($i=0; $i<$rcount; $i++) { $result[$i] = array(); $record = unpack($unpackstr, substr($data, $i*$rsize, $rsize)); for ($j=0; $j<$fcount; $j++) if (isset($record['f'.$j])) { $value = $record['f'.$j]; if ($format[$j] == 's') { if (isset($cache[$value])) $value = $cache[$value]; else { $s = substr($strings, $value); $s = substr($s, 0, strpos($s, "\000")); $cache[$value] = $s; $value = $s; } } else if ($format[$j] == 'f') $value = round($value, 2); array_push($result[$i], $value); } } return $result; }

15726

avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15727

float4 c2 = (wavesq(et*0.5) * 2 - 1).xxx1;
avatar
HURRRR !

15728

avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15729

float4 c2 = (wavesq(et*0.5) * 2 - 1).xxx1;
avatar
HURRRR !

15730

avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15731

avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

15732

« L'uniforme est synonyme d'armes et de pouvoir, il incite au respect et à la discipline. Il incarne également la solennité de l'heure, le souvenir de la guerre et le passé victorieux. Beaucoup d'uniformes de dictateurs sont pourtant fantaisistes, ils ne correspondent à rien. Tito par exemple n'a jamais été maréchal, Staline non plus.

Hitler ou Staline refusaient habilement toutes décorations, souhaitant accentuer le contraste avec leurs maréchaux décorés comme des vitrines. »

Certains se façonnent un uniforme, à l'image d'Adolf Hitler, caporal dans l'armée allemande, qui devint chef des armées à sa prise de pouvoir en 1934.

Il porta alors une version retravaillée de l'uniforme de son parti, avec ce qu'Eva Braun nommait une « casquette de postier » faite spécialement pour lui.
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

15733

Les experts consultés par le Washington Post sont acerbes : "La Libye n'est pas une grosse guerre, note l'un d'eux. Si les Européens manquent de munitions aussi tôt dans un conflit aussi peu important, on peut se demander à quel type de guerre ils sont préparés. Peut-être qu'ils réservent leurs avions aux démonstrations aériennes..."
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

15734

avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15735

Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

15736

Little.Fockers
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15737

st-ce que je réinstalle enslaved ou
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15738

no leaks are possible
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15739

avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

15740

Bonjour tout le monde wink
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15741

Jeux de forum

15742

avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15743

CLAUSE 42 – SOFTWARE
SUB-CLAUSE 42.4:
The Contractor shall deliver directly to the Agency the software in source code form.
The Agency is hereby granted a non-Open Source, non-exclusive, and royalty free license to use and modify the source code and object code of the software used or developed in the frame of this Contract, including the right to grant sublicenses for its requirements in the field of space research and technology, and their space applications.
NOTE: Open Source software may be used as tools in the frame of this contract, but the deliverable software specified in section 6.4.3 of Appendix 2 shall not be delivered under an Open Source license. Therefore, the Contractor shall be responsible for ensuring that the software developed in the frame of this Contract shall not be affected by “contaminating” Open Source licenses (such as GPL).
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

15744

mais la beauté n'est-elle pas troublante ? ^^ Un léger frisson qui te parcours ?

15745

(img)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15746

je pense pas...
avatar
HURRRR !

15747

(vide)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15748

me: genre on achete a.xxx et on vend ca a un forgeron qui veut un site de vente de haches en ligne classe
ou www.aaa.xxx, et on vend ca a un fabricant de cire
avatar
HURRRR !

15749

on peut aussi prendre CO.xxx
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

15750

avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca