Пример #1
0
def on_event(id, event):
    global ITEM_SPACING
    if (event.GetType() == "ContainerInputEvent"):
        if (event.mContainerID == id):
            #audio = fge.GetAudio(id)
            #audio.Load("GameDeliver01.mp3", False)
            #audio.Play()
            #audio.Volume(0.1)
            playerHands = fge.GetCarrier(event.mPlayerID)
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            blockContainer = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                blockContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemScale = itemTransform.GetLocalScale()
                itemTransform.SetLocalPosition(0.0, 0.5 + 0.5 * itemScale[1],
                                               0.0)
Пример #2
0
def on_event(id, event):
    global ITEM_SPACING
    if (event.GetType() == "ContainerInputEvent"):
        if (event.mContainerID == id):
            audio = fge.GetAudio(id)
            audio.Load("GameDeliver01.mp3", False)
            audio.Play()
            audio.Volume(0.1)
            playerHands = fge.GetCarrier(event.mPlayerID)
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            processorContainer = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                containerLen = len(processorContainer.GetItems())
                processorContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                if (containerLen % 2) == 0:
                    itemTransform.SetLocalPosition(
                        0, 1.25,
                        math.ceil(containerLen / 2.0) * ITEM_SPACING)
                else:
                    itemTransform.SetLocalPosition(
                        0, 1.25,
                        -1 * math.ceil(containerLen / 2.0) * ITEM_SPACING)
Пример #3
0
def on_update(id, dt):
    processor = fge.GetProcessor(id)
    processorContainer = fge.GetCarrier(id)
    processorRecipes = processor.GetRecipes()
    for recipe in processorRecipes:
        recipeMap = recipe[1]
        recipeOutput = recipe[0]
        recipeMatch = True
        for resource in recipeMap:
            recipeMatch = recipeMatch and (len(
                processorContainer.GetItems(fge.DecodeResource(resource)))
                                           == recipeMap[resource])
        if (recipeMatch):
            recipeMatchEvent = fge.GetRecipeMatchEvent()
            recipeMatchEvent.mProcessorID = id
            recipeMatchEvent.mOutput = recipeOutput
            fge.SendEvent(recipeMatchEvent, id)
    if (processor.IsWorking()):
        t = processor.GetCurrentProcessingTime(
        ) / processor.GetMaxProcessingTime()
        processorContainer = fge.GetCarrier(id)
        itemIDs = processorContainer.GetItems()
        for itemID in itemIDs:
            itemTransform = fge.GetTransform(itemID)
            itemPosition = itemTransform.GetLocalPosition()
            x = (t - 1.0) * itemPosition[0]
            y = (t - 1.0) * itemPosition[1] + 1.25 * t
            z = (t - 1.0) * itemPosition[2]
            itemTransform.SetLocalPosition(x, y, z)
Пример #4
0
def on_update(id, dt):
    ob = fge.GetObserver(id)
    resource = fge.DecodeResource(int(ob.GetValue("resource")))
    cellContainer = fge.GetCarrier(id)
    cellItems = fge.GetCarrier(id).GetItems()
    for item in cellItems:
        if resource == fge.GetType(item):
            animator = fge.GetAnimator(item)
            if animator is not None:
                animator.ChangeState("Float")
Пример #5
0
def on_event(id, event):
    if (event.GetType() == "PlayerPickupEvent"):
        if (event.mPlayerID == id):
            audio = fge.GetAudio(id)
            audio.Load("cartoon_jump-002.wav")
            audio.Play()
            audio.Volume(0.1)
            itemID = event.mItemID
            playerHands = fge.GetCarrier(id)
            itemBody = fge.GetBody(itemID)
            if (itemBody is None):
                itemBody = fge.GetRuntimeBody(itemID)
            itemBody.mConstrainX = True
            itemBody.mConstrainY = True
            itemBody.mConstrainZ = True
            playerHands.AddItem(itemID)
            playerScale = fge.GetTransform(id).GetScale()
            itemCollider = fge.GetCollider(itemID)
            if (itemCollider is None):
                itemCollider = fge.GetRuntimeCollider(itemID)
            itemCollider.mIsTrigger = True
            itemTransform = fge.GetTransform(itemID)
            if (itemTransform is None):
                itemTransform = fge.GetRuntimeTransform(itemID)
            itemScale = itemTransform.GetScale()
            itemTransform.SetLocalPosition(
                0.0, playerScale[1] * 0.5,
                0.5 + (itemScale[2] / playerScale[2]) / 2.0)
