Results 1 to 5 of 5

Thread: TBGL_EntityFind...-question

Share/Bookmark
  1. #1
    thinBasic MVPs ReneMiner's Avatar
    Join Date
    Oct 2012
    Location
    Germany
    Age
    47
    Posts
    1,213
    Blog Entries
    1
    Rep Power
    132

    TBGL_EntityFind...-question

    a question about the various TBGL_EntityFind...-functions:
    f.e.

    TBGL_EntityFindNearestByPos( SceneID, EntityType, x, y, z, rangeX, rangeY, rangeZ [, GlobalCoordinates ] )

    parameter-description:

    Type of entity to search for, can take one of following values:

    %TBGL_LIGHT
    %TBGL_CAMERA
    %TBGL_PIVOT

    %TBGL_MODEL
    %TBGL_DISPLAYLIST

    %TBGL_BOX
    %TBGL_SPHERE
    %TBGL_TORUS
    %TBGL_CYLINDER

    what EntityType to specify for a function-slot?
    Last edited by ReneMiner; 02-11-2014 at 10:02.
    Windows 10 on
    Desktop: Intel Core i5-3330 @3.0 GHz, 8 GB Ram, nVidia GeForce GT630 2 GB
    Laptop: Intel Core i3-4005U @1.7GHz, 8 GB Ram, nVidia GeForce 940M 2 GB


    The limit is Imagination

  2. #2
    Super Moderator Petr Schreiber's Avatar
    Join Date
    Aug 2005
    Location
    Brno - Czech Republic
    Posts
    6,759
    Blog Entries
    3
    Rep Power
    688
    Hi Rene,

    the function slot entities are not supported by this command at the moment.

    What kind of functionality would be better for you: add %TBGL_FunctionSlot equate, or develop some smarter method, which would allow to perform filter like "all function slot entities which implement member x and function y"?


    Petr
    Learn 3D graphics with ThinBASIC, learn TBGL!
    Windows 7 64bit - Intel Core 2 Duo T6600 @ 2.2GHz - 4 GB RAM - NVIDIA GeForce G210M 512MB
    Windows 8 64bit - Intel Core i5-3350P @ 3.1GHz - 8 GB RAM - NVIDIA GeForce GT640 3GB

  3. #3
    thinBasic MVPs ReneMiner's Avatar
    Join Date
    Oct 2012
    Location
    Germany
    Age
    47
    Posts
    1,213
    Blog Entries
    1
    Rep Power
    132
    the simplest i think is to add some equate for the already existing TBGL-functions so these are fully functional on all entity-types TBGL provides us with currently...

    A function-slot does not mandatory need to have a user-type attached - does it? It sounds reasonable at first if it would work like:
    "please TBGL, list all enemy-spaceships near that point xy" but i think then i would just go myself through the list of enemy-spaceships but not through all entities then and measure all theirs distances...

    edit: it's thinkeable - if it were faster than in a tB-script- if TBGL would examine a scene and just go through a passed list of entities - and return what is left then.

    So user sends a string, array or now possible too: variadic parameter-list of entity-IDs that might be interesting, TBGL could probably be faster than the user to check for distances in a range to a certain point or entity and TBGL returns the closest entityID of the listed ones in range - or zero if none in range.
    If getting closest listed entity by position it's pretty simple - but if the referred entity is also in the list... hmmm- return any other but itself nor any of its own children...

    Function TBGL_EntityGetClosest( ByVal sceneID      As Long, _
                                    ByVal entityID     As Long, _
                                    ByVal listIDs(Any) As Long,  _
                              Optional Byval maxRange As Double _
                                   ) As Long
    '...
    Function TBGL_EntityGetClosestPos( ByVal sceneID      As Long,   _
                                       ByVal X            As Double, _
                                       ByVal Y            As Double, _
                                       ByVal Z            As Double, _
                                       ByVal listIDs(Any) As Long,   _
                              Optional Byval maxRange As Double _         
                                      ) As Long
    '...
    
    edit+

    if we already on it, i have two and a half simple suggests that might be handy one day:

    ' - 1 - 
    
    Function TBGL_EntityIsChildOf( ByVal SceneID          As Long, -
                                   ByVal suspectedChildID As Long, _
                                   ByVal suspectedParentID As Long _
                                  ) As Boolean
    
      While TBGL_EntityExists(sceneID, suspectedChildID )   
        suspectedChildID = TBGL_EntityGetParent( SceneID, suspectedChildID ) 
        If suspectedChildID = suspectedParentID Then Return TRUE
      Wend    
      
    End Function 
    
    ' - 1.5 - almost the same as above: 
    Function TBGL_EntityGetTopParent(ByVal SceneID As Long, _
                                     ByVal EntityID As Long _
                                     ) As Long
    
      While TBGL_EntityExists( SceneID, TBGL_EntityGetParent( SceneID, EntityID )) 
        EntityID = TBGL_EntityGetParent( SceneID, EntityID )
      Wend
      
      Function = EntityID
                                      
    End Function
    
    
    ' - 2 -
    
    Function TBGL_EntityExists( ByVal SceneID As Long, ByVal EntityID As Long) As Boolean
      
      Function = ( TBGL_EntityGetFreeID( SceneID , EntityID ) <> EntityID )
    
    End Function
    
    Last edited by ReneMiner; 05-11-2014 at 09:07.
    Windows 10 on
    Desktop: Intel Core i5-3330 @3.0 GHz, 8 GB Ram, nVidia GeForce GT630 2 GB
    Laptop: Intel Core i3-4005U @1.7GHz, 8 GB Ram, nVidia GeForce 940M 2 GB


    The limit is Imagination

  4. #4
    Super Moderator Petr Schreiber's Avatar
    Join Date
    Aug 2005
    Location
    Brno - Czech Republic
    Posts
    6,759
    Blog Entries
    3
    Rep Power
    688
    Hi Rene,

    thanks for the inspiration - ideas noted, if time allows, I will try to add to next TBGL release!


    Petr
    Learn 3D graphics with ThinBASIC, learn TBGL!
    Windows 7 64bit - Intel Core 2 Duo T6600 @ 2.2GHz - 4 GB RAM - NVIDIA GeForce G210M 512MB
    Windows 8 64bit - Intel Core i5-3350P @ 3.1GHz - 8 GB RAM - NVIDIA GeForce GT640 3GB

  5. #5
    thinBasic MVPs ReneMiner's Avatar
    Join Date
    Oct 2012
    Location
    Germany
    Age
    47
    Posts
    1,213
    Blog Entries
    1
    Rep Power
    132
    one more function to entities (especially bones-, parent- & child-stuff) that would be really helpful, in tB i have some VERY SLOW equivalent because Entity-enumeration is dynamic done to the script, at first I need the highest assigned EntityID in the current scene, (call it like %HighestID here) and then have to check all the numbers for theirs existance and if exist i need to check if it's a child of desired EntityID... really cumbersome:

    Function TBGL_EntityListChildren( ByVal Scene As Long, Byval EntityID As Long ) As String
    
    Local i As Long
    Local sResult As String  ' (returns Long-array)
    
    For i = 1 to %HighestID
      If TBGL_EntityExists( Scene, i ) Then
        If TBGL_EntityGetParent(Scene, i ) = EntityID Then sResult += MKL$(i)
      EndIf
    Next
    Function = sResult
    
    End Function
    
    optional there could be 2 switches to the function where the second switch only makes sense if the first one is used:
    - list grandchilds etc. too
    - list only childs that are in use (like in a collapsed tree it won't list hidden subchilds then)


    Currently it forces me to store all information the entity already has stored somewhere in the depth of TBGL a second time at the user-data-slot. This can not be good...
    it's like i would store positions of all entities - makes no sense- TBGL knows all the current positions exactly... while my stored data depends on continous refreshing it in the correct moment, which costs unnecessary resources and is not fool-proof
    Last edited by ReneMiner; 15-11-2014 at 10:48.
    Windows 10 on
    Desktop: Intel Core i5-3330 @3.0 GHz, 8 GB Ram, nVidia GeForce GT630 2 GB
    Laptop: Intel Core i3-4005U @1.7GHz, 8 GB Ram, nVidia GeForce 940M 2 GB


    The limit is Imagination

Similar Threads

  1. Question of the day ;)
    By Petr Schreiber in forum thinBasic General
    Replies: 8
    Last Post: 23-08-2010, 19:58
  2. C to TB question
    By Michael Clease in forum Other languages
    Replies: 2
    Last Post: 03-06-2010, 12:11
  3. gdi question
    By Lionheart008 in forum UI (User Interface)
    Replies: 6
    Last Post: 07-12-2009, 19:31
  4. UDT question
    By sandyrepope in forum thinBasic General
    Replies: 3
    Last Post: 18-02-2008, 22:33
  5. m15 question
    By kryton9 in forum M15 file format
    Replies: 4
    Last Post: 20-06-2007, 20:18

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •