Custom Sequence not sending message when at the beginning

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
UrasawaX
Posts: 13
Joined: Mon Jan 27, 2020 7:52 am

Custom Sequence not sending message when at the beginning

Post by UrasawaX »

Hi there,

thanks for providing such an awesome tool and support!

I have a little problem with a custom sequence command. It does not seem to send a message when it plays immediately at the beginning of a node.

The custom sequence consists of a Start() that plays a coroutine which moves a character. Stop() is at the end of it and it is reached.

The command works fine if it is not played immedietely at the beginning of a node. I can write "Move(actor,10, 10,1)@0.1->Message(test); " to get it to work, but I would rather not have to write @0.1 on all custom commands.

Cheers and thanks again.
User avatar
Tony Li
Posts: 22143
Joined: Thu Jul 18, 2013 1:27 pm

Re: Custom Sequence not sending message when at the beginning

Post by Tony Li »

Hi,

Let's say you have two nodes, A --> B.

When the conversation switches from node A to node B, node A's sequence will end on the same frame that node B's sequence starts.

Is it possible that something is happening at the end of node A that is causing node B's sequencer command to stop immediately instead of running its coroutine? (e.g., something on an OnDestroy() method of one of node A's sequencer commands?) If so, this would explain why adding @0.1 seems to "fix" the problem, since it makes the sequencer command wait 0.1 seconds instead of starting on the same frame that node A finishes.
UrasawaX
Posts: 13
Joined: Mon Jan 27, 2020 7:52 am

Re: Custom Sequence not sending message when at the beginning

Post by UrasawaX »

Hey Tony,

I don't think so. I just added a node with "Delay(1);Continue()" before the node with the Move command and it still doesn't send a message.

I also noticed that when I enter 2 commands like

Move(NPC 0,15931, 12432,2)->Message(a);
Move(NPC 1,16031, 12732,1)->Message(b);

which should play at the same time, the second line actually sends a message. The first one not.
User avatar
Tony Li
Posts: 22143
Joined: Thu Jul 18, 2013 1:27 pm

Re: Custom Sequence not sending message when at the beginning

Post by Tony Li »

Hi,

The second line should send the message "b" after 1 second, and the first line should send "a" after 2 seconds.

Would it be possible for you to send a reproduction project to tony (at) pixelcrushers.com?
UrasawaX
Posts: 13
Joined: Mon Jan 27, 2020 7:52 am

Re: Custom Sequence not sending message when at the beginning

Post by UrasawaX »

Hey Tony,

please note that I'm not using the MoveTo command but my custom Move command (targetpos x, targetpos y, speed). But for testing I stripped down the command to this:

Code: Select all

public void Start()
        {
            string name = GetParameter(0);
            float x = GetParameterAsFloat(1);
            float y = GetParameterAsFloat(2);
            float speed = GetParameterAsFloat(3);
            Debug.Log("test");

            Stop();
        }
Ok, while writing here I made further discoveries. It has nothing to do with the command above or custom commands in perticular.

So these commands in the first node cause the problem:

Code: Select all

Fade(in)->Message(FadedIn);
Continue() @Message(FadedIn);
This causes the next first line that tries to send a message to not send it. This line can be several nodes away. After a message was ignored once it works fine on the following nodes.

For example:

Node 1:

Code: Select all

Fade(in)->Message(FadedIn);
Continue() @Message(FadedIn);
Node 2:

Code: Select all

Move(NPC 0,15931, 12432,2)->Message(test1);
Move(NPC 1,16031, 12732,1)@Message(test1);
Continue()@3;
test1 is not sent

Node 3:

Code: Select all

Delay(1)->Message(test1);
Continue() @Message(test1);
Since one message sent on a first line was already ignored, it works again on Node 3 and Delay is sending a message.

If you switch Node 2 and 3 around, The message sent by delay is ignored.

(I also created a brand new conversation with a starting node, node 1 and node 3 and it doesn't work.)

As answered in my previous post, there can be several nodes between node 1 and node 2 and the msg is still not triggered. So I don't believe it has something to do with the last line of node 1 being on the same frame as the first line of node 2.

btw. Changing node 1 to

Code: Select all

Fade(in);
Continue();
does not cause any problems.


Do you have any idea why this happens? Did I made a mistake? Sorry, a reproduction project might take a while, so If you don't have any further ideas with the information I provided I'll have to keep it at this for the meanwhile. Thank you very much for your help, Tony!
User avatar
Tony Li
Posts: 22143
Joined: Thu Jul 18, 2013 1:27 pm

Re: Custom Sequence not sending message when at the beginning

Post by Tony Li »

Hi,

What version of the Dialogue System are you using?

Would you please try importing the patch provided in this post?

The fix in that patch will be included in the next release.
Post Reply