CShape* CCylinder::clone() { CCylinder* cloned; cloned= new CCylinder(1,1,1); cloned->setLocation(m_locationX,m_locationY,m_locationZ); cloned->setRotation(m_rotation); cloned->setSize(m_sizeX,m_sizeY,m_sizeZ); cloned->setRatio(m_ratio); cloned->setColour(m_colourRed,m_colourGreen,m_colourBlue); cloned->setDampening(m_dampening); cloned->setDynamicFriction(m_dynamic_friction); cloned->setStaticFriction(m_static_friction); cloned->setStiffness(m_stiffness); cloned->m_surfaceFriction= m_surfaceFriction; cloned->m_mass= m_mass; cloned->m_proxyDynamic= m_proxyDynamic; cloned->m_collisionDynamic= m_collisionDynamic; cloned->m_logical= m_logical; cloned->m_stiffnessString= m_stiffnessString; cloned->m_dampeningString= m_dampeningString; cloned->m_staticFString= m_staticFString; cloned->m_dynamicFString= m_dynamicFString; cloned->m_name= m_name; return (CShape*)cloned; }
//------------------------- // FX_AddCylinder //------------------------- CCylinder *FX_AddCylinder( vec3_t start, vec3_t normal, float size1s, float size1e, float size1Parm, float size2s, float size2e, float size2Parm, float length1, float length2, float lengthParm, float alpha1, float alpha2, float alphaParm, vec3_t rgb1, vec3_t rgb2, float rgbParm, int killTime, qhandle_t shader, int flags, EMatImpactEffect matImpactFX /*MATIMPACTFX_NONE*/, int fxParm /*-1*/, int iGhoul2/*0*/, int entNum/*-1*/, int modelNum/*-1*/, int boltNum/*-1*/, qboolean traceEnd) { if ( theFxHelper.mFrameTime < 0 ) { // disallow adding new effects when the system is paused return 0; } CCylinder *fx = new CCylinder; if ( fx ) { if (flags&FX_RELATIVE && iGhoul2>0) { fx->SetOrigin1( NULL ); fx->SetOrgOffset( start );//offset fx->SetBoltinfo( iGhoul2, entNum, modelNum, boltNum ); } else { fx->SetOrigin1( start ); } fx->SetTraceEnd(traceEnd); fx->SetMatImpactFX(matImpactFX); fx->SetMatImpactParm(fxParm); fx->SetOrigin1( start ); fx->SetNormal( normal ); // RGB---------------- fx->SetRGBStart( rgb1 ); fx->SetRGBEnd( rgb2 ); if (( flags & FX_RGB_PARM_MASK ) == FX_RGB_WAVE ) { fx->SetRGBParm( rgbParm * PI * 0.001f ); } else if ( flags & FX_RGB_PARM_MASK ) { // rgbParm should be a value from 0-100.. fx->SetRGBParm(rgbParm * 0.01f * killTime + theFxHelper.mTime + theFxHelper.mTimeFraction); } // Size1---------------- fx->SetSizeStart( size1s ); fx->SetSizeEnd( size1e ); if (( flags & FX_SIZE_PARM_MASK ) == FX_SIZE_WAVE ) { fx->SetSizeParm( size1Parm * PI * 0.001f ); } else if ( flags & FX_SIZE_PARM_MASK ) { fx->SetSizeParm(size1Parm * 0.01f * killTime + theFxHelper.mTime + theFxHelper.mTimeFraction); } // Size2---------------- fx->SetSize2Start( size2s ); fx->SetSize2End( size2e ); if (( flags & FX_SIZE2_PARM_MASK ) == FX_SIZE2_WAVE ) { fx->SetSize2Parm( size2Parm * PI * 0.001f ); } else if ( flags & FX_SIZE2_PARM_MASK ) { fx->SetSize2Parm(size2Parm * 0.01f * killTime + theFxHelper.mTime + theFxHelper.mTimeFraction); } // Length1--------------- fx->SetLengthStart( length1 ); fx->SetLengthEnd( length2 ); if (( flags & FX_LENGTH_PARM_MASK ) == FX_LENGTH_WAVE ) { fx->SetLengthParm( lengthParm * PI * 0.001f ); } else if ( flags & FX_LENGTH_PARM_MASK ) { fx->SetLengthParm(lengthParm * 0.01f * killTime + theFxHelper.mTime + theFxHelper.mTimeFraction); } // Alpha---------------- fx->SetAlphaStart( alpha1 ); fx->SetAlphaEnd( alpha2 ); if (( flags & FX_ALPHA_PARM_MASK ) == FX_ALPHA_WAVE ) { fx->SetAlphaParm( alphaParm * PI * 0.001f ); } else if ( flags & FX_ALPHA_PARM_MASK ) { fx->SetAlphaParm(alphaParm * 0.01f * killTime + theFxHelper.mTime + theFxHelper.mTimeFraction); } fx->SetShader( shader ); fx->SetFlags( flags ); FX_AddPrimitive( (CEffect**)&fx, killTime ); } return fx; }
//------------------------- // FX_AddCylinder //------------------------- CCylinder *FX_AddCylinder( vec3_t start, vec3_t normal, float size1s, float size1e, float sizeParm, float size2s, float size2e, float size2Parm, float length1, float length2, float lengthParm, float alpha1, float alpha2, float alphaParm, vec3_t rgb1, vec3_t rgb2, float rgbParm, int killTime, qhandle_t shader, int flags ) { if ( theFxHelper.mFrameTime < 1 ) { // disallow adding new effects when the system is paused return 0; } CCylinder *fx = new CCylinder; if ( fx ) { fx->SetOrigin1( start ); fx->SetNormal( normal ); // RGB---------------- fx->SetRGBStart( rgb1 ); fx->SetRGBEnd( rgb2 ); if (( flags & FX_RGB_PARM_MASK ) == FX_RGB_WAVE ) { fx->SetRGBParm( rgbParm * PI * 0.001f ); } else if ( flags & FX_RGB_PARM_MASK ) { // rgbParm should be a value from 0-100.. fx->SetRGBParm( rgbParm * 0.01f * killTime + theFxHelper.mTime ); } // Size1---------------- fx->SetSizeStart( size1s ); fx->SetSizeEnd( size1e ); if (( flags & FX_SIZE_PARM_MASK ) == FX_SIZE_WAVE ) { fx->SetSizeParm( sizeParm * PI * 0.001f ); } else if ( flags & FX_SIZE_PARM_MASK ) { fx->SetSizeParm( sizeParm * 0.01f * killTime + theFxHelper.mTime ); } // Size2---------------- fx->SetSize2Start( size2s ); fx->SetSize2End( size2e ); if (( flags & FX_SIZE2_PARM_MASK ) == FX_SIZE2_WAVE ) { fx->SetSize2Parm( size2Parm * PI * 0.001f ); } else if ( flags & FX_SIZE2_PARM_MASK ) { fx->SetSize2Parm( size2Parm * 0.01f * killTime + theFxHelper.mTime ); } // Length1--------------- fx->SetLengthStart( length1 ); fx->SetLengthEnd( length2 ); if (( flags & FX_LENGTH_PARM_MASK ) == FX_LENGTH_WAVE ) { fx->SetLengthParm( lengthParm * PI * 0.001f ); } else if ( flags & FX_LENGTH_PARM_MASK ) { fx->SetLengthParm( lengthParm * 0.01f * killTime + theFxHelper.mTime ); } // Alpha---------------- fx->SetAlphaStart( alpha1 ); fx->SetAlphaEnd( alpha2 ); if (( flags & FX_ALPHA_PARM_MASK ) == FX_ALPHA_WAVE ) { fx->SetAlphaParm( alphaParm * PI * 0.001f ); } else if ( flags & FX_ALPHA_PARM_MASK ) { fx->SetAlphaParm( alphaParm * 0.01f * killTime + theFxHelper.mTime ); } fx->SetShader( shader ); fx->SetFlags( flags ); FX_AddPrimitive( (CEffect**)&fx, killTime ); } return fx; }