Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. class DSH_TraceBeam : actor
  2. {
  3. color col;
  4. vector3 endPoint;
  5. vector3 actorOffset;
  6. int lifeTime;
  7. bool TrackHitPoint;
  8. Default
  9. {
  10. radius 0;
  11. height 0;
  12. +NOBLOCKMAP;
  13. +NOGRAVITY;
  14. +NOINTERACTION;
  15. +NOTELEPORT;
  16. +CANNOTPUSH;
  17. +NODAMAGETHRUST;
  18. RenderStyle "AddShaded";
  19. StencilColor "AAFFFF";
  20. }
  21.  
  22. override void PostBeginPlay()
  23. {
  24. A_SetPitch(pitch+90);
  25. SetShade(col);
  26. Super.PostBeginPlay();
  27. }
  28.  
  29. override void Tick(void)
  30. {
  31. Super.Tick();
  32. if(target)
  33. {
  34. if(!TrackHitPoint)
  35. {
  36. A_SetAngle(Target.Angle+DeltaAngle(target.angle,self.angle), SPF_INTERPOLATE);
  37. A_SetPitch(Target.Pitch+DeltaAngle(target.pitch,self.pitch-90.0)+90.0, SPF_INTERPOLATE);
  38. //A_SetAngle(Target.Angle, SPF_INTERPOLATE);
  39. //A_SetPitch(Target.Pitch-90.0, SPF_INTERPOLATE);
  40.  
  41. /* this is some insane magic shit*/
  42. double oldAngle = Target.Angle; // Doing this because it's way more precise to do this than to decrement
  43. Target.A_SetAngle (Target.angle + 0.001, SPF_INTERPOLATE);
  44. Target.A_SetAngle (oldAngle, SPF_INTERPOLATE);
  45. /* insanity ends*/
  46. }
  47.  
  48. //moves the actor
  49. SetOrigin(target.Vec3Offset(actorOffset.x, actorOffset.y,(Target.player.ViewZ - Target.Pos.Z)+actorOffset.z, FALSE),TRUE);
  50. if(TrackHitPoint)
  51. {
  52. vector3 dif = self.pos - endpoint;
  53. vector2 angs = DSH_kMath.AnglesFromVec3(dif);
  54. A_SetAngle(angs.x, SPF_INTERPOLATE);
  55. A_SetPitch(angs.y+90, SPF_INTERPOLATE);
  56. scale.y = (self.pos-endpoint).length();
  57. }
  58. }
  59. }
  60.  
  61. States
  62. {
  63. Spawn:
  64. MODL A 0 nodelay;
  65. MODL A 1 bright nodelay A_SetTics(lifeTime);
  66.  
  67. stop;
  68. }
  69. }
  70.  
  71. action actor VectorBeam (vector3 startpos, vector3 endpos, double rad)
  72. {
  73. actor act = actor.spawn("DSH_TraceBeam",startpos,NO_REPLACE);
  74. let a = DSH_TraceBeam(act);
  75. if(a)
  76. {
  77. vector3 dif = startpos - endpos;
  78. vector2 angs = DSH_kMath.AnglesFromVec3(dif);
  79. a.angle = angs.x;
  80. a.pitch = angs.y;
  81. a.scale.y = (startpos-endpos).length();
  82. a.scale.x = rad;
  83. }
  84. return act;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement