//__________________________________________________________________________________ void _Variable::EnsureTheValueIsInBounds (void) { if (ObjectClass () == NUMBER && IsIndependent()) { _Constant* myValue = (_Constant*) Compute(); if (myValue->Value() < lowerBound) { SetValue (new _Constant (lowerBound),false); } else if (myValue->Value() > upperBound) { SetValue (new _Constant (upperBound),false); } } }
int CParticleEmitter::Create (CFixVector *vPos, CFixVector *vDir, CFixMatrix *mOrient, short nSegment, int nObject, int nMaxParts, float fScale, int nDensity, int nPartsPerPos, int nLife, int nSpeed, char nType, tRgbaColorf *colorP, int nCurTime, int bBlowUpParts, CFixVector *vEmittingFace) { if (!m_particles.Create (nMaxParts)) return 0; m_nLife = nLife; m_nBirth = nCurTime; m_nSpeed = nSpeed; m_nType = nType; if ((m_bHaveColor = (colorP != NULL))) m_color = *colorP; if ((m_bHaveDir = (vDir != NULL))) m_vDir = *vDir; m_vPrevPos = m_vPos = *vPos; if (mOrient) m_mOrient = *mOrient; else m_mOrient = CFixMatrix::IDENTITY; m_bHavePrevPos = 1; m_bBlowUpParts = bBlowUpParts; m_nParts = 0; m_nMoved = nCurTime; m_nPartLimit = m_nMaxParts = nMaxParts; m_nFirstPart = 0; m_fScale = fScale; m_nDensity = nDensity; m_nPartsPerPos = nPartsPerPos; m_nSegment = nSegment; m_nObject = nObject; if ((nObject >= 0) && (nObject < 0x70000000)) { m_nObjType = OBJECTS [nObject].info.nType; m_nObjId = OBJECTS [nObject].info.nId; } m_nClass = ObjectClass (nObject); m_fPartsPerTick = (float) nMaxParts / (float) abs (nLife); m_nTicks = 0; m_nDefBrightness = 0; if ((m_bEmittingFace = (vEmittingFace != NULL))) memcpy (m_vEmittingFace, vEmittingFace, sizeof (m_vEmittingFace)); m_fBrightness = (nObject < 0) ? 0.5f : CParticleEmitter::Brightness (); return 1; }