Jump to content

LukasPJ

WEBGRU
  • Posts

    462
  • Joined

  • Last visited

Posts posted by LukasPJ

  1. @Bloodknight


    You can attach a file to your post, so it will never 404 as long as the forums are running. :P


    Also, you can edit the top-post but only mods and resource owner has that power. It's always possible to port the resource to the wiki afterwards if you want to make some changes I guess. I think the main point is that the guys who write resources, should have as low a barrier as possible. It should pretty much just be a page where they can write stuff and it magically appear as a resource!

  2. You have to admit that you used quite some tricks for this resource, you rebranded existing animations and datablocks, but at least your weird shotgun looks good, even though it is amateurishly modeled.

    Where did you get the sound files from?

    Duion please stop that tone, it's fine that you don't think it's a good model, I think it's good. If you think something could be improved, feel free to post tips, suggestions or point out specific flaws. No one can use "it is amateurish" for anything.


    0la5DBtOVNI

  3. Well for that I'd use a DoTImpact, if you know for how long time the rocket is flying, otherwise just schedule a function that creates a ConeImpact every 200ms or something.

  4. @Gibby unfortunately, it's a fairly simple class atm so you'd need one tween for each axis the turret needs to rotate on. I might improve this later on :)

    This is written by hand so there maybe syntactical issues:

    function aimTurret(%turret)
    {
       %target = %turret.target;
       echo("stationTurretTrigger::aimTurret %turret "@%turret@" target "@%target);
     
       if(isObject(%target))
       {
          echo("stationTurretTrigger::aimTurret %target valid");
          %turretPos = %turret.getPosition();
          %tgtPos = %target.getPosition(); 
          // this function returns the rotation '%rot' needed to point the turret at its target     
          %rot = pointToPos(%turretPos, %tgtPos); 
     
          if(%turret.tween !$= "")
          {
             %turret.tween.delete();
             %turret.tween = "";
          }
     
          %turret.tween = new Tween(TurretTween)
          {
             Duration = 1; // This is in seconds.
             Target = %turret; // Any SimObject.
             ValueName = "rz"; // "r" for rotation, "z" for axis
             ValueTarget = %rot.z; // should I be placing the destination rot value here?
             EaseDirection = $Ease::Out; // This is just the stock easing values.
             EaseType = $Ease::Circular; // Again, this is a stock thing, I didn't implement the $Ease enum.
     
             // Dynamics
             Turret = %turret; //Wooh circular references!
          };
     
          echo("stationTurretTrigger::aimTurret %tween: "@%turret.tween);
          %turret.tween.play();
       }
    }
     
    function TurretTween::onFinished(%this)
    {
        %this.turret.fire-away_fire-away();
    }
  5. @Gibby that seems it's the same issue as with the Tweening.


    Just change Impact.h line 22-23 to this:

     

    virtual void interpolateTick( F32 delta ) {};
    virtual void processTick() {};
  6. Do I need this to make it work?


    from ConeImpact:

     

    #include "T3D\fx\ImprovedParticle\IPSCore.h"
    

     

    I don't think so.. I may have been in a bit of a hurry to get it out there, try deleting that line, it should be okay :P

  7. Lukas:


    I got this error trying to compile:

     

    16>c:\torque\363_vehiculo\engine\source\console\consoleobject.h(620): error C2259: 'Tween' : cannot instantiate abstract class
    16>          due to following members:
    16>          'void ITickable::interpolateTick(F32)' : is abstract
    16>          c:\torque\363_vehiculo\engine\source\core\itickable.h(113) : see declaration of 'ITickable::interpolateTick'
    16>          'void ITickable::processTick(void)' : is abstract
    16>          c:\torque\363_vehiculo\engine\source\core\itickable.h(117) : see declaration of 'ITickable::processTick'
    16>          c:\torque\363_vehiculo\engine\source\console\consoleobject.h(620) : while compiling class template member function 'ConsoleObject *ConcreteClassRep<T>::create(void) const'
    16>          with
    16>          [
    16>              T=Tween
    16>          ]
    16>          c:\torque\363_vehiculo\my projects\vehiculo363\source\t3d\tween.h(61) : see reference to class template instantiation 'ConcreteClassRep<T>' being compiled
    16>          with
    16>          [
    16>              T=Tween
    16>          ]
    

     

    did I need to change consoleObject?

     

    Ohh right.. I may have edited the code a little prior to uploading... It's because I forgot that you have to implement all the ITickable functions. I.e. ProcessTick InterpolateTick and AdvanceTime. Where I only implemented one.. Just create empty implementations for ProcessTick and InterpolateTick.. I'll edit the code :P

  8. This is the Impact System from the SpellSystem I created. It's an useful system for, well having an impact on the scene.. Like do something to all enemies in a box, or do something multiple times over a duration. It was created with spells in mind, but can probably be used for other things.


    There are 5 available impact classes:

    • AOEImpact - Circular impact
    • BoxImpact - What it says on the tin
    • CubeImpact - Likewise
    • ConeImpact - Likewise
    • DOTImpact - Happens x times with [y] milliseconds interval between each impact

    Examples of use (from my spellsystem examples):

    %aoe = new ConeImpact(){       
       SourceObject = %src;       
       Start = %pos;
       End = VectorAdd(%pos, VectorScale(%eye, 10));     
       Radius = 2;
       TypeMask =  $TypeMasks::StaticShapeObjectType |                    
                   $TypeMasks::StaticTSObjectType;       
       CallBack = "ConeCallback";    
    };   
     
    function ConeImpact::ConeCallback(%this, %src, %tgt) 
    {    
       %projectile = ImpactProjectile;    
       ThrowHomingBezierProjectile(%src,%tgt,%projectile,true,"0 0 12"); 
    }

     

    %dotimpact = new DOTImpact(){
      TickMS = 100;
      TickCount = 15;
     
      CallBack = "FrostBarrageCB";
      sourceObject = %spell.getSource();
     
      // Dynamic variables
      Target = %spell.getTarget();
    };
     
    function DOTImpact::FrostBarrageCB(%this, %src)
    {
       %weights = GetRandomVector(-3, 3, -3, 3, 0, 3);
       ThrowHomingBezierProjectile(%src, %this.Target, FrostShardProjectile, true, %weights);
    }

     

    Make these changes to the SceneContainer, and then download the files in: Impacts.zip and add them to the project.

  9. I think I need a little more elaboration.. Everything you are proud of goes in Show-off.

    Show-off is much like blogs, except you don't have to write text for it.. You can just enjoy boosting your ego :P


    Made a fancy fireball`? -> Show-off

    Made a cool new AI? -> Show-off

    Made a new octopus model? -> Show-off


    Need to know whether your fancy fireball needs "awesomeness" flag set to true to be awesome? -> Rendering

    Need help getting your AI to work? -> C++ or TorqueScript

    Need to know how to import your new octopus model? -> Content

  10. So, one of the reasons people want to keep the old persistence layer, is because they want to embed scripts in their .gui files... But some people have pointed out that this is a horrible malpractice that should be stopped with fire and sword.. What is the general opinion on this? I can make it possible to embed scripts in .Taml files but.. Ew..

  11. The not-so-obvious answer is something like this: You have an object that is spread across several levels. With TAML you can create an XML visitor to walk the level files and update parameters after changing a single instance. Did it in Three Step Studio. Was glorious.

    Could you elaborate on that? I don't quite understand what happened but it sounds intriguing :P

  12. Okay here's the thing.. Torque3D already has a persistence layer, it can be found here. So what does TAML do differently? It generalizes that persistence layer. As described in the thread you linked initially, using e.g. XML is MUCH faster than executing a script file. Furthermore, you can now use serialize from/to any file format, which makes it easy to work with 3rd party apps (the main motivation behind TAML for T2D).


    Lastly, having the missions in e.g. XML makes it easier for some world designers to understand the scene structure without having to learn TorqueScript, and you can validate an XML file without having to run the engine.


    TAML and the existing persistence layer in essence works the same way. Save a SimObject to a file, read a SimObject from a file.

×
×
  • Create New...