mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-21 12:49:10 +00:00
Merge remote-tracking branch 'origin/master' into plString
Conflicts: Sources/Plasma/CoreLib/hsStream.h Sources/Plasma/FeatureLib/pfAudio/plListener.cpp Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommands.cpp Sources/Plasma/FeatureLib/pfConsole/pfDispatchLog.cpp Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.cpp Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp Sources/Plasma/FeatureLib/pfPython/cyMisc.h Sources/Plasma/FeatureLib/pfPython/cyMiscGlue4.cpp Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.cpp Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.h Sources/Plasma/FeatureLib/pfPython/pyImage.cpp Sources/Plasma/FeatureLib/pfPython/pyJournalBook.cpp Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfo.h Sources/Plasma/NucleusLib/pnKeyedObject/plFixedKey.cpp Sources/Plasma/NucleusLib/pnKeyedObject/plKeyImp.cpp Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.cpp Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.h Sources/Plasma/NucleusLib/pnMessage/plMessage.h Sources/Plasma/NucleusLib/pnNetCommon/plNetApp.h Sources/Plasma/PubUtilLib/plAvatar/plCoopCoordinator.cpp Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpansExport.cpp Sources/Plasma/PubUtilLib/plDrawable/plDynaDecalMgr.cpp Sources/Plasma/PubUtilLib/plDrawable/plWaveSet7.cpp Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h Sources/Plasma/PubUtilLib/plNetCommon/plClientGuid.h Sources/Plasma/PubUtilLib/plNetMessage/plNetMessage.cpp Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgHelpers.h Sources/Plasma/PubUtilLib/plNetTransport/plNetTransportMember.h Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.cpp Sources/Plasma/PubUtilLib/plPipeline/plDXPipeline.cpp Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.cpp Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.h Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.cpp Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.h Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.cpp Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.h Sources/Plasma/PubUtilLib/plSurface/plGrassShaderMod.cpp
This commit is contained in:
@ -39,7 +39,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "hsTypes.h"
|
||||
#include "HeadSpin.h"
|
||||
#include "plParticleSystem.h"
|
||||
#include "plParticleEmitter.h"
|
||||
#include "plParticleGenerator.h"
|
||||
@ -67,7 +67,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
plProfile_CreateCounter("Num Particles", "Particles", NumParticles);
|
||||
|
||||
const hsScalar plParticleSystem::GRAVITY_ACCEL_FEET_PER_SEC2 = 32.0f;
|
||||
const float plParticleSystem::GRAVITY_ACCEL_FEET_PER_SEC2 = 32.0f;
|
||||
|
||||
plParticleSystem::plParticleSystem() : fParticleSDLMod(nil), fAttachedToAvatar(false)
|
||||
{
|
||||
@ -89,7 +89,7 @@ plParticleSystem::~plParticleSystem()
|
||||
delete fHeightCtl;
|
||||
}
|
||||
|
||||
void plParticleSystem::Init(UInt32 xTiles, UInt32 yTiles, UInt32 maxTotalParticles, UInt32 maxEmitters,
|
||||
void plParticleSystem::Init(uint32_t xTiles, uint32_t yTiles, uint32_t maxTotalParticles, uint32_t maxEmitters,
|
||||
plController *ambientCtl, plController *diffuseCtl, plController *opacityCtl,
|
||||
plController *widthCtl, plController *heightCtl)
|
||||
{
|
||||
@ -113,7 +113,7 @@ void plParticleSystem::Init(UInt32 xTiles, UInt32 yTiles, UInt32 maxTotalParticl
|
||||
|
||||
fMaxTotalParticles = fMaxTotalParticlesLeft = maxTotalParticles;
|
||||
fMaxEmitters = maxEmitters;
|
||||
fEmitters = TRACKED_NEW plParticleEmitter *[fMaxEmitters];
|
||||
fEmitters = new plParticleEmitter *[fMaxEmitters];
|
||||
int i;
|
||||
for (i = 0; i < maxEmitters; i++)
|
||||
fEmitters[i] = nil;
|
||||
@ -125,7 +125,7 @@ void plParticleSystem::Init(UInt32 xTiles, UInt32 yTiles, UInt32 maxTotalParticl
|
||||
fHeightCtl = heightCtl;
|
||||
}
|
||||
|
||||
void plParticleSystem::IAddEffect(plParticleEffect *effect, UInt32 type)
|
||||
void plParticleSystem::IAddEffect(plParticleEffect *effect, uint32_t type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
@ -147,7 +147,7 @@ plParticleEmitter* plParticleSystem::GetAvailEmitter()
|
||||
if( !fNumValidEmitters ) // got to start with at least one.
|
||||
return nil;
|
||||
|
||||
hsScalar minTTL = 1.e33;
|
||||
float minTTL = 1.e33;
|
||||
int iMinTTL = -1;
|
||||
int i;
|
||||
for( i = 0; i < fNumValidEmitters; i++ )
|
||||
@ -164,7 +164,7 @@ plParticleEmitter* plParticleSystem::GetAvailEmitter()
|
||||
{
|
||||
minTTL = 0;
|
||||
iMinTTL = fNumValidEmitters++;
|
||||
fEmitters[iMinTTL] = TRACKED_NEW plParticleEmitter();
|
||||
fEmitters[iMinTTL] = new plParticleEmitter();
|
||||
fEmitters[iMinTTL]->Clone(fEmitters[0], iMinTTL);
|
||||
|
||||
fMaxTotalParticlesLeft -= fEmitters[iMinTTL]->fMaxParticles;
|
||||
@ -177,11 +177,11 @@ plParticleEmitter* plParticleSystem::GetAvailEmitter()
|
||||
return fEmitters[iMinTTL];
|
||||
}
|
||||
|
||||
UInt32 plParticleSystem::AddEmitter(UInt32 maxParticles, plParticleGenerator *gen, UInt32 emitterFlags)
|
||||
uint32_t plParticleSystem::AddEmitter(uint32_t maxParticles, plParticleGenerator *gen, uint32_t emitterFlags)
|
||||
{
|
||||
if (fMaxEmitters == 0) // silly rabbit, Trix are for kids!
|
||||
return 0;
|
||||
UInt32 currEmitter;
|
||||
uint32_t currEmitter;
|
||||
if (fNumValidEmitters == fMaxEmitters) // No more free spots, snag the next in line.
|
||||
{
|
||||
int i;
|
||||
@ -207,7 +207,7 @@ UInt32 plParticleSystem::AddEmitter(UInt32 maxParticles, plParticleGenerator *ge
|
||||
if (maxParticles < 0)
|
||||
maxParticles = 0;
|
||||
|
||||
fEmitters[currEmitter] = TRACKED_NEW plParticleEmitter();
|
||||
fEmitters[currEmitter] = new plParticleEmitter();
|
||||
fEmitters[currEmitter]->Init(this, maxParticles, fNextEmitterToGo, emitterFlags, gen);
|
||||
|
||||
fMaxTotalParticlesLeft -= fEmitters[currEmitter]->fMaxParticles;
|
||||
@ -216,9 +216,9 @@ UInt32 plParticleSystem::AddEmitter(UInt32 maxParticles, plParticleGenerator *ge
|
||||
return maxParticles;
|
||||
}
|
||||
|
||||
void plParticleSystem::AddParticle(hsPoint3 &pos, hsVector3 &velocity, UInt32 tileIndex,
|
||||
hsScalar hSize, hsScalar vSize, hsScalar scale, hsScalar invMass, hsScalar life,
|
||||
hsPoint3 &orientation, UInt32 miscFlags, hsScalar radsPerSec)
|
||||
void plParticleSystem::AddParticle(hsPoint3 &pos, hsVector3 &velocity, uint32_t tileIndex,
|
||||
float hSize, float vSize, float scale, float invMass, float life,
|
||||
hsPoint3 &orientation, uint32_t miscFlags, float radsPerSec)
|
||||
{
|
||||
hsAssert(fNumValidEmitters > 0, "Trying to explicitly add particles to a system with no valid emitters.");
|
||||
if (fNumValidEmitters == 0)
|
||||
@ -227,7 +227,7 @@ void plParticleSystem::AddParticle(hsPoint3 &pos, hsVector3 &velocity, UInt32 ti
|
||||
fEmitters[0]->AddParticle(pos, velocity, tileIndex, hSize, vSize, scale, invMass, life, orientation, miscFlags, radsPerSec);
|
||||
}
|
||||
|
||||
void plParticleSystem::GenerateParticles(UInt32 num, hsScalar dt /* = 0.f */)
|
||||
void plParticleSystem::GenerateParticles(uint32_t num, float dt /* = 0.f */)
|
||||
{
|
||||
if (num <= 0)
|
||||
return;
|
||||
@ -245,7 +245,7 @@ void plParticleSystem::WipeExistingParticles()
|
||||
fEmitters[i]->WipeExistingParticles();
|
||||
}
|
||||
|
||||
void plParticleSystem::KillParticles(hsScalar num, hsScalar timeToDie, UInt8 flags)
|
||||
void plParticleSystem::KillParticles(float num, float timeToDie, uint8_t flags)
|
||||
{
|
||||
if (fEmitters[0])
|
||||
fEmitters[0]->KillParticles(num, timeToDie, flags);
|
||||
@ -267,14 +267,14 @@ void plParticleSystem::DisableGenerators()
|
||||
fEmitters[i]->UpdateGenerator(plParticleUpdateMsg::kParamEnabled, 0.f);
|
||||
}
|
||||
|
||||
UInt16 plParticleSystem::StealParticlesFrom(plParticleSystem *victim, UInt16 num)
|
||||
uint16_t plParticleSystem::StealParticlesFrom(plParticleSystem *victim, uint16_t num)
|
||||
{
|
||||
if (fNumValidEmitters <= 0)
|
||||
return 0; // you just lose
|
||||
|
||||
if (victim)
|
||||
{
|
||||
UInt16 numStolen = fEmitters[0]->StealParticlesFrom(victim->fNumValidEmitters > 0 ? victim->fEmitters[0] : nil, num);
|
||||
uint16_t numStolen = fEmitters[0]->StealParticlesFrom(victim->fNumValidEmitters > 0 ? victim->fEmitters[0] : nil, num);
|
||||
GetTarget(0)->DirtySynchState(kSDLParticleSystem, 0);
|
||||
victim->GetTarget(0)->DirtySynchState(kSDLParticleSystem, 0);
|
||||
return numStolen;
|
||||
@ -288,7 +288,7 @@ plParticleGenerator *plParticleSystem::GetExportedGenerator() const
|
||||
return (fNumValidEmitters > 0 ? fEmitters[0]->fGenerator : nil);
|
||||
}
|
||||
|
||||
plParticleEffect *plParticleSystem::GetEffect(UInt16 type) const
|
||||
plParticleEffect *plParticleSystem::GetEffect(uint16_t type) const
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < fForces.GetCount(); i++)
|
||||
@ -306,9 +306,9 @@ plParticleEffect *plParticleSystem::GetEffect(UInt16 type) const
|
||||
return nil;
|
||||
}
|
||||
|
||||
UInt32 plParticleSystem::GetNumValidParticles(hsBool immortalOnly /* = false */) const
|
||||
uint32_t plParticleSystem::GetNumValidParticles(hsBool immortalOnly /* = false */) const
|
||||
{
|
||||
UInt32 count = 0;
|
||||
uint32_t count = 0;
|
||||
int i, j;
|
||||
for (i = 0; i < fNumValidEmitters; i++)
|
||||
{
|
||||
@ -332,7 +332,7 @@ const hsMatrix44 &plParticleSystem::GetLocalToWorld() const
|
||||
return fTarget->GetCoordinateInterface()->GetLocalToWorld();
|
||||
}
|
||||
|
||||
hsBool plParticleSystem::IEval(double secs, hsScalar del, UInt32 dirty)
|
||||
hsBool plParticleSystem::IEval(double secs, float del, uint32_t dirty)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -367,7 +367,7 @@ hsBool plParticleSystem::IShouldUpdate(plPipeline* pipe) const
|
||||
// Now, are we visible?
|
||||
hsBool isVisible = pipe->TestVisibleWorld(wBnd);
|
||||
|
||||
hsScalar delta = fLastTime > 0 ? hsScalar(fCurrTime - fLastTime) : hsTimer::GetDelSysSeconds();
|
||||
float delta = fLastTime > 0 ? float(fCurrTime - fLastTime) : hsTimer::GetDelSysSeconds();
|
||||
if( isVisible )
|
||||
{
|
||||
// If we know how fast the fastest particle is moving, then we can
|
||||
@ -382,13 +382,13 @@ hsBool plParticleSystem::IShouldUpdate(plPipeline* pipe) const
|
||||
// We're in view, but how close are we to the camera? Look at closest point.
|
||||
hsPoint2 depth;
|
||||
wBnd.TestPlane(pipe->GetViewDirWorld(), depth);
|
||||
hsScalar eyeDist = pipe->GetViewDirWorld().InnerProduct(pipe->GetViewPositionWorld());
|
||||
hsScalar dist = depth.fX - eyeDist;
|
||||
float eyeDist = pipe->GetViewDirWorld().InnerProduct(pipe->GetViewPositionWorld());
|
||||
float dist = depth.fX - eyeDist;
|
||||
|
||||
static hsScalar kUpdateCutoffDist = 100.f;
|
||||
static float kUpdateCutoffDist = 100.f;
|
||||
if( dist > kUpdateCutoffDist )
|
||||
{
|
||||
static hsScalar kDistantUpdateSecs = 0.1f;
|
||||
static float kDistantUpdateSecs = 0.1f;
|
||||
return delta >= kDistantUpdateSecs;
|
||||
}
|
||||
#endif // ALWAYS_IF_VISIBLE
|
||||
@ -397,7 +397,7 @@ hsBool plParticleSystem::IShouldUpdate(plPipeline* pipe) const
|
||||
}
|
||||
|
||||
|
||||
static hsScalar kOffscreenUpdateSecs = 1.f;
|
||||
static float kOffscreenUpdateSecs = 1.f;
|
||||
return delta >= kOffscreenUpdateSecs;
|
||||
}
|
||||
|
||||
@ -407,10 +407,10 @@ plDrawInterface* plParticleSystem::ICheckDrawInterface()
|
||||
if( !di )
|
||||
return nil;
|
||||
|
||||
if( di->GetDrawableMeshIndex(0) == UInt32(-1) )
|
||||
if( di->GetDrawableMeshIndex(0) == uint32_t(-1) )
|
||||
{
|
||||
di->SetUpForParticleSystem( fMaxEmitters + 1, fMaxTotalParticles, fTexture, fPermaLights );
|
||||
hsAssert(di->GetDrawableMeshIndex( 0 ) != (UInt32)-1, "SetUpForParticleSystem should never fail"); // still invalid, didn't fix it.
|
||||
hsAssert(di->GetDrawableMeshIndex( 0 ) != (uint32_t)-1, "SetUpForParticleSystem should never fail"); // still invalid, didn't fix it.
|
||||
}
|
||||
|
||||
return di;
|
||||
@ -419,10 +419,10 @@ plDrawInterface* plParticleSystem::ICheckDrawInterface()
|
||||
void plParticleSystem::IHandleRenderMsg(plPipeline* pipe)
|
||||
{
|
||||
fCurrTime = hsTimer::GetSysSeconds();
|
||||
hsScalar delta = hsScalar(fCurrTime - fLastTime);
|
||||
float delta = float(fCurrTime - fLastTime);
|
||||
if (delta == 0)
|
||||
return;
|
||||
plConst(hsScalar) kMaxDelta(0.3f);
|
||||
plConst(float) kMaxDelta(0.3f);
|
||||
if( delta > kMaxDelta )
|
||||
delta = kMaxDelta;
|
||||
|
||||
@ -536,7 +536,7 @@ hsBool plParticleSystem::MsgReceive(plMessage* msg)
|
||||
return plModifier::MsgReceive(msg);
|
||||
}
|
||||
|
||||
void plParticleSystem::UpdateGenerator(UInt32 paramID, hsScalar value)
|
||||
void plParticleSystem::UpdateGenerator(uint32_t paramID, float value)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < fNumValidEmitters; i++)
|
||||
@ -554,7 +554,7 @@ void plParticleSystem::AddTarget(plSceneObject *so)
|
||||
plgDispatch::Dispatch()->RegisterForExactType(plAgeLoadedMsg::Index(), GetKey());
|
||||
|
||||
delete fParticleSDLMod;
|
||||
fParticleSDLMod = TRACKED_NEW plParticleSDLMod;
|
||||
fParticleSDLMod = new plParticleSDLMod;
|
||||
fParticleSDLMod->SetAttachedToAvatar(fAttachedToAvatar);
|
||||
so->AddModifier(fParticleSDLMod);
|
||||
}
|
||||
@ -585,7 +585,7 @@ void plParticleSystem::IPreSim()
|
||||
double secs = fPreSim;
|
||||
while (secs > 0)
|
||||
{
|
||||
fEmitters[i]->IUpdateParticles((hsScalar)PRESIM_UPDATE_TICK);
|
||||
fEmitters[i]->IUpdateParticles((float)PRESIM_UPDATE_TICK);
|
||||
secs -= PRESIM_UPDATE_TICK;
|
||||
}
|
||||
}
|
||||
@ -593,15 +593,15 @@ void plParticleSystem::IPreSim()
|
||||
fPreSim = 0;
|
||||
}
|
||||
|
||||
void plParticleSystem::IReadEffectsArray(hsTArray<plParticleEffect *> &effects, UInt32 type, hsStream *s, hsResMgr *mgr)
|
||||
void plParticleSystem::IReadEffectsArray(hsTArray<plParticleEffect *> &effects, uint32_t type, hsStream *s, hsResMgr *mgr)
|
||||
{
|
||||
plGenRefMsg *msg;
|
||||
effects.Reset();
|
||||
UInt32 count = s->ReadLE32();
|
||||
uint32_t count = s->ReadLE32();
|
||||
int i;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
msg = TRACKED_NEW plGenRefMsg(GetKey(), plRefMsg::kOnCreate, 0, (Int8)type);
|
||||
msg = new plGenRefMsg(GetKey(), plRefMsg::kOnCreate, 0, (int8_t)type);
|
||||
mgr->ReadKeyNotifyMe(s, msg, plRefFlags::kActiveRef);
|
||||
}
|
||||
}
|
||||
@ -611,7 +611,7 @@ void plParticleSystem::Read(hsStream *s, hsResMgr *mgr)
|
||||
plModifier::Read(s, mgr);
|
||||
|
||||
plGenRefMsg* msg;
|
||||
msg = TRACKED_NEW plGenRefMsg(GetKey(), plRefMsg::kOnCreate, 0, 0); // Material
|
||||
msg = new plGenRefMsg(GetKey(), plRefMsg::kOnCreate, 0, 0); // Material
|
||||
mgr->ReadKeyNotifyMe(s, msg, plRefFlags::kActiveRef);
|
||||
|
||||
fAmbientCtl = plController::ConvertNoRef(mgr->ReadCreatable(s));
|
||||
@ -620,10 +620,10 @@ void plParticleSystem::Read(hsStream *s, hsResMgr *mgr)
|
||||
fWidthCtl = plController::ConvertNoRef(mgr->ReadCreatable(s));
|
||||
fHeightCtl = plController::ConvertNoRef(mgr->ReadCreatable(s));
|
||||
|
||||
UInt32 xTiles = s->ReadLE32();
|
||||
UInt32 yTiles = s->ReadLE32();
|
||||
UInt32 maxTotal = s->ReadLE32();
|
||||
UInt32 maxEmitters = s->ReadLE32();
|
||||
uint32_t xTiles = s->ReadLE32();
|
||||
uint32_t yTiles = s->ReadLE32();
|
||||
uint32_t maxTotal = s->ReadLE32();
|
||||
uint32_t maxEmitters = s->ReadLE32();
|
||||
Init(xTiles, yTiles, maxTotal, maxEmitters, fAmbientCtl, fDiffuseCtl, fOpacityCtl, fWidthCtl, fHeightCtl);
|
||||
|
||||
fPreSim = s->ReadLEScalar();
|
||||
|
Reference in New Issue
Block a user