void ChContactSurfaceNodeCloud::AddNode(std::shared_ptr<ChNodeFEAxyzrot> mnode, const double point_radius) { if (!mnode) return; auto newp = std::make_shared<ChContactNodeXYZROTsphere>(mnode.get(), this); newp->GetCollisionModel()->AddPoint(point_radius); newp->GetCollisionModel()->BuildModel(); // will also add to system, if collision is on. this->vnodes_rot.push_back(newp); }
//----------------------------------------------------------------------------- // Places Static Props in the level //----------------------------------------------------------------------------- static void AddStaticPropToLump( StaticPropBuild_t const& build ) { // Get the collision model CPhysCollide* pConvexHull = GetCollisionModel( build.m_pModelName ); if (!pConvexHull) return; // Compute the leaves the static prop's convex hull hits CUtlVector< unsigned short > leafList; ComputeStaticPropLeaves( pConvexHull, build.m_Origin, build.m_Angles, leafList ); if ( !leafList.Count() ) { Warning( "Static prop %s outside the map (%.2f, %.2f, %.2f)\n", build.m_pModelName, build.m_Origin.x, build.m_Origin.y, build.m_Origin.z ); return; } // Insert an element into the lump data... int i = s_StaticPropLump.AddToTail( ); StaticPropLump_t& propLump = s_StaticPropLump[i]; propLump.m_PropType = AddStaticPropDictLump( build.m_pModelName ); VectorCopy( build.m_Origin, propLump.m_Origin ); VectorCopy( build.m_Angles, propLump.m_Angles ); propLump.m_FirstLeaf = s_StaticPropLeafLump.Count(); propLump.m_LeafCount = leafList.Count(); propLump.m_Solid = build.m_Solid; propLump.m_Skin = build.m_Skin; propLump.m_Flags = build.m_Flags; if (build.m_FadesOut) propLump.m_Flags |= STATIC_PROP_FLAG_FADES; propLump.m_FadeMinDist = build.m_FadeMinDist; propLump.m_FadeMaxDist = build.m_FadeMaxDist; propLump.m_flForcedFadeScale = build.m_flForcedFadeScale; if (build.m_pLightingOrigin && *build.m_pLightingOrigin) { if (ComputeLightingOrigin( build, propLump.m_LightingOrigin )) { propLump.m_Flags |= STATIC_PROP_USE_LIGHTING_ORIGIN; } } // Add the leaves to the leaf lump for (int j = 0; j < leafList.Size(); ++j) { StaticPropLeafLump_t insert; insert.m_Leaf = leafList[j]; s_StaticPropLeafLump.AddToTail( insert ); } }