cPrefab::cPrefab(const cBlockArea & a_Image, int a_AllowedRotations) : m_Size(a_Image.GetSize()), m_AllowedRotations(a_AllowedRotations), m_MergeStrategy(cBlockArea::msOverwrite), m_ShouldExtendFloor(false), m_DefaultWeight(1), m_AddWeightIfSame(0), m_MoveToGround(false) { m_HitBox.p1.Set(0, 0, 0); m_HitBox.p2.Set(m_Size.x - 1, m_Size.y - 1, m_Size.z - 1); m_BlockArea[0].CopyFrom(a_Image); AddRotatedBlockAreas(); }
cPrefab::cPrefab(const cPrefab::sDef & a_Def) : m_Size(a_Def.m_SizeX, a_Def.m_SizeY, a_Def.m_SizeZ), m_HitBox( a_Def.m_HitboxMinX, a_Def.m_HitboxMinY, a_Def.m_HitboxMinZ, a_Def.m_HitboxMaxX, a_Def.m_HitboxMaxY, a_Def.m_HitboxMaxZ ), m_AllowedRotations(a_Def.m_AllowedRotations), m_MergeStrategy(a_Def.m_MergeStrategy), m_ShouldExtendFloor(a_Def.m_ShouldExtendFloor), m_DefaultWeight(a_Def.m_DefaultWeight), m_AddWeightIfSame(a_Def.m_AddWeightIfSame), m_MoveToGround(a_Def.m_MoveToGround) { m_BlockArea[0].Create(m_Size); CharMap cm; ParseCharMap(cm, a_Def.m_CharMap); ParseBlockImage(cm, a_Def.m_Image); ParseConnectors(a_Def.m_Connectors); ParseDepthWeight(a_Def.m_DepthWeight); AddRotatedBlockAreas(); }
void cPrefab::SetAllowedRotations(int a_AllowedRotations) { m_AllowedRotations = a_AllowedRotations; AddRotatedBlockAreas(); }