void CustomColorsSystem::FinishEditing()
{
	if (editingIsEnabled)
	{
		CreateUndoPoint();
		editingIsEnabled = false;
	}
}
void LandscapeEditorCustomColors::InputAction(int32 phase, bool intersects)
{
    switch(phase)
    {
        case UIEvent::PHASE_BEGAN:
        {
            editingIsEnabled = true;

			StoreOriginalState();

            break;
        }
            
        case UIEvent::PHASE_DRAG:
        {
            if(editingIsEnabled && !intersects)
            {
                editingIsEnabled = false;

				CreateUndoPoint();
            }
            else if(!editingIsEnabled && intersects)
            {
                editingIsEnabled = true;

				StoreOriginalState();
            }
            break;
        }
            
        case UIEvent::PHASE_ENDED:
        {
            editingIsEnabled = false;

			CreateUndoPoint();
            break;
        }
            
        default:
            break;
    }
    
    UpdateCircleTexture(false);
	wasTileMaskToolUpdate = true;
}
bool CustomColorsSystem::LoadTexture( const DAVA::FilePath &filePath, bool createUndo /* = true */ )
{
	if(filePath.IsEmpty())
		return false;

    Vector<Image*> images;
    ImageSystem::Instance()->Load(filePath, images);
	if(images.empty())
		return false;

	Image* image = images.front();
	if(image)
	{
		Texture* texture = Texture::CreateFromData(image->GetPixelFormat(),
												   image->GetData(),
												   image->GetWidth(),
												   image->GetHeight(),
												   false);
		Sprite* sprite = Sprite::CreateFromTexture(texture, 0, 0, texture->GetWidth(), texture->GetHeight());

		if (createUndo)
		{
			StoreOriginalState();
		}
		RenderManager::Instance()->SetRenderTarget(drawSystem->GetCustomColorsProxy()->GetSprite());
        
        Sprite::DrawState drawState;
		sprite->Draw(&drawState);
        
		RenderManager::Instance()->RestoreRenderTarget();
		AddRectToAccumulator(Rect(Vector2(0.f, 0.f), Vector2(texture->GetWidth(), texture->GetHeight())));

		SafeRelease(sprite);
		SafeRelease(texture);
		for_each(images.begin(), images.end(), SafeRelease<Image>);

		if (createUndo)
		{
			((SceneEditor2*)GetScene())->BeginBatch("Load custom colors texture");
			StoreSaveFileName(filePath);
			CreateUndoPoint();
			((SceneEditor2*)GetScene())->EndBatch();
		}
	}

    return true;
}
void LandscapeEditorCustomColors::LoadTextureAction(const FilePath &pathToFile)
{
	if(pathToFile.IsEmpty())
		return;

	Vector<Image*> images = ImageLoader::CreateFromFile(pathToFile);
	if(images.empty())
		return;

	Image* image = images.front();
	if(image)
	{
		Texture* texture = Texture::CreateFromData(image->GetPixelFormat(),
												   image->GetData(),
												   image->GetWidth(),
												   image->GetHeight(),
												   false);

		SafeRelease(colorSprite);
		colorSprite = Sprite::CreateAsRenderTarget(texSurf->GetWidth(), texSurf->GetHeight(), FORMAT_RGBA8888);
		Sprite* sprite = Sprite::CreateFromTexture(texture, 0, 0, texture->GetWidth(), texture->GetHeight());

		StoreOriginalState();

		RenderManager::Instance()->SetRenderTarget(colorSprite);
		sprite->Draw();
		RenderManager::Instance()->RestoreRenderTarget();
		PerformLandscapeDraw();

		SafeRelease(sprite);
		SafeRelease(texture);
		for_each(images.begin(), images.end(), SafeRelease<Image>);

		StoreSaveFileName(pathToFile);

		CreateUndoPoint();
	}
}
void LandscapeEditorColor::InputAction(int32 phase, bool intersects)
{
    switch(phase)
    {
        case UIEvent::PHASE_BEGAN:
        {
            editingIsEnabled = true;

			StoreOriginalTexture();

            break;
        }
            
        case UIEvent::PHASE_DRAG:
        {
            if(editingIsEnabled && !intersects)
            {
                editingIsEnabled = false;

				CreateUndoPoint();
            }
            else if(!editingIsEnabled && intersects)
            {
                editingIsEnabled = true;

				StoreOriginalTexture();
            }
            break;
        }
            
        case UIEvent::PHASE_ENDED:
        {
            editingIsEnabled = false;

			CreateUndoPoint();

            break;
        }
            
        default:
            break;
    }
    
    
    
    Texture *tex = NULL;
    if(settings->redMask)
    {
        tex = workingLandscape->GetTexture(Landscape::TEXTURE_TILE0);
    }
    else if(settings->greenMask)
    {
        tex = workingLandscape->GetTexture(Landscape::TEXTURE_TILE1);
    }
    else if(settings->blueMask)
    {
        tex = workingLandscape->GetTexture(Landscape::TEXTURE_TILE2);
    }
    else if(settings->alphaMask)
    {
        tex = workingLandscape->GetTexture(Landscape::TEXTURE_TILE3);
    }
    
    if(tex)
    {
        UpdateTileMaskTool(); 
    }
}
void LandscapeEditorHeightmap::InputAction(int32 phase, bool intersects)
{
    bool dropper = IsKeyModificatorPressed(DVKEY_CTRL);
    if(dropper)
    {
        switch(phase)
        {
            case UIEvent::PHASE_BEGAN:
            case UIEvent::PHASE_DRAG:
            case UIEvent::PHASE_ENDED:
            {
                currentTool->height = GetDropperHeight();
                break;
            }
                
            default:
                break;
        }
    }
    else 
    {
        switch(phase)
        {
            case UIEvent::PHASE_BEGAN:
            {
                if(currentTool->absoluteDropperDrawing)
                {
                    currentTool->height = GetDropperHeight();
                }
                
				bool skipUndoPointCreation = false;
                if(LandscapeTool::TOOL_COPYPASTE == currentTool->type)
                {
					//CopyPasteBegin returns true when copyFrom point is set
					//no need to create undo point in this case
					skipUndoPointCreation = CopyPasteBegin();
					
					if (!skipUndoPointCreation)
					{
						DVASSERT(oldTilemap == NULL);
						workingLandscape->UpdateFullTiledTexture();
						oldTilemap = tilemaskTexture->CreateImageFromMemory();
					}
                }

				if (!skipUndoPointCreation)
				{
					StoreOriginalHeightmap();
				}

                editingIsEnabled = true;
                UpdateToolImage();

                break;
            }
                
            case UIEvent::PHASE_DRAG:
            {
                if(editingIsEnabled && !intersects)
                {
                    editingIsEnabled = false;

					CreateUndoPoint();
                }
                else if(!editingIsEnabled && intersects)
                {
                    editingIsEnabled = true;
                    UpdateToolImage();

					StoreOriginalHeightmap();

					if(LandscapeTool::TOOL_COPYPASTE == currentTool->type)
					{
						DVASSERT(oldTilemap == NULL);
						workingLandscape->UpdateFullTiledTexture();
						oldTilemap = tilemaskTexture->CreateImageFromMemory();
					}
                }
                break;
            }
                
            case UIEvent::PHASE_ENDED:
            {
                editingIsEnabled = false;

				CreateUndoPoint();

                break;
            }
                
            default:
                break;
        }
    }
}
Beispiel #7
0
void UndoEngine::SetLikeNewFile()
{
	CreateUndoPoint();
	m_undo_events.clear();
	m_redo_events.clear();
}