MCPcopy Create free account
hub / github.com/defold/defold / CompCameraCreate

Function CompCameraCreate

engine/gamesys/src/gamesys/components/comp_camera.cpp:141–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 12

ShowFullBufferErrorFunction · 0.85
NewRenderCameraFunction · 0.85
CameraToURLFunction · 0.85
SetRenderCameraURLFunction · 0.85
SetRenderCameraDataFunction · 0.85
CameraStackPushFunction · 0.85
SetRenderCameraEnabledFunction · 0.85
Vector4Class · 0.50
FullMethod · 0.45
PushMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected