MCPcopy Create free account
hub / github.com/ZDoom/Raze / InitializeDefaults

Method InitializeDefaults

source/core/actorinfo.cpp:162–214  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160//==========================================================================
161
162void PClassActor::InitializeDefaults()
163{
164 if (IsDescendantOf(RUNTIME_CLASS(DCoreActor)))
165 {
166 assert(Defaults == nullptr);
167 Defaults = (uint8_t*)M_Malloc(Size);
168
169 ConstructNative(Defaults);
170 // We must unlink the defaults from the class list because it's just a static block of data to the engine.
171 DObject* optr = (DObject*)Defaults;
172 GC::Root = optr->ObjNext;
173 optr->ObjNext = nullptr;
174 optr->SetClass(this);
175
176 // Copy the defaults from the parent but leave the DObject part alone because it contains important data.
177 if (ParentClass->Defaults != nullptr)
178 {
179 memcpy(Defaults + sizeof(DObject), ParentClass->Defaults + sizeof(DObject), ParentClass->Size - sizeof(DObject));
180 if (Size > ParentClass->Size)
181 {
182 memset(Defaults + ParentClass->Size, 0, Size - ParentClass->Size);
183 }
184 }
185 else
186 {
187 memset(Defaults + sizeof(DObject), 0, Size - sizeof(DObject));
188 }
189
190 assert(MetaSize >= ParentClass->MetaSize);
191 if (MetaSize != 0)
192 {
193 Meta = (uint8_t*)M_Malloc(MetaSize);
194
195 // Copy the defaults from the parent but leave the DObject part alone because it contains important data.
196 if (ParentClass->Meta != nullptr)
197 {
198 memcpy(Meta, ParentClass->Meta, ParentClass->MetaSize);
199 if (MetaSize > ParentClass->MetaSize)
200 {
201 memset(Meta + ParentClass->MetaSize, 0, MetaSize - ParentClass->MetaSize);
202 }
203 }
204 else
205 {
206 memset(Meta, 0, MetaSize);
207 }
208
209 if (MetaSize > 0) memcpy(Meta, ParentClass->Meta, ParentClass->MetaSize);
210 else memset(Meta, 0, MetaSize);
211 }
212 }
213 PClass::InitializeDefaults();
214}
215
216//==========================================================================
217//

Callers 2

FinalizeSetupMethod · 0.45
InitDefaultsMethod · 0.45

Calls 2

M_MallocFunction · 0.85
SetClassMethod · 0.80

Tested by

no test coverage detected