Example #1
0
//----------------------------------------------------------------------------
void EditMap::CreateTerrain (std::string name, int terrainSize, int pageSize,
	float gridSpacing)
{
	TerrainActor *actor = new0 TerrainActor();
	actor->SetName(name);

	RawTerrain *rawTerrain = new0 RawTerrain();
	rawTerrain->SetName(name);
	rawTerrain->SetSize(pageSize);
	int quantity = terrainSize/(pageSize-1);
	rawTerrain->SetRowQuantity(quantity);
	rawTerrain->SetColQuantity(quantity);
	rawTerrain->SetSpacing(gridSpacing);
	rawTerrain->AllocateRawTerrainPages();

	actor->SetTerrain(rawTerrain);
	actor->ComeInToEventWorld();

	Event *event = EditorEventSpace::CreateEventX(
		EditorEventSpace::CreateTerrain);
	event->SetData<TerrainActor*>(actor);
	EventWorld::GetSingleton().BroadcastingLocalEvent(event);

	mScene->AddActor(actor);
}
Example #2
0
//----------------------------------------------------------------------------
void EditMap::CreateTerrain (std::string name, int terrainSize, int pageSize,
	float gridSpacing)
{
	TerrainActor *actor = new0 TerrainActor();
	actor->SetName(name);

	RawTerrain *rawTerrain = new0 RawTerrain();
	rawTerrain->SetName(name);
	rawTerrain->SetSize(pageSize);
	int quantity = terrainSize/(pageSize-1);
	rawTerrain->SetRowQuantity(quantity);
	rawTerrain->SetColQuantity(quantity);
	rawTerrain->SetSpacing(gridSpacing);
	rawTerrain->AllocateRawTerrainPages();

	actor->SetRawTerrain(rawTerrain);
	actor->ComeInToEventWorld();

	AddActor(actor);
}
//----------------------------------------------------------------------------
void EditRenderView_Scene::_UpdateBrushPos(const APoint &pos)
{
	Project *proj = Project::GetSingletonPtr();
	if (!proj) return;

	Scene *scene = proj->GetScene();
	if (!scene) return;

	TerrainActor *terrainActor = scene->GetTerrainActor();
	if (!terrainActor) return;

	RawTerrain *terrain = terrainActor->GetRawTerrain();

	APoint origin;
	AVector dir;
	mRenderStep->GetPickRay(pos.X(), pos.Z(), origin, dir);

	Movable *pickObject = terrain;

#ifdef _DEBUG
	pickObject = PX2_GR.GetXYPlane();
	pickObject->WorldTransform.SetTranslate(APoint::ORIGIN);
#endif

	if (pickObject)
	{
		PX2::Picker picker;
		picker.Execute(pickObject, origin, dir, 0.0f, Mathf::MAX_REAL);
		if ((int)picker.Records.size() > 0)
		{
			PX2::PickRecord pickRecord = picker.GetClosestToZero();
			PX2::APoint dest = origin + dir*pickRecord.T;

			PX2_EDIT.GetTerrainEdit()->GetBrush()->SetPos(dest);
		}
	}
}