Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
raycaster.c
Go to the documentation of this file.
1// Item for raycast debugging. It's also fun to play around with at night.
2
3class Raycaster extends ItemBase
4{
5 protected ref Timer m_Timer;
6
7 override void OnWorkStart()
8 {
9 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
10 {
12 }
13 }
14
16 {
17 if( !m_Timer )
18 {
19 m_Timer = new Timer;
20 }
21
22 m_Timer.Run( 0.01, this, "PrepareMeasurement", null, true );
23 }
24
26 {
29 }
30
32 {
33 float dispersion = 80;
34
35 vector from = GetPosition() + ( GetMemoryPointPos("beamStart") + ((GetOrientation()+Vector(90,0,0)).AnglesToVector()*0.3) );
36 vector ori = GetOrientation() + Vector(90,0,0) + Vector(dispersion/2 - Math.RandomFloat(0, dispersion) , dispersion/2 - Math.RandomFloat(0, dispersion) , dispersion/2 - Math.RandomFloat(0, dispersion) );
37 vector to = from + (ori.AnglesToVector() )* 30;
38 vector contact_pos;
39 vector contact_dir;
40 int contactComponent;
41
42 bool is_collision = DayZPhysics.RaycastRV( from, to, contact_pos, contact_dir, contactComponent, NULL , NULL, GetHierarchyRootPlayer(), false, false, ObjIntersectIFire);
43
44 if (is_collision)
45 {
46 vector hit_normal = contact_dir.VectorToAngles();
47 hit_normal[1] = hit_normal[1] + 90;
48
49 // Generate result
50 Particle p = ParticleManager.GetInstance().PlayInWorld(ParticleList.DEBUG_DOT, contact_pos);
51 p.SetOrientation(hit_normal);
52 }
53 }
54
56 {
57 if( m_Timer )
58 {
59 m_Timer.Stop();
60 }
61 }
62
63 override void OnWorkStop()
64 {
65 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
66 {
68 }
69 }
70
71 override void SetActions()
72 {
73 super.SetActions();
74
77 }
78}
void AddAction(typename actionName)
vector GetOrientation()
override void OnWorkStart()
Definition raycaster.c:7
void StartPeriodicMeasurement()
Definition raycaster.c:15
override void SetActions()
Definition raycaster.c:71
void PrepareMeasurement()
Definition raycaster.c:25
void StopPeriodicMeasurement()
Definition raycaster.c:55
override void OnWorkStop()
Definition raycaster.c:63
void DoMeasurement()
Definition raycaster.c:31
ref Timer m_Timer
Definition raycaster.c:5
Definition enmath.c:7
Legacy way of using particles in the game.
Definition particle.c:7
static Particle PlayInWorld(int particle_id, vector global_pos)
Creates a particle emitter on the given position and activates it.
Definition particle.c:174
ref Timer m_Timer
Definition dayzgame.c:705
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
class JsonUndergroundAreaTriggerData GetPosition
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)