# Introduction Stream provides a completely new way to structure your code. It allows you to manage an object and all of its events in one script. If you ever thought something along the line of "Man, it would be nice if I wouldn't have to wage this war against the GM IDE...with object-windows that need to stay open...the handling of too many open windows at the same time, wait, which window belongs to which object, I can close this object, right?! NO! GODDAMMIT!" - this asset might be just your kind of best new friend! What's so nice about it? You don't have to dig through an object's events, jumping from one event-code-window to the next You don't need to use several scripts for one object, which gets sooner or later out of hand You can directly access all code from the tree-view and use the search Stream adds objects to the assets that can be handled by using an external coding IDE Provides a way better overview over the individual events as a whole, which makes sense since often several events intertwine like gear wheels. ... In the end it's a matter of personal preference, but I guess I'm not alone with the wish to handle objects like this. Before I explain how to use this asset... # Example How does it look like? This is an example how a script for an object could look like. I added some flavor 'cause you code with your eyes first! What you see here is a script called _o_dice, which contains a switch/case over the Macro EVENT, which is composed of several cases based on further Stream-built-in-Macros. In line 4 is a case that will never be executed, it's just an idea to lodge all objects relevant to this script, so that you can middle-mouse-button-click on them for quick access. # Basic Information All event-macros begin with an uppercase EV+underscore to seperate them from the GM-built-in-constants. Then follows the event-name in Titlecase, just like the events are displayed in the event-list within an object(spaces replaced with underscore). Just type in EV_ to see the auto-completion-list or check out the extension itself. There are only a few async events missing because I could not trigger them and so I wasn't able to get their event-ids. # Basic Usage In the Room Creation Code, in the Create-Event of your main-controller-object or in your init-script - wherever you initialize other assets, global variables and enums, use Code: stream_init("os_"); to initialize this asset! The argument provided to this function, which must be a string-value, defines the prefix of all object-scripts. Create a new object, for example obj_hero. Add all events the object should have to the object's event-list. In every single one, add one Execute Code Block, containing Code: stream(); and nothing else. Create a new script with the name being the combination of your chosen prefix and the object-name, in this case os_obj_hero. Build the switch/case, containing the events you added to the object, yourself or use the supplied object-script-template as a base to expand on. Try and see if it works - and if not come here and we'll solve the problem! # Of Course ...I'll be happy about every review, comment, suggestion, bug-report - you call it. I'm excited about your opinions! PS: The HTML5-Module is not yet supported, though this is point 1 on the agenda. Click on the Stream - Logo at the top of this page to get to the Marketplace Asset Page. Tested for following export modules: Windows, Windows(YYC).