[2.1] Camera swiching

Problems building or running the engine, queries about how to use features etc.
Post Reply
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

[2.1] Camera swiching

Post by Kohedlo »

After creating camera view and next swiching by this same methos(by adding new workspace) need comeback to old camera wiew. This method not works third time, becaose camera is attached to this window and workspake has been created first time and give unexcepted crash of app. And no exists method for removing old workspace or debuild schemme(with camera deataching).

Code: Select all

 Ogre::CompositorManager2 *compositorManager = Ogre::Root::getSingletonPtr()->getCompositorManager2();

		w = SOMENAME;
        if( !compositorManager->hasWorkspaceDefinition(wp) )
        {
			compositorManager->createBasicWorkspaceDef(wp,backgroundColor, Ogre::IdString() );
		}
		
		compositor_workspace = compositorManager->addWorkspace( sm, rwin, cam, w , true );
c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: [2.1] Camera swiching

Post by dark_sylinc »

Camera's don't belong to a workspace.

So:
  • How to reproduce (provide more code)
  • Where is it crashing? Callstack?
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

Crash occours afer caling addWorkspace( method.

In depth process go throught "workspace = OGRE_NEW CompositorWorkspace(" where throught LogMessaging works fine.

Code: Select all

CompositorWorkspace* CompositorManager2::addWorkspace( SceneManager *sceneManager,
                                             const CompositorChannel &finalRenderTarget,
                                             Camera *defaultCam, IdString definitionName,
                                             bool bEnabled, int position,
                                             const Vector4 &vpOffsetScale,
                                             uint8 vpModifierMask, uint8 executionMask )
    {
		
        validateAllNodes();



        CompositorWorkspace *workspace = 0;

        CompositorWorkspaceDefMap::const_iterator itor = mWorkspaceDefs.find( definitionName );
        if( itor == mWorkspaceDefs.end() )
        {
            OGRE_EXCEPT( Exception::ERR_ITEM_NOT_FOUND, "Workspace definition '" +
                            definitionName.getFriendlyText() + "' not found",
                            "CompositorManager2::addWorkspace" );
        }
        else
        {
			
            workspace = OGRE_NEW CompositorWorkspace(
                                Id::generateNewId<CompositorWorkspace>(), itor->second,
                                finalRenderTarget, sceneManager, defaultCam, mRenderSystem,
                                bEnabled, executionMask, vpModifierMask, vpOffsetScale ); 

--// go to this point fine


            mQueuedWorkspaces.push_back( QueuedWorkspace( workspace, position ) );
        }

		

      


        return workspace;
    }
How to reproduce (provide more code)
- if need, i can record video, create real trandlation for remote desctop or five see code on my cpu or open text files.
Last edited by Kohedlo on Sat Nov 21, 2015 6:59 pm, edited 2 times in total.
c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

Next code have body of "С" key case on wxWidgets. The Key on and off camera preview by using сameraActorPreviewEnabled bollean states.

/* code by Wow-bomb game studios. Only for preview and evaluation/ Non commercial */

Code: Select all


/*  code by Wow-bomb game studios. Only for preview and evaluation/ Non commercial */

if(this->ORTHO == false)
if(m_sm->getName() == CfgManager::getSingleton().main_scene_manager_name)
if(IsMouseInWindow())
if(wxGetKeyState(wxKeyCode('C')) )
if(isCameraActorSelected == true)
{

if(сameraActorPreviewEnabled == false)
{

if(hasCameraID(mRayedObject->getName()))
{

        Ogre::CompositorManager2 *compositorManager = Ogre::Root::getSingletonPtr()->getCompositorManager2();

		wp = mRayedObject->getName();
        if( !compositorManager->hasWorkspaceDefinition(wp) )
        {
			compositorManager->createBasicWorkspaceDef(wp,
				CfgManager::getSingleton().m_current_editor_schemme->backgroundColor
				, Ogre::IdString() );
		}
		
		  //  if(compositor_workspace_p != NULL)
		//	compositorManager->removeWorkspace(compositor_workspace_p);
		
			//compositorManager->removeAllWorkspaces();
            //compositorManager->removeAllWorkspaceDefinitions();
		
		compositor_workspace_p = compositorManager->addWorkspace( m_sm, m_rwin, GetCameraID(mRayedObject->getName()), wp, true ); // mRayedObject->getName() - Cam for prewiew










		


//vpCamera = m_vp->getCamera();

//m_vp->setCamera(Ogre::Root::getSingletonPtr()->getSceneManager(CfgManager::getSingleton().main_scene_manager_name)->findCamera(mRayedObject->getName()));
сameraActorPreviewEnabled = true;
}

}
else
{
	if(m_cam != NULL)
	{



 Ogre::CompositorManager2 *compositorManager = Ogre::Root::getSingletonPtr()->getCompositorManager2();

      
        
		wp = m_cam->getName();
        if( !compositorManager->hasWorkspaceDefinition(wp) )
        {
			compositorManager->createBasicWorkspaceDef(wp,
				CfgManager::getSingleton().m_current_editor_schemme->backgroundColor
				, Ogre::IdString() );
        
		
		
		}
		
			//if(compositor_workspace_p != NULL)
			//compositorManager->removeWorkspace(compositor_workspace_p);
				
		//wxMessageBox(m_cam->getName());
			//compositorManager->removeAllWorkspaces();
            //compositorManager->removeAllWorkspaceDefinitions();
	

			compositor_workspace_p = compositorManager->addWorkspace( m_sm, m_rwin, m_cam, wp, true );  // m_cam - old editor camera for purpose rollingback by camera swich


//m_vp->setCamera(vpCamera);
сameraActorPreviewEnabled = false;
	}
textArea_3->setCaption("\n");
}

}
c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
c6burns
Beholder
Posts: 1512
Joined: Fri Feb 22, 2013 4:44 am
Location: Deep behind enemy lines
x 138

Re: [2.1] Camera swiching

Post by c6burns »

Kohedlo wrote: /* code by Wow-bomb game studios. Only for preview and evaluation/ Non commercial */
Good thing this clause is there otherwise someone could steal all this super valuable code :lol:
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

8) we protect from trolls :)
c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

Crash occours afer caling addWorkspace( method.
The method calls fine. Error occours with next frame update.
c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

c++ game developer.
current project: Imperial Game Engine 2.5
Image
User avatar
Kohedlo
Orc
Posts: 435
Joined: Fri Nov 27, 2009 3:34 pm
Location: Ukraine, Sumy
x 32
Contact:

Re: [2.1] Camera swiching

Post by Kohedlo »

all works fine. error on unexisted text panel at :

Code: Select all

textArea_3->setCaption("\n");
c++ game developer.
current project: Imperial Game Engine 2.5
Image
Post Reply