I have a pretty weird error : Error: mutable method isolated.graphics.g3d.model.Model.begin is not callable using a const object

The weird part is that i do not use const or immutable objects in my code ( for the Model ) :
struct Handle {
        Model *asset = null;
        string asset_name = null;
                
        alias asset this;
                
        @property bool initialized() {
                return asset !is null;
        }
                
        this(this) {
                (*referenceCount)++;
        }
                
        ~this() {
                (*referenceCount)--;
        }
        
        size_t *referenceCount;
}

This structure is where the reference is kept ( allocated with c's malloc )
Then in my code, i have a loop as such :
ModelInstance[][Handle] instances;

foreach(ref model, ref instances; this.instances) {
        model.begin();
        foreach(instance; instances) {
                instance.render();
        }
        model.end();
}

But for both model.begin or model.end i get that compilation error.

As you can see, i am calling model.begin ( which extends to model.asset.begin ) but no const instances are used.

Side note :
When i remove the ref in the for loop :
foreach(model, ref instances; this.instances)

The codes compile and work, i don't understand why being a reference or not is a problem.

Reply via email to