Kiekos
Member
|
T (*this) conversion to ObjMemx container
Hey lads!
Simple question to probably most of you but I'm stuck... In my NPC's update loop I have something like this:
Code:
if( Lit==this && Ms.br(0) ){
// some stuff
interaction = true;
}
if( interaction ){
// more stuff
T.actionMoveTo( some_position );
}
It has to be done this way, as the first "if" is done once (only when I click) and the second "if" is done every frame. The problem is that because in the second "if" there is no other requirement than just interaction value, it does the thing I want to all NPCs and not just the particular one I clicked.
I need to know which NPC I'm referring to in the first "if". Is there a way to check the index of the NPC that I clicked and then use it in the second "if" like this:
Code:
NPC[index].actionMoveTo( some_position );
Thanks,
Kiekos
|
|
11-22-2013 07:20 PM |
|
Pixel Perfect
Member
|
RE: T (*this) conversion to ObjMemx container
You could do the following:
Identify the object targeted by using a raycast based on the screen pos of the mouse and projected into the scene.
Have a setMoveToPosition function in your NPC class and call that with the desired position. This would set a suitable flag ('interaction' if you like) and your Update code traps this and instigates theactionMoveTo then resets the flag. This leaves your NPC code pretty much generic.
|
|
11-23-2013 12:24 AM |
|
Kiekos
Member
|
RE: T (*this) conversion to ObjMemx container
Thanks for the idea, I will try to implement something like that as it's deffinitely a solution!
For now I came up with something simple that works, but is not optimal at all and must be changed (especially when I have hundreds of NPCs on the map)...
Code:
// first "if"
REPA(NPCs) if( NPCs[i].pos() == T.pos() ) index = i;
// second "if"
NPC[index].actionMoveTo( some_position );
But is there really no way to find out which object I clicked and want to be moved?
(This post was last modified: 11-23-2013 01:16 AM by Kiekos.)
|
|
11-23-2013 01:10 AM |
|
Esenthel
Administrator
|
RE: T (*this) conversion to ObjMemx container
I think you've got that already in your first post:
Lit==this
Since you have Lit pointing to NPC object, then that's what you want?
if(Lit==this && Ms.br(0))actionMoveTo(..)
|
|
11-23-2013 05:39 AM |
|
Kiekos
Member
|
RE: T (*this) conversion to ObjMemx container
Yea, I know... But I can't do it that way. I have to remember somehow which one I clicked in the first "if" and use that index in the second "if".
The first one is executed exactly once (when clicked) whilst the second "if" is repeated every frame.
|
|
11-23-2013 12:46 PM |
|
Esenthel
Administrator
|
RE: T (*this) conversion to ObjMemx container
Just remember the 'Lit' somewhere?
as Reference<..> of course
|
|
11-25-2013 04:39 AM |
|