| 139 | } |
| 140 | |
| 141 | dmGameObject::CreateResult CompCameraCreate(const dmGameObject::ComponentCreateParams& params) |
| 142 | { |
| 143 | CameraWorld* w = (CameraWorld*)params.m_World; |
| 144 | if (w->m_Cameras.Full()) |
| 145 | { |
| 146 | ShowFullBufferError("Camera", MAX_COUNT); |
| 147 | return dmGameObject::CREATE_RESULT_UNKNOWN_ERROR; |
| 148 | } |
| 149 | |
| 150 | dmRender::RenderContext* render_context = (dmRender::RenderContext*)params.m_Context; |
| 151 | dmGameSystem::CameraResource* cam_resource = (CameraResource*)params.m_Resource; |
| 152 | CameraComponent camera; |
| 153 | camera.m_Instance = params.m_Instance; |
| 154 | camera.m_World = w; |
| 155 | camera.m_AddedToUpdate = 0; |
| 156 | camera.m_ComponentIndex = params.m_ComponentIndex; |
| 157 | camera.m_RenderCamera = dmRender::NewRenderCamera(render_context); |
| 158 | |
| 159 | dmRender::RenderCameraData camera_data = {}; |
| 160 | camera_data.m_Viewport = dmVMath::Vector4(0.0f, 0.0f, 1.0f, 1.0f); |
| 161 | camera_data.m_AspectRatio = cam_resource->m_DDF->m_AspectRatio; |
| 162 | camera_data.m_Fov = cam_resource->m_DDF->m_Fov; |
| 163 | camera_data.m_NearZ = cam_resource->m_DDF->m_NearZ; |
| 164 | camera_data.m_FarZ = cam_resource->m_DDF->m_FarZ; |
| 165 | camera_data.m_AutoAspectRatio = cam_resource->m_DDF->m_AutoAspectRatio != 0; |
| 166 | camera_data.m_OrthographicProjection = cam_resource->m_DDF->m_OrthographicProjection != 0; |
| 167 | camera_data.m_OrthographicZoom = cam_resource->m_DDF->m_OrthographicZoom; |
| 168 | camera_data.m_OrthographicMode = (uint8_t)cam_resource->m_DDF->m_OrthographicMode; |
| 169 | |
| 170 | dmMessage::URL camera_url = CameraToURL(&camera); |
| 171 | SetRenderCameraURL(render_context, camera.m_RenderCamera, &camera_url); |
| 172 | SetRenderCameraData(render_context, camera.m_RenderCamera, &camera_data); |
| 173 | CompCameraUpdateViewProjection(&camera, render_context); |
| 174 | |
| 175 | w->m_Cameras.Push(camera); |
| 176 | CameraComponent* new_camera = &w->m_Cameras[w->m_Cameras.Size() - 1]; |
| 177 | |
| 178 | *params.m_UserData = (uintptr_t) new_camera; |
| 179 | |
| 180 | CameraStackPush(w, new_camera); |
| 181 | dmRender::SetRenderCameraEnabled(render_context, camera.m_RenderCamera, true); |
| 182 | |
| 183 | return dmGameObject::CREATE_RESULT_OK; |
| 184 | } |
| 185 | |
| 186 | void* CompCameraGetComponent(const dmGameObject::ComponentGetParams& params) |
| 187 | { |
nothing calls this directly
no test coverage detected