Jump to content

Raycast crash


choky10
 Share

Recommended Posts

Hello i have this code for my raycast.cpp:

But when i hit a entity with the IntersectOptions on int 12.

My game crash any idea why?

 

I use like this:

if (features::activateRaycast) {
			Entity target;
			Vector3 camPos = Position();
			Vector3 camDir = DirectionFromScreenCentre();

			auto ray = RaycastResult::Raycast(camPos, camDir, 20000.0f, IntersectOptions::Peds1, features::myPed());

			if (ray.DidHitEntity()) {
				auto hitEntity = ray.HitEntity();
				printf("Entity id: %d", hitEntity);
				
			}

		}

 

 

Raycast.cpp

RaycastResult::RaycastResult()
	: mResult(0), mDidHit(false)
{
}

RaycastResult::RaycastResult(const RaycastResult& handle)
	: mResult(handle.mResult), mDidHit(handle.mDidHit), mHitEntity(handle.mHitEntity), mHitCoords(handle.mHitCoords), mSurfaceNormal(handle.mSurfaceNormal)
{
}

RaycastResult::RaycastResult(int handle)
{
	int hitsomething = 0;
	int enthandle = 0;
	Vector3 hitCoords, surfaceNormal;

	this->mResult = SHAPETEST::GET_SHAPE_TEST_RESULT(handle, &hitsomething, &hitCoords, &surfaceNormal, &enthandle);

	this->mDidHit = hitsomething != 0;
	this->mHitCoords = hitCoords;
	this->mSurfaceNormal = surfaceNormal;

	if (ENTITY::DOES_ENTITY_EXIST(enthandle) && (ENTITY::IS_ENTITY_A_PED(enthandle) || ENTITY::IS_ENTITY_A_VEHICLE(enthandle) || ENTITY::IS_ENTITY_AN_OBJECT(enthandle)))
	{
		this->mHitEntity = enthandle;
	}
	else
	{
		this->mHitEntity = 0;

	}
}


int RaycastResult::Result()
{
	return this->mResult;
}
bool RaycastResult::DidHitEntity()
{
	return mHitEntity != 0;
}
bool RaycastResult::DidHitAnything()
{
	return this->mDidHit;
}
Entity RaycastResult::HitEntity()
{
	return this->mHitEntity;
}
Vector3 RaycastResult::HitCoords()
{
	return this->mHitCoords;
}
Vector3 RaycastResult::SurfaceNormal()
{
	return this->mSurfaceNormal;
}


RaycastResult RaycastResult::Raycast(const Vector3& source, const Vector3& target, IntersectOptions options, Entity ignoreEntity)
{
	return RaycastResult(SHAPETEST::_START_SHAPE_TEST_RAY(source.x, source.y, source.z, target.x, target.y, target.z, static_cast<int>(options), ignoreEntity, 7));
}
RaycastResult RaycastResult::Raycast(const Vector3& source, const Vector3& direction, float maxDistance, IntersectOptions options, Entity ignoreEntity)
{
	Vector3 target = source + (direction * maxDistance);
	return RaycastResult(SHAPETEST::_START_SHAPE_TEST_RAY(source.x, source.y, source.z, target.x, target.y, target.z, static_cast<int>(options), ignoreEntity, 7));
}

 

Link to comment
Share on other sites

2 hours ago, Lambda said:

12 is not a bitflag and as far as i know the option is a bitflag.

 

It might require bitflags but 12 is 1100b so it would just mean flag 3 and flag 4 are set.

Link to comment
Share on other sites

1 hour ago, LMS said:

 

It might require bitflags but 12 is 1100b so it would just mean flag 3 and flag 4 are set.

 

Thats true but multiflag caused alot headache in gta iv/v for me back in the days so i always avoid them, tested with his settings and they work fine for peds. Would be interesting to know if it crashes for him with any other flags.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...