Beispiel #1
0
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;
}
Beispiel #2
0
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);
}
Beispiel #5
0
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;
}
Beispiel #7
0
bool Trigger::onAdd()
{
   if(!Parent::onAdd())
      return false;

   onAdd_callback( getId() );

   Polyhedron temp = mTriggerPolyhedron;
   setTriggerPolyhedron(temp);

   addToScene();

   if (isServerObject())
      scriptOnAdd();
      
   return true;
}
Beispiel #8
0
bool AITurretShape::onAdd()
{
   if( !Parent::onAdd() )
      return false;

   // Add this object to the scene
   addToScene();

   _setScanBox();

   if (isServerObject())
      _initState();

   if (isServerObject())
      scriptOnAdd();

   return true;
}
Beispiel #9
0
bool TurretShape::onAdd()
{
   if( !Parent::onAdd() )
      return false;

   // Add this object to the scene
   if (!mSubclassTurretShapeHandlesScene)
   {
      addToScene();
   }

   if (isServerObject() && !mSubclassTurretShapeHandlesScene)
   {
      scriptOnAdd();
   }

   return true;
}
Beispiel #10
0
//-----------------------------------------------------------------------------
//
// 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;
}
Beispiel #12
0
//--------------------------------------------------------------------------
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;
}
Beispiel #13
0
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;
}
Beispiel #14
0
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;
}