ContactPair^ ContactPair::ToManaged(const PxContactPair& pair) { ContactPair^ managedPair = gcnew ContactPair(); managedPair->Shapes = gcnew array<Shape^>(2); managedPair->Shapes[0] = ObjectTable::TryGetObject<Shape^>((intptr_t)pair.shapes[0]); managedPair->Shapes[1] = ObjectTable::TryGetObject<Shape^>((intptr_t)pair.shapes[1]); managedPair->ContactCount = pair.contactCount; managedPair->Flags = ToManagedEnum(ContactPairFlag, pair.flags); managedPair->Events = ToManagedEnum(PairFlag, pair.events); return managedPair; }
ContactPairHeader^ ContactPairHeader::ToManaged(const PxContactPairHeader& unmanaged) { ContactPairHeader^ managed = gcnew ContactPairHeader(); managed->Actors = gcnew array<Actor^>(2); managed->Actors[0] = ObjectTable::TryGetObject<Actor^>((intptr_t)unmanaged.actors[0]); managed->Actors[1] = ObjectTable::TryGetObject<Actor^>((intptr_t)unmanaged.actors[1]); managed->Flags = ToManagedEnum(ContactPairHeaderFlag, unmanaged.flags); return managed; }
TriangleMeshGeometry^ TriangleMeshGeometry::ToManaged(PxTriangleMeshGeometry triangleMesh) { TriangleMeshGeometry^ g = gcnew TriangleMeshGeometry(); g->Scale = MeshScale::ToManaged(triangleMesh.scale); g->MeshFlags = ToManagedEnum(MeshGeometryFlag, triangleMesh.meshFlags); g->TriangleMesh = triangleMesh.triangleMesh == NULL ? nullptr : ObjectTable::GetObject<PhysX::TriangleMesh^>((intptr_t)triangleMesh.triangleMesh); // TODO: paddingFromFlags return g; }
ConvexMeshDesc^ ConvexMeshDesc::ToManaged(PxConvexMeshDesc desc) { auto d = gcnew ConvexMeshDesc(); if (desc.triangles.stride == sizeof(short)) d->_triangles = Util::AsManagedArray<short>((void*)desc.triangles.data, desc.triangles.count); else if (desc.triangles.stride == sizeof(int)) d->_triangles = Util::AsManagedArray<int>((void*)desc.triangles.data, desc.triangles.count); d->_positions = Util::AsManagedArray<Vector3>((void*)desc.points.data, desc.points.count); d->Flags = ToManagedEnum(ConvexFlag, desc.flags); return d; }
ContactPairHeader^ ContactPairHeader::ToManaged(PxContactPairHeader unmanaged) { auto managed = gcnew ContactPairHeader(); managed->Actor0 = ObjectTable::TryGetObject<RigidActor^>((intptr_t)unmanaged.actors[0]); managed->Actor1 = ObjectTable::TryGetObject<RigidActor^>((intptr_t)unmanaged.actors[1]); managed->ExtraData = (unmanaged.extraDataStream == NULL) ? nullptr : Util::AsManagedArray<Byte>(unmanaged.extraDataStream, unmanaged.extraDataStreamSize); managed->Flags = ToManagedEnum(ContactPairHeaderFlag, unmanaged.flags); return managed; }
ContactPair::ContactPair(PxContactPair* pair) { ThrowIfNull(pair, "pair"); _pair = pair; this->Shape0 = ObjectTable::TryGetObject<Shape^>((intptr_t)pair->shapes[0]); this->Shape1 = ObjectTable::TryGetObject<Shape^>((intptr_t)pair->shapes[1]); this->ContactData = (pair->contactStream == NULL) ? nullptr : Util::AsManagedArray<Byte>(pair->contactStream, pair->contactStreamSize); this->RequiredBufferSize = pair->requiredBufferSize; this->ContactCount = pair->contactCount; this->Flags = ToManagedEnum(ContactPairFlag, pair->flags); }
CapsuleClimbingMode CapsuleController::ClimbingMode::get() { return ToManagedEnum(CapsuleClimbingMode, this->UnmanagedPointer->getClimbingMode()); }
PhysX::DataAccessFlag ParticleReadData::DataAccessFlag::get() { return ToManagedEnum(PhysX::DataAccessFlag, this->UnmanagedPointer->getDataAccessFlags()); }