Switching SceneItems to smarts

This commit is contained in:
2023-11-12 23:02:11 -06:00
parent e540efb726
commit ba185e9fe4
124 changed files with 185 additions and 775 deletions

View File

@ -9,7 +9,7 @@
using namespace Dawn;
SimpleBillboardedMaterial::SimpleBillboardedMaterial(SceneItem *i) :
SimpleBillboardedMaterial::SimpleBillboardedMaterial(std::weak_ptr<SceneItem> i) :
Material(i)
{
}
@ -25,7 +25,7 @@ void SimpleBillboardedMaterial::onDispose() {
std::vector<struct ShaderPassItem>
SimpleBillboardedMaterial::getRenderPasses(IRenderableContext &context)
{
auto mesh = item->getComponent<MeshRenderer>();
auto mesh = item.lock()->getComponent<MeshRenderer>();
auto shader = getShaderManager().getShader<SimpleBillboardedShader>(this->shaderLock);
assertNotNull(mesh, "Mesh cannot be null");
@ -36,7 +36,7 @@ std::vector<struct ShaderPassItem>
onlyPass.mesh = mesh->mesh;
onlyPass.shader = shader;
onlyPass.colorValues[shader->paramColor] = this->color;
onlyPass.matrixValues[shader->paramModel] = item->getWorldTransform();
onlyPass.matrixValues[shader->paramModel] = item.lock()->getWorldTransform();
onlyPass.parameterBuffers[shader->bufferRenderPipeline] =
&context.renderPipeline->shaderBuffer
;

View File

@ -23,7 +23,7 @@ namespace Dawn {
*
* @param i Scene Item this interface belongs to.
*/
SimpleBillboardedMaterial(SceneItem *i);
SimpleBillboardedMaterial(std::weak_ptr<SceneItem> i);
void onStart() override;
void onDispose() override;

View File

@ -8,7 +8,7 @@
using namespace Dawn;
SimpleTexturedMaterial::SimpleTexturedMaterial(SceneItem *i) :
SimpleTexturedMaterial::SimpleTexturedMaterial(std::weak_ptr<SceneItem> i) :
Material(i)
{
}
@ -24,7 +24,7 @@ void SimpleTexturedMaterial::onDispose() {
std::vector<struct ShaderPassItem>
SimpleTexturedMaterial::getRenderPasses(IRenderableContext &context)
{
auto mesh = this->item->getComponent<MeshRenderer>();
auto mesh = this->item.lock()->getComponent<MeshRenderer>();
auto shader = getShaderManager()
.getShader<SimpleTexturedShader>(this->shaderLock)
;
@ -38,7 +38,7 @@ std::vector<struct ShaderPassItem>
onlyPass.shader = shader;
onlyPass.colorValues[shader->paramColor] = this->color;
onlyPass.matrixValues[shader->paramModel] =
item->getWorldTransform()
item.lock()->getWorldTransform()
;
onlyPass.parameterBuffers[
shader->bufferRenderPipeline

View File

@ -25,7 +25,7 @@ namespace Dawn {
*
* @param i Scene Item this interface belongs to.
*/
SimpleTexturedMaterial(SceneItem *i);
SimpleTexturedMaterial(std::weak_ptr<SceneItem> i);
void onStart() override;
void onDispose() override;