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");
        }
    }
Пример #3
0
    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);
    }