public GameObject ScreenPointToRaySingleHitBullet(Camera cam, Vector3 pointerCoords) { CollisionObject hitCo = BCamera.ScreenPointToRay(cam, pointerCoords, CollisionFilterGroups.SensorTrigger, CollisionFilterGroups.DefaultFilter); if (hitCo != null && hitCo.UserObject is BCollisionObject) { BCollisionObject hitBCo = (BCollisionObject)hitCo.UserObject as BCollisionObject; return(hitBCo.gameObject); } else { return(null); } }
public override void OnInspectorGUI() { BCollisionObject obj = (BCollisionObject)target; obj.collisionFlags = BCollisionObjectEditor.RenderEnumMaskCollisionFlagsField(gcCollisionFlags, obj.collisionFlags); obj.groupsIBelongTo = BCollisionObjectEditor.RenderEnumMaskCollisionFilterGroupsField(gcGroupsIBelongTo, obj.groupsIBelongTo); obj.collisionMask = BCollisionObjectEditor.RenderEnumMaskCollisionFilterGroupsField(gcCollisionMask, obj.collisionMask); if (GUI.changed) { EditorUtility.SetDirty(obj); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); Undo.RecordObject(obj, "Undo Rigid Body"); } }
public bool AddCollisionObject(BCollisionObject co) { if (!isDisposed) { if (co is BRigidBody) { return(AddRigidBody((BRigidBody)co)); } else if (co is BSoftBody) { return(AddSoftBody((BSoftBody)co)); } if (physicWorldParameters.debugType >= BDebug.DebugType.Debug) { Debug.LogFormat("Adding collision object {0} to world", co); } if (co._BuildCollisionObject()) { _world.AddCollisionObject(co.GetCollisionObject(), co.groupsIBelongTo, co.collisionMask); co.isInWorld = true; if (ghostPairCallback == null && co is BGhostObject && DWorld != null) { ghostPairCallback = new GhostPairCallback(); DWorld.PairCache.SetInternalGhostPairCallback(ghostPairCallback); } if (co is BCharacterController && DWorld != null) { AddAction(((BCharacterController)co).GetKinematicCharacterController()); } } return(true); } return(false); }