System Oasis - Object Attachment System

Reaction score
86
Update: Started working. Basically rebuilding a lot of the system. The general idea and outline is the same, and some of the foundations of the code are the same but a lot is changing on the inside =] It's good practice with some of the features of vJass that I haven't used yet.

new design features basically 5-6 different types of objects all linked under the name of an object. So basically, the creation line would be something like local Object u = createShape() or createFigure() or createNode() etc. Each object has it's own uses, for ex, a "node" is basically an object that doesn't do/have anything that takes up space and merely is attached to a unit. It's basically used in conjunction with figures to define a custom shape. There is also an object type that deals with pre-existing units and its sole (kindof) purpose is simply to be attached to a pre existing unit and move it around. Good for knockback or other things. A lot of this may sound confusing and as complicated as the previous ver, but the way its implemented is that most features can be implemented with a few lines however it will still offer the various features for advanced manipulation.

Also, I've already come up with an ability I want to make for the testing! =] the Ageless Arrow =O be amazed!! lol
 

Sim

Forum Administrator
Staff member
Reaction score
534
How would it go as far as implementation is concerned? And friendly-user usage?
 
Reaction score
86
Well. I have Basically finished most of the basic system. Its basically copy and paste code into a system and import or have dummy caster model, and then create a unit with the dummy caster as its model, and then just input the unitID into a variable.

Friendly user usage... Well, right now its basically local Object Circle = CreateFigUnit(unit u, integer Nsides, real radius, string SFX, string attachpoint)
Then setting up rotation is just set Circle.Rotate= 10 for 10 degrees per second. For expansion its set Circle.Expand= 10 for 10 units of distance per second. Then you can destroy it whenever you like. I havent implemented OnDeath or anything yet. But it also has not been finished yet.
 
Reaction score
86
OASIS V1.3 is here!
This does not have as many functions as the old one did, but its more efficient, and more coherent.
I also have not updated the initial post yet because I haven't completed the test map. I should be done in a little while.
If anyone wants me to add any features, tell me.

Additions compared to old system:
-Easier to import and implement.
-More efficient.
-A Condition and Action system.

Shortcoming compared to old system:
-Less variety in functions.
-Does NOT allow for 3D rotation in shapes (2D or 3D). (although in the old version it was retarded anyway =/ )

Go to first post to get it. If you have the version in this post, delete it and use the one from first post. The one here had more bugs.
 
Reaction score
86
UPDATE V 1.3 is OFFICIALLY HERE!
Sorry about the older post with 2.0. I may have revamped it but it still hasn't really that much of revampage. Plus it still doesn't have all of it's functionality.
NOTE: IF YOU DID NOT GET THE CODE FROM THE FIRST POST AND GOT THE ONE WITH "2.0" AS A HEADER IT HAS BUGS, DELETE IT.

Version Changes-
-System completely revamped. System usage much easier. Relies more on functions to initialize objects.
-Added new action system featuring:
--SuicideonUD
--PeriodicFunction
--PickeveryShapeUnit
--OnDeathDo
-Some functionality lost from ver 1.2:
--ZRotation of 3D shapes and regular shapes.
 

wraithseeker

Tired.
Reaction score
122
You don't need those method operator if you are just going to set the variable that you want to use.

One example is this.
JASS:
   method operator Radius= takes real val returns nothing
            set .RADIUS = val
        endmethod


When you create the shape, just do

JASS:
set thistype.RADIUS = yourvalue
 

RedSword

New Member
Reaction score
4
Haha omg !! So nice !! Really nice man.

And when u cast too much those sweeties stop showing and lag ur game lol (lightning shield made me this; got a bad comp). But really cool. +rep
 
Reaction score
86
@wraithseeker
Yeah, but not all Object's need or have radii therefore some of them, like nodes, do not need it, and thus using an operator instead would be more effective and more easier to implement. (True not as efficient.) Also, I plan to make more types that don't use radii so instead of wasting a variable which can effectively decrease the object limit an operator can be more efficient.

@RedSword Yeah lol I know. It can be taxing on a system, but all of the abilities are not meant to be cast on the same unit more than 4-5 times.
 
Reaction score
86
Note, once again fixing up the system soon. Trying to streamline it and make it more efficient. Also intend to make it modular so that it's more prettier and people can just pick the parts they need rather than having to import the whole thing.
 

Sim

Forum Administrator
Staff member
Reaction score
534
I'll look forward to such an update.

The main factor to take into consideration is the implementation of user-friendly methods.

Otherwise it is a very neat system!
 

D.V.D

Make a wish
Reaction score
73
In your spells, you change the max roll pitch of the object. How did you do that via triggering?
 
Reaction score
86
@ Daxtreme thanks =]

@D.V.D. Ummm... huh? I dont change that via triggering.

Ver 1.4 is out. Still working on a demo map, and also working on more object modules to restore old functionality (Z Rotation).
New Features:
-System is modular.
-Streamlined some pretty bulky and laggy functions in the "Shape Object."
-Remove Object Limit as a constant. It didnt actually do anything anyway.
-Requires Timer32.
-Digression from arrays and movement toward linked lists systems.
-Almost everything uses linked lists.(in some form) lol.

Modules:
-Object: Shape (one or two more coming.)
-Action: TimedEvent, Unit Death Function, Translation, and EnumUnits.
 

Jesus4Lyf

Good Idea™
Reaction score
397
>Requires Timer32.
I'm happy to see things like this running on T32, it's a good idea.

However, I must give you an efficiency tip. Currently, you have a base struct which implements T32, and structs that extend it implement periodic. As we know, when this kind of inheritance occurs, the periodic function will be fired through TriggerEvaluate, which is unfortunate.

However! What if you made the base struct contain a stub "startPeriodic" method, and then had each struct extending it implement T32? ;)

The effect is one TriggerEvaluate (on startPeriodic) instead of many (on periodic). This should be a significant efficiency increase, and quite an impressive way to code this. :thup:
 
Reaction score
86
lol. That was one thing I thought might happen; I got too lazy too look at the compiled map script to actually confirm :( I'll do it now thanks for the suggestion.
 

Kenny

Back for now.
Reaction score
202
This is turning out to be a pretty cool system. Nice work! :thup:

One thing though. Throughout the system you are using 0.03215 as the period, when I'm pretty sure you should be using 0.03125 (32 FPS). Just got the 1 and the 2 mixed around I presume?
 

Jesus4Lyf

Good Idea™
Reaction score
397
This is turning out to be a pretty cool system. Nice work! :thup:
I agree. To be honest, when I see T32 being used for particle effects, I get excited. We are yet to see the insane things you can do - that system can handle 600 particles pretty easily. Hm!
Throughout the system you are using 0.03215 as the period
Should use T32_PERIOD instead. It means even if someone decides they want to run T32 on a different period, it will all be correct. :thup:
 
Reaction score
86
lmfao. woops I havent been working on WC3 stuff in awhile forgot what 32 fps was o_O. I wasnt sure what the name was or if it was private or not lmao so I never checked for it. I get really lazy sometimes =[

and thx for compliments =]

Thanks for picking up on that kenny; it solved a major problem i was having. Couldnt get two thing in sync =/ figured out why now.

Edit: argh... set back by alot. map corruption. 2 entire mods lost -.-........................
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top