Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Ketsji/KX_RaySensor.cpp
| Show First 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | KX_RaySensor::KX_RaySensor(class SCA_EventManager* eventmgr, | ||||
| int axis, | int axis, | ||||
| KX_Scene* ketsjiScene) | KX_Scene* ketsjiScene) | ||||
| : SCA_ISensor(gameobj,eventmgr), | : SCA_ISensor(gameobj,eventmgr), | ||||
| m_propertyname(propname), | m_propertyname(propname), | ||||
| m_bFindMaterial(bFindMaterial), | m_bFindMaterial(bFindMaterial), | ||||
| m_bXRay(bXRay), | m_bXRay(bXRay), | ||||
| m_distance(distance), | m_distance(distance), | ||||
| m_scene(ketsjiScene), | m_scene(ketsjiScene), | ||||
| m_axis(axis) | m_axis(axis), | ||||
| m_hitMaterial("") | |||||
| { | { | ||||
| Init(); | Init(); | ||||
| } | } | ||||
| void KX_RaySensor::Init() | void KX_RaySensor::Init() | ||||
| { | { | ||||
| m_bTriggered = (m_invert)?true:false; | m_bTriggered = (m_invert)?true:false; | ||||
| m_rayHit = false; | m_rayHit = false; | ||||
| ▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | if (bFound) | ||||
| m_hitPosition[0] = result->m_hitPoint[0]; | m_hitPosition[0] = result->m_hitPoint[0]; | ||||
| m_hitPosition[1] = result->m_hitPoint[1]; | m_hitPosition[1] = result->m_hitPoint[1]; | ||||
| m_hitPosition[2] = result->m_hitPoint[2]; | m_hitPosition[2] = result->m_hitPoint[2]; | ||||
| m_hitNormal[0] = result->m_hitNormal[0]; | m_hitNormal[0] = result->m_hitNormal[0]; | ||||
| m_hitNormal[1] = result->m_hitNormal[1]; | m_hitNormal[1] = result->m_hitNormal[1]; | ||||
| m_hitNormal[2] = result->m_hitNormal[2]; | m_hitNormal[2] = result->m_hitNormal[2]; | ||||
| m_hitMaterial = (client->m_auxilary_info ? (char*)client->m_auxilary_info : ""); | |||||
| } | } | ||||
| // no multi-hit search yet | // no multi-hit search yet | ||||
| return true; | return true; | ||||
| } | } | ||||
| /* this function is used to pre-filter the object before casting the ray on them. | /* this function is used to pre-filter the object before casting the ray on them. | ||||
| * This is useful for "X-Ray" option when we want to see "through" unwanted object. | * This is useful for "X-Ray" option when we want to see "through" unwanted object. | ||||
| */ | */ | ||||
| ▲ Show 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | PyAttributeDef KX_RaySensor::Attributes[] = { | ||||
| KX_PYATTRIBUTE_BOOL_RW("useMaterial", KX_RaySensor, m_bFindMaterial), | KX_PYATTRIBUTE_BOOL_RW("useMaterial", KX_RaySensor, m_bFindMaterial), | ||||
| KX_PYATTRIBUTE_BOOL_RW("useXRay", KX_RaySensor, m_bXRay), | KX_PYATTRIBUTE_BOOL_RW("useXRay", KX_RaySensor, m_bXRay), | ||||
| KX_PYATTRIBUTE_FLOAT_RW("range", 0, 10000, KX_RaySensor, m_distance), | KX_PYATTRIBUTE_FLOAT_RW("range", 0, 10000, KX_RaySensor, m_distance), | ||||
| KX_PYATTRIBUTE_STRING_RW("propName", 0, MAX_PROP_NAME, false, KX_RaySensor, m_propertyname), | KX_PYATTRIBUTE_STRING_RW("propName", 0, MAX_PROP_NAME, false, KX_RaySensor, m_propertyname), | ||||
| KX_PYATTRIBUTE_INT_RW("axis", 0, 5, true, KX_RaySensor, m_axis), | KX_PYATTRIBUTE_INT_RW("axis", 0, 5, true, KX_RaySensor, m_axis), | ||||
| KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitPosition", KX_RaySensor, m_hitPosition, 3), | KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitPosition", KX_RaySensor, m_hitPosition, 3), | ||||
| KX_PYATTRIBUTE_FLOAT_ARRAY_RO("rayDirection", KX_RaySensor, m_rayDirection, 3), | KX_PYATTRIBUTE_FLOAT_ARRAY_RO("rayDirection", KX_RaySensor, m_rayDirection, 3), | ||||
| KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitNormal", KX_RaySensor, m_hitNormal, 3), | KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitNormal", KX_RaySensor, m_hitNormal, 3), | ||||
| KX_PYATTRIBUTE_STRING_RO("hitMaterial", KX_RaySensor, m_hitMaterial), | |||||
| KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_RaySensor, pyattr_get_hitobject), | KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_RaySensor, pyattr_get_hitobject), | ||||
| { NULL } //Sentinel | { NULL } //Sentinel | ||||
| }; | }; | ||||
| PyObject *KX_RaySensor::pyattr_get_hitobject(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) | PyObject *KX_RaySensor::pyattr_get_hitobject(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) | ||||
| { | { | ||||
| KX_RaySensor* self = static_cast<KX_RaySensor*>(self_v); | KX_RaySensor* self = static_cast<KX_RaySensor*>(self_v); | ||||
| if (self->m_hitObject) | if (self->m_hitObject) | ||||
| return self->m_hitObject->GetProxy(); | return self->m_hitObject->GetProxy(); | ||||
| Py_RETURN_NONE; | Py_RETURN_NONE; | ||||
| } | } | ||||
| #endif // WITH_PYTHON | #endif // WITH_PYTHON | ||||