Пример #6
0
def on_event(id, event):
    global opName
    global counter
    if (event.GetType() == "ContainerOutputEvent"):
        if (event.mContainerID == id):
            processorContainer = fge.GetCarrier(id)
            items = processorContainer.GetItems()
            items.reverse()
            outputItems = items[:event.mNumItems]
            for itemID in outputItems:
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = False
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = False
                itemBody.mConstrainY = False
                itemBody.mConstrainZ = False
                processorContainer.RemoveItem(itemID)
                pickupEvent = fge.GetPlayerPickupEvent()
                pickupEvent.mPlayerID = event.mPlayerID
                pickupEvent.mItemID = itemID
                fge.SendEvent(pickupEvent, event.mPlayerID)
                item = fge.GetType(itemID)
                if (item == opName and counter == 0):
                    particleEmitter = fge.GetParticles(id)
                    particleEmitter.SetRunning(True)
                    counter += 1
    if (event.GetType() == "RecipeMatchEvent"):
        if (event.mProcessorID == id):
            processor = fge.GetProcessor(id)
            opName = fge.DecodeResource(event.mOutput)
            counter = 0
Пример #7
0
def on_event(id, event):
    global GRID_ID
    if (event.GetType() == "SetCellEvent"):
        GRID_ID = event.mGridID
    if (event.GetType() == "ContainerOutputEvent"):
        if (event.mContainerID == id):
            cellContainer = fge.GetCarrier(id)
            items = cellContainer.GetItems()
            items.reverse()
            outputItems = items[:event.mNumItems]
            for itemID in outputItems:
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = False
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = False
                itemBody.mConstrainY = False
                itemBody.mConstrainZ = False
                animator = fge.GetAnimator(itemID)
                if animator is not None:
                    animator.ChangeState("None")
                cellContainer.RemoveItem(itemID)
                pickupEvent = fge.GetPlayerPickupEvent()
                pickupEvent.mPlayerID = event.mPlayerID
                pickupEvent.mItemID = itemID
                fge.SendEvent(pickupEvent, event.mPlayerID)
            if len(cellContainer.GetItems()) == 0:
                cellUpdateEvent = fge.GetCellUpdateEvent()
                cellUpdateEvent.mMatch = False
                cellUpdateEvent.mCellID = id
                cellUpdateEvent.mPlayerID = event.mPlayerID
                fge.SendEvent(cellUpdateEvent, GRID_ID)
Пример #8
0
def on_event(id, event):
    #print(event.GetType())
    if (event.GetType() == "SetCellEvent"):
        resource = event.mResource
        ob = fge.GetObserver(id)
        ob.SetValue("resource", resource)
        cellResource = fge.DecodeResource(resource)
        cellModel = fge.GetModel(id)
        if cellResource == "ProgrammingResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Programming")
        if cellResource == "ArtResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Art")
        if cellResource == "DesignResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Design")
        if cellResource == "PhysicsResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Physics")
        if cellResource == "AudioResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Audio")
        if cellResource == "AIResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "AI")
        if cellResource == "GraphicsResource":
            cellModel.mpMaterial = ResourceManager.GetInstance().LoadMaterial(
                "Graphics")
    if (event.GetType() == "CreateGameEvent"):
        cellContainer = fge.GetCarrier(id)
        items = cellContainer.GetItems()
        for itemID in items:
            cellContainer.RemoveItem(itemID)
            fge.DeleteEntity(itemID)
Пример #9
0
def on_event(id,event):
    global GRID_ID
    if(event.GetType() == "SetCellEvent"):
        GRID_ID = event.mGridID
    if(event.GetType() == "ContainerInputEvent"):
        if(event.mContainerID == id):	
            playerHands = fge.GetCarrier(event.mPlayerID)	
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            cellContainer = fge.GetCarrier(id)
            cellTransform = fge.GetTransform(id)
            cellPosition = cellTransform.GetPosition()
            cellScale = cellTransform.GetScale()
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                containerLen = len(cellContainer.GetItems())
                cellContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemScale = itemTransform.GetScale()
                itemTransform.SetPosition(cellPosition[0], cellPosition[1] + 0.5 * itemScale[1] + 0.5 * cellScale[1], cellPosition[2])
            ob = fge.GetObserver(id)
            resource = fge.DecodeResource(int(ob.GetValue("resource")))
            if len(inputItems) > 0:
                if resource == fge.GetType(inputItems[0]):
                    itemTransform = fge.GetTransform(inputItems[0])
                    itemScale = itemTransform.GetScale()
                    itemTransform.SetPosition(cellPosition[0], cellPosition[1] + 0.5 * itemScale[1]  + 0.5 * cellScale[1] + 1.0, cellPosition[2])
                    cellUpdateEvent = fge.GetCellUpdateEvent()
                    cellUpdateEvent.mMatch = True
                    cellUpdateEvent.mCellID = id
                    cellUpdateEvent.mPlayerID = event.mPlayerID
                    fge.SendEvent(cellUpdateEvent, GRID_ID)
                    audio = fge.GetAudio(id)
                    audio.Load("GameDeliver01.mp3", False)
                    audio.Play()	
                    audio.Volume(0.1)
                    EntityManager.GetInstance().ToggleEntityEnable(id, False)
Пример #10
0
def on_event(id,event):
    if(event.GetType() == "ContainerInputEvent"):
        if(event.mContainerID == id):
            playerHands = fge.GetCarrier(event.mPlayerID)		
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            container = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                container.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemTransform.SetLocalPosition(0, -4, 0)
Пример #11
0
def on_update(id, dt):
    container = fge.GetCarrier(id)
    if(len(container.GetItems("FPS")) > 0):
        requestFilledEvent = fge.GetRequestFilledEvent()
        requestFilledEvent.mContainerID = id
        requestFilledEvent.mRequestUIID = REQUEST_UI_ID
        fge.BroadcastEvent(requestFilledEvent)
        containerOutputEvent = fge.GetContainerOutputEvent()
        containerOutputEvent.mContainerID = id
        containerOutputEvent.mPlayerID = -1
        containerOutputEvent.mNumItems = 1
        containerOutputEvent.mItemTypes = [ "FPS" ]
        fge.SendEvent(containerOutputEvent, id)
Пример #12
0
def on_update(id, dt):
    global RECIPE
    global OUTPUT
    processorContainer = fge.GetCarrier(id)
    recipeMatch = True
    for resource in RECIPE:
        recipeMatch = recipeMatch and (len(
            processorContainer.GetItems(resource)) == RECIPE[resource])
    if (recipeMatch):
        recipeMatchEvent = fge.GetRecipeMatchEvent()
        recipeMatchEvent.mProcessorID = id
        tmpOutput = []
        for resource in OUTPUT:
            tmpOutput.append((resource, OUTPUT[resource]))
        recipeMatchEvent.mOutputTypeQuantity = tmpOutput
        fge.SendEvent(recipeMatchEvent, id)
Пример #13
0
def on_event(id, event):
    if (event.GetType() == "PlayerDropEvent"):
        if (event.mPlayerID == id):
            playerHands = fge.GetCarrier(id)
            heldItems = playerHands.GetItems()
            for itemID in heldItems:
                audio = fge.GetAudio(id)
                audio.Load("cartoon_fall-002.wav")
                audio.Play()
                audio.Volume(0.1)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = False
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = False
                itemBody.mConstrainY = False
                itemBody.mConstrainZ = False
            playerHands.Void()
Пример #14
0
def on_event(id, event):
    if (event.GetType() == "ContainerOutputEvent"):
        if (event.mContainerID == id):
            numItems = event.mNumItems
            itemTypes = event.mItemTypes
            container = fge.GetCarrier(id)
            for itemType in itemTypes:
                items = container.GetItems(itemType)
                outputItems = items[:numItems]
                numItems = numItems - len(outputItems)
                for item in items:
                    fge.DeleteEntity(item)
            if (len(itemTypes) == 0):
                items = container.GetItems()
                outputItems = items[:numItems]
                for item in items:
                    fge.DeleteEntity(item)
Пример #15
0
def on_event(id, event):
    if (event.GetType() == "ContainerOutputEvent"):
        if (event.mContainerID == id):
            blockContainer = fge.GetCarrier(id)
            items = blockContainer.GetItems()
            items.reverse()
            outputItems = items[:event.mNumItems]
            for itemID in outputItems:
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = False
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = False
                itemBody.mConstrainY = False
                itemBody.mConstrainZ = False
                blockContainer.RemoveItem(itemID)
                pickupEvent = fge.GetPlayerPickupEvent()
                pickupEvent.mPlayerID = event.mPlayerID
                pickupEvent.mItemID = itemID
                fge.SendEvent(pickupEvent, event.mPlayerID)
Пример #16
0
def on_update(id, dt):
    transform = fge.GetTransform(id)
    position = transform.GetPosition()
    if (position[1] < -10.0):
        carrier = fge.GetCarrier(id)
        if (carrier is not None):
            items = carrier.GetItems()
            carrier.Void()
            for item in items:
                if (fge.GetType(item) == "Game"):
                    resetGridEvent = fge.GetResetGridEvent()
                    fge.BroadcastEvent(resetGridEvent)
                fge.DeleteEntity(item)
        ob = fge.GetObserver(id)
        transform.SetPosition(ob.GetValue("resetX"), ob.GetValue("resetY"), ob.GetValue("resetZ"))
        transform.SetRotation(0.0, 0.0, 0.0)
        player = fge.GetPlayer(id)
        player.Rotate(0.0)
        body = fge.GetBody(id)
        if (body is not None):
            body.SetVelocity(0.0, 0.0, 0.0)
Пример #17
0
def on_update(id, dt):
    ob = fge.GetObserver(id)
    gameInt = int(ob.GetValue("game"))
    container = fge.GetCarrier(id)
    if (len(container.GetItems("Game")) > 0):
        requestFilledEvent = fge.GetRequestFilledEvent()
        requestFilledEvent.mContainerID = id
        requestFilledEvent.mRequestedGame = gameInt
        fge.BroadcastEvent(requestFilledEvent)
        containerOutputEvent = fge.GetContainerOutputEvent()
        containerOutputEvent.mContainerID = id
        containerOutputEvent.mPlayerID = -1
        containerOutputEvent.mNumItems = 1
        containerOutputEvent.mItemTypes = ["Game"]
        fge.SendEvent(containerOutputEvent, id)
        particleEmitter = fge.GetParticles(id)
        particleEmitter.SetRunning(True)
        #containerPosition = fge.GetTransform(id).GetPosition()
        #particleEmitter.SetPosition(containerPosition[0], containerPosition[1], containerPosition[2])
        audio = fge.GetAudio(id)
        audio.Load("ModuleDeliver01.mp3")
        audio.Play()
        audio.Volume(0.2)
Пример #18
0
def on_update(id, dt):
    con = fge.GetController(id)
    player = fge.GetPlayer(id)
    #update the player
    speed = 8.0
    x = y = 0
    rot_num = 0
    rot = 0
    particles = fge.GetParticles(id)
    if (con.IsPressed("up")):
        rot += 180
        rot_num += 1
        y -= speed
    elif (con.IsPressed("down")):
        rot += 0
        rot_num += 1
        y += speed
    if (con.IsPressed("left")):
        if (con.IsPressed("up")):
            rot += 270
        else:
            rot += -90
        rot_num += 1
        x -= speed
    elif (con.IsPressed("right")):
        rot += 90
        rot_num += 1
        x += speed
    if (rot_num >= 1):
        player.Rotate(rot / rot_num)
    if (x != 0 or y != 0):
        playerTransform = fge.GetTransform(id)
        playerPos = playerTransform.GetPosition()
        playerScale = playerTransform.GetScale()
        #particles.SetPosition(playerPos[0], playerPos[1], playerPos[2])
        particles.SetRunning(True)
        sprint = con.IsTriggered("Sprint")
        if (sprint):
            x = 2 * x
            y = 2 * y
        player.Move(x, y, sprint)
    else:
        particles.SetRunning(False)
    playerHands = fge.GetCarrier(id)
    heldItems = playerHands.GetItems()
    lenHeldItems = len(heldItems)
    pickupAreaIDs = fge.GetChildren(id, "SearchArea")
    for pickupAreaID in pickupAreaIDs:
        pickupArea = fge.GetAreaSearch(pickupAreaID)
        foundIDs = pickupArea.GetFound()
        for foundID in foundIDs:
            foundType = fge.GetType(foundID)
            if (lenHeldItems == 0):
                if (foundType == "Processor"):
                    container = fge.GetCarrier(foundID)
                    processor = fge.GetProcessor(foundID)
                    if (len(container.GetItems()) > 0
                            and not processor.IsWorking()):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                if (foundType == "Block"):
                    container = fge.GetCarrier(foundID)
                    if (len(container.GetItems()) > 0):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                elif (foundType == "Container"):
                    continue
                elif (foundType == "Generator"):
                    inputType = ""
                    if (con.IsTriggered("Interact")):
                        inputType = "Interact"
                    if (con.IsTriggered("Sprint")):
                        inputType = "Sprint"
                    if (con.IsTriggered("action3")):
                        inputType = "action3"
                    if (con.IsTriggered("action4")):
                        inputType = "action4"
                    if (inputType != ""):
                        generatorInputEvent = fge.GetGeneratorInputEvent()
                        generatorInputEvent.mGeneratorID = foundID
                        generatorInputEvent.mPlayerID = id
                        generatorInputEvent.mInputType = inputType
                        fge.SendEvent(generatorInputEvent, foundID)
                    else:
                        highlightEvent = fge.GetHighlightEvent()
                        fge.SendEvent(highlightEvent, foundID)
                        itemModel = fge.GetModel(foundID)
                        if itemModel is not None:
                            itemModel.Highlight()
                    break
                elif (foundType == "GridCell"):
                    container = fge.GetCarrier(foundID)
                    if (len(container.GetItems()) > 0):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                elif (not fge.HasParent(foundID)
                      or fge.GetType(fge.GetParentID(foundID)) == "Platform"):
                    if (con.IsTriggered("Interact")):
                        pickupEvent = fge.GetPlayerPickupEvent()
                        pickupEvent.mPlayerID = id
                        pickupEvent.mItemID = foundID
                        fge.SendEvent(pickupEvent, id)
                    else:
                        itemModel = fge.GetModel(foundID)
                        if itemModel is not None:
                            itemModel.Highlight()
                    break
            else:
                if (fge.GetType(heldItems[0]) != "Game"):
                    if (foundType == "Processor"):
                        processor = fge.GetProcessor(foundID)
                        processorContainter = fge.GetCarrier(foundID)
                        if (processor.GetMaxInput() > len(
                                processorContainter.GetItems())):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                processorModel = fge.GetModel(foundID)
                                if processorModel is not None:
                                    processorModel.Highlight()
                            break
                    if (foundType == "Block"):
                        container = fge.GetCarrier(foundID)
                        block = fge.GetBlock(foundID)
                        if (1 > len(container.GetItems())
                                and block.CanInput()):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                processorModel = fge.GetModel(foundID)
                                if processorModel is not None:
                                    processorModel.Highlight()
                        break
                    if (foundType == "GridCell"):
                        cellContainter = fge.GetCarrier(foundID)
                        if (1 > len(cellContainter.GetItems())):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                cellModel = fge.GetModel(foundID)
                                if cellModel is not None:
                                    cellModel.Highlight()
                            break
                else:
                    if (foundType == "Container"):
                        if (con.IsTriggered("Interact")):
                            containerInputEvent = fge.GetContainerInputEvent()
                            containerInputEvent.mPlayerID = id
                            containerInputEvent.mContainerID = foundID
                            containerInputEvent.mNumItems = 1
                            fge.SendEvent(containerInputEvent, foundID)
                        else:
                            processorModel = fge.GetModel(foundID)
                            if processorModel is not None:
                                processorModel.Highlight()
                        break
        if (len(foundIDs) == 0 and lenHeldItems > 0
                and fge.GetType(heldItems[0]) != "Game"
                and con.IsTriggered("Interact")):
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = id
            fge.SendEvent(dropEvent, id)
    body = fge.GetBody(id)
    vel = body.GetVelocity()
    xV = vel[0]
    zV = vel[2]