bool Item::onAdd() { if (!Parent::onAdd() || !mDataBlock) return false; if (mStatic) mAtRest = true; mObjToWorld.getColumn(3,&delta.pos); // Setup the box for our convex object... mObjBox.getCenter(&mConvex.mCenter); mConvex.mSize.x = mObjBox.len_x() / 2.0; mConvex.mSize.y = mObjBox.len_y() / 2.0; mConvex.mSize.z = mObjBox.len_z() / 2.0; mWorkingQueryBox.minExtents.set(-1e9, -1e9, -1e9); mWorkingQueryBox.maxExtents.set(-1e9, -1e9, -1e9); if( !isHidden() && !mSubclassItemHandlesScene ) addToScene(); if (isServerObject()) { if (!mSubclassItemHandlesScene) scriptOnAdd(); } else if (mDataBlock->lightType != NoLight) { mDropTime = Sim::getCurrentTime(); } _updatePhysics(); return true; }
bool FlyingVehicle::onAdd() { if(!Parent::onAdd()) return false; addToScene(); if (isServerObject()) scriptOnAdd(); return true; }
bool StaticShape::onAdd() { if(!Parent::onAdd() || !mDataBlock) return false; // We need to modify our type mask based on what our datablock says... mTypeMask |= (mDataBlock->dynamicTypeField & sgAllowedDynamicTypes); addToScene(); if (isServerObject()) scriptOnAdd(); return true; }
bool MissionMarker::onAdd() { if(!Parent::onAdd() || !mDataBlock) return(false); if(gEditingMission) { addToScene(); mAddedToScene = true; } //.logicking scriptOnAdd(); return(true); }
bool Etherform::onAdd() { if(!Parent::onAdd()) return false; if(isClientObject()) { mCameraTargetPos = this->getPosition(); mCameraPos = mCameraTargetPos; } addToScene(); scriptOnAdd(); return true; }
bool HexagonVolumeCollisionShape::onAdd() { if(!Parent::onAdd() || !mDataBlock) return false; // Don't tick this->setProcessTick(false); // We need to modify our type mask based on what our datablock says... mTypeMask |= (mDataBlock->dynamicTypeField & sgAllowedDynamicTypes); addToScene(); if (isServerObject()) scriptOnAdd(); return true; }
bool Trigger::onAdd() { if(!Parent::onAdd()) return false; onAdd_callback( getId() ); Polyhedron temp = mTriggerPolyhedron; setTriggerPolyhedron(temp); addToScene(); if (isServerObject()) scriptOnAdd(); return true; }
bool AITurretShape::onAdd() { if( !Parent::onAdd() ) return false; // Add this object to the scene addToScene(); _setScanBox(); if (isServerObject()) _initState(); if (isServerObject()) scriptOnAdd(); return true; }
bool TurretShape::onAdd() { if( !Parent::onAdd() ) return false; // Add this object to the scene if (!mSubclassTurretShapeHandlesScene) { addToScene(); } if (isServerObject() && !mSubclassTurretShapeHandlesScene) { scriptOnAdd(); } return true; }
//----------------------------------------------------------------------------- // // VActor::onAdd(); // // ... // //----------------------------------------------------------------------------- bool VActor::onAdd( void ) { if ( !Parent::onAdd() || !mDataBlock ) { return false; } // Add to Scene. addToScene(); if ( isServerObject() ) { // Script Callback. scriptOnAdd(); } return true; }
bool ProximityMine::onAdd() { if ( !Parent::onAdd() || !mDataBlock ) return false; addToScene(); if (isServerObject()) scriptOnAdd(); if ( mStatic ) { // static mines are armed immediately mState = Deployed; mStateTimeout = 0; } return true; }
//-------------------------------------------------------------------------- bool HoverVehicle::onAdd() { if(!Parent::onAdd()) return false; addToScene(); if( !isServerObject() ) { if( mDataBlock->dustTrailEmitter ) { mDustTrailEmitter = new ParticleEmitter; mDustTrailEmitter->onNewDataBlock( mDataBlock->dustTrailEmitter, false ); if( !mDustTrailEmitter->registerObject() ) { Con::warnf( ConsoleLogEntry::General, "Could not register dust emitter for class: %s", mDataBlock->getName() ); delete mDustTrailEmitter; mDustTrailEmitter = NULL; } } // Jet Sequences for (S32 i = 0; i < JetAnimCount; i++) { TSShape const* shape = mShapeInstance->getShape(); mJetSeq[i] = shape->findSequence(sJetSequence[i]); if (mJetSeq[i] != -1) { if (i == BackActivate) { mJetThread[i] = mShapeInstance->addThread(); mShapeInstance->setSequence(mJetThread[i],mJetSeq[i],0); mShapeInstance->setTimeScale(mJetThread[i],0); } } else mJetThread[i] = 0; } } if (isServerObject()) scriptOnAdd(); return true; }
bool RigidBody::onAdd() { if (!Parent::onAdd()) return false; /* if (isServerObject() && Physics::getPhysics(false)==NULL) mHasServerPhysic = true; */ if (!mPhysShape)// && (isClientObject() || !mDataBlock->mOnlyOnClient || mHasServerPhysic) ) createPhysShape(); if (mPhysShape) { // Initialize interpolation vars. mDelta.rot[1] = mDelta.rot[0] = mPhysShape->getRotation(); mDelta.pos = mPhysShape->getPosition(); mDelta.posVec = Point3F(0,0,0); if (isClientObject()) { setTransform(mPhysShape->getTransform()); //for interpolation } } /*if (mDataBlock->mOnlyOnClient && isServerObject()) mTypeMask &= ~VehicleObjectType;*/ addToScene(); if (isServerObject()) scriptOnAdd(); setEnabled(SimComponent().mEnabled); return true; }
bool Turret::initResources (GameBase::GameBaseData *in_data) { if(!Parent::initResources(in_data)) return false; data = dynamic_cast<TurretData *>(in_data); if (!isGhost()) { DataBlockManager *dbm = (DataBlockManager *) manager->findObject(DataBlockManagerId); if (data->projectile.type != -1) { Projectile::ProjectileData* ptr = static_cast<Projectile::ProjectileData *> (dbm->lookupDataBlock(data->projectile.dataType,data->projectile.type)); projectileSpeed = ptr->getTerminalVelocity (); } else projectileSpeed = 50; } if (!rotationThread) { rotationThread = Parent::createThread (0); if (rotationThread) { rotationThread->setTimeScale( 1.0f ); rotationThread->SetSequence ("turn", 0.0); // const TSShape &ts_shape = image.shape->getShape(); // int node = ts_shape.findNode ("kill 15"); // AssertFatal (node != -1, "Can't find turret base..."); // if (node != -1) // { // ts_shape.selectDetail (15); // rotationThread->SetPosition (1.0); // rotationThread->UpdateSubscriberList (); // image.shape->animate (); // const TMat3F &mat = image.shape->getTransform(node); // EulerF angles; // mat.angles(&angles); // // maxRotation = angles.z; // if (maxRotation > M_PI) // maxRotation -= (float)M_2PI; // // rotationThread->SetPosition (0.0); // rotationThread->UpdateSubscriberList (); // image.shape->animate (); // const TMat3F &mat2 = image.shape->getTransform(node); // mat2.angles(&angles); // // minRotation = angles.z; rotationThread->SetPosition (0); image.shape->animate (); minRotation = maxRotation = 0; turretRotation = minRotation + ((maxRotation - minRotation) / 2); // } } } if (!elevationThread) { elevationThread = Parent::createThread (0); if (elevationThread) { elevationThread->setTimeScale( 1.0f ); elevationThread->SetSequence ("elevate", 0.0); const TSShape &ts_shape = image.shape->getShape(); int node = ts_shape.findNode ("dummy muzzle"); AssertFatal (node != -1, "No dummy muzzle"); if (node != -1) { elevationThread->SetPosition (0); image.shape->setDetailLevel(0); image.shape->animate (); const TMat3F &mat = image.shape->getTransform(node); EulerF angles; mat.angles(&angles); minElevation = angles.x; elevationThread->SetPosition (1.0); image.shape->animate (); const TMat3F &mat2 = image.shape->getTransform(node); mat2.angles(&angles); maxElevation = angles.x; if (minElevation > M_PI) minElevation -= (float)M_2PI; AssertFatal (maxElevation > minElevation, "Turret - maxElevation must be greater than minElevation"); // if (maxElevation < minElevation) // { // float temp = minElevation; // minElevation = maxElevation; // maxElevation = temp; // } turretElevation = 0; elevationThread->SetPosition ((turretElevation - minElevation) / (maxElevation - minElevation)); image.shape->animate (); } } } if (!animThread && image.shape->getShape().lookupName ("fire") != -1 && image.shape->getShape().lookupName ("power") != -1) { animThread = Parent::createThread (0); fireSequence = animThread->GetSequenceIndex("fire"); powerSequence = animThread->GetSequenceIndex("power"); } setPowerThread(); if (animThread) animThread->SetPosition (0.0); if (!isGhost()) scriptOnAdd(); cameraNode = image.shape->getShape().findNode("dummy eye"); gunNode = image.shape->getShape().findNode("dummy muzzle"); return true; }