MCPcopy Create free account
hub / github.com/ZDoom/gzdoom / InitModels

Function InitModels

src/r_data/models.cpp:621–702  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

619void ParseModelDefLump(int Lump);
620
621void InitModels()
622{
623 Models.DeleteAndClear();
624 SpriteModelFrames.Clear();
625 SpriteModelHash.Clear();
626
627 // First, create models for each voxel
628 for (unsigned i = 0; i < Voxels.Size(); i++)
629 {
630 FVoxelModel *md = new FVoxelModel(Voxels[i], false);
631 Voxels[i]->VoxelIndex = Models.Push(md);
632 }
633 // now create GL model frames for the voxeldefs
634 for (unsigned i = 0; i < VoxelDefs.Size(); i++)
635 {
636 FVoxelModel *md = (FVoxelModel*)Models[VoxelDefs[i]->Voxel->VoxelIndex];
637 FSpriteModelFrame smf;
638 memset(&smf, 0, sizeof(smf));
639 smf.isVoxel = true;
640 smf.modelsAmount = 1;
641 smf.modelframes.Alloc(1);
642 smf.modelframes[0] = -1;
643 smf.modelIDs.Alloc(1);
644 smf.modelIDs[0] = VoxelDefs[i]->Voxel->VoxelIndex;
645 smf.skinIDs.Alloc(1);
646 smf.skinIDs[0] = md->GetPaletteTexture();
647 smf.animationIDs.Alloc(1);
648 smf.animationIDs[0] = -1;
649 smf.xscale = smf.yscale = smf.zscale = VoxelDefs[i]->Scale;
650 smf.angleoffset = VoxelDefs[i]->AngleOffset.Degrees();
651 smf.xoffset = VoxelDefs[i]->xoffset;
652 smf.yoffset = VoxelDefs[i]->yoffset;
653 smf.zoffset = VoxelDefs[i]->zoffset;
654 // this helps catching uninitialized data.
655 assert(VoxelDefs[i]->PitchFromMomentum == true || VoxelDefs[i]->PitchFromMomentum == false);
656 if (VoxelDefs[i]->PitchFromMomentum) smf.flags |= MDL_PITCHFROMMOMENTUM;
657 if (VoxelDefs[i]->UseActorPitch) smf.flags |= MDL_USEACTORPITCH;
658 if (VoxelDefs[i]->UseActorRoll) smf.flags |= MDL_USEACTORROLL;
659 if (VoxelDefs[i]->PlacedSpin != 0)
660 {
661 smf.yrotate = 1.f;
662 smf.rotationSpeed = VoxelDefs[i]->PlacedSpin / 55.55f;
663 smf.flags |= MDL_ROTATING;
664 }
665 VoxelDefs[i]->VoxeldefIndex = SpriteModelFrames.Push(smf);
666 if (VoxelDefs[i]->PlacedSpin != VoxelDefs[i]->DroppedSpin)
667 {
668 if (VoxelDefs[i]->DroppedSpin != 0)
669 {
670 smf.yrotate = 1.f;
671 smf.rotationSpeed = VoxelDefs[i]->DroppedSpin / 55.55f;
672 smf.flags |= MDL_ROTATING;
673 }
674 else
675 {
676 smf.yrotate = 0;
677 smf.rotationSpeed = 0;
678 smf.flags &= ~MDL_ROTATING;

Callers 1

R_InitSpritesFunction · 0.85

Calls 12

ParseModelDefLumpFunction · 0.85
ModelFrameHashFunction · 0.85
DeleteAndClearMethod · 0.80
GetPaletteTextureMethod · 0.80
DegreesMethod · 0.80
FindLumpMethod · 0.80
ClearMethod · 0.45
SizeMethod · 0.45
PushMethod · 0.45
AllocMethod · 0.45
ResizeMethod · 0.45
DataMethod · 0.45

Tested by

no test coverage detected