CameraAttachmentPtr CameraAttachment::New( EventThreadServices& eventThreadServices, const SceneGraph::Node& parentNode ) { CameraAttachmentPtr attachment( new CameraAttachment( eventThreadServices ) ); // Transfer object ownership of scene-object to message SceneGraph::CameraAttachment* sceneObject = CreateSceneObject(); AttachToNodeMessage( eventThreadServices.GetUpdateManager(), parentNode, sceneObject ); // Keep raw pointer for message passing attachment->mSceneObject = sceneObject; return attachment; }
LightAttachmentPtr LightAttachment::New( const SceneGraph::Node& parentNode ) { StagePtr stage = Stage::GetCurrent(); LightAttachmentPtr attachment( new LightAttachment( *stage ) ); // Transfer object ownership of scene-object to message SceneGraph::LightAttachment* sceneObject = SceneGraph::LightAttachment::New(); sceneObject->SetLight( attachment->mCachedLight ); AttachToNodeMessage( stage->GetUpdateManager(), parentNode, sceneObject ); // Keep raw pointer for message passing attachment->mSceneObject = sceneObject; return attachment; }
TextAttachmentPtr TextAttachment::New( const SceneGraph::Node& parentNode, const TextArray& text, FontPointer font, bool isLeftToRight ) { StagePtr stage = Stage::GetCurrent(); TextAttachmentPtr attachment( new TextAttachment( *stage ) ); // Second-phase construction attachment->mFont = font; attachment->mText = text; attachment->mIsLeftToRight = isLeftToRight; // Transfer object ownership of scene-object to message SceneGraph::TextAttachment* sceneObject = SceneGraph::TextAttachment::New(); AttachToNodeMessage( stage->GetUpdateManager(), parentNode, sceneObject ); // Keep raw pointer for message passing attachment->mSceneObject = sceneObject; attachment->SetSmoothEdge(attachment->mSmoothing); // adjust smoothedge for font weight return attachment; }