Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
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
3
class
Raycaster
extends
ItemBase
4
{
5
protected
ref
Timer
m_Timer
;
6
7
override
void
OnWorkStart
()
8
{
9
if
( !
g_Game
.IsServer() || !
g_Game
.IsMultiplayer() )
// Client side
10
{
11
StartPeriodicMeasurement
();
12
}
13
}
14
15
void
StartPeriodicMeasurement
()
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
25
void
PrepareMeasurement
()
26
{
27
DoMeasurement
();
28
DoMeasurement
();
29
}
30
31
void
DoMeasurement
()
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
55
void
StopPeriodicMeasurement
()
56
{
57
if
(
m_Timer
)
58
{
59
m_Timer
.Stop();
60
}
61
}
62
63
override
void
OnWorkStop
()
64
{
65
if
( !
g_Game
.IsServer() || !
g_Game
.IsMultiplayer() )
// Client side
66
{
67
StopPeriodicMeasurement
();
68
}
69
}
70
71
override
void
SetActions
()
72
{
73
super.SetActions();
74
75
AddAction
(
ActionTurnOnWhileInHands
);
76
AddAction
(
ActionTurnOffWhileInHands
);
77
}
78
}
AddAction
void AddAction(typename actionName)
Definition
advancedcommunication.c:220
GetOrientation
vector GetOrientation()
Definition
areadamagemanager.c:306
ActionTurnOffWhileInHands
Definition
actionturnoffwhileinhands.c:2
ActionTurnOnWhileInHands
Definition
actionturnonwhileinhands.c:2
DayZPhysics
Definition
dayzphysics.c:124
DayZPhysics::RaycastRV
static proto bool RaycastRV(vector begPos, vector endPos, out vector contactPos, out vector contactDir, out int contactComponent, set< Object > results=NULL, Object with=NULL, Object ignore=NULL, bool sorted=false, bool ground_only=false, int iType=ObjIntersectView, float radius=0.0, CollisionFlags flags=CollisionFlags.NEARESTCONTACT)
Raycasts world by given parameters.
ItemBase
Definition
inventoryitem.c:742
ItemBase::StartPeriodicMeasurement
void StartPeriodicMeasurement()
Definition
raycaster.c:15
ItemBase::DoMeasurement
void DoMeasurement()
Definition
raycaster.c:31
ItemBase::OnWorkStop
override void OnWorkStop()
Definition
raycaster.c:63
ItemBase::StopPeriodicMeasurement
void StopPeriodicMeasurement()
Definition
raycaster.c:55
ItemBase::OnWorkStart
override void OnWorkStart()
Definition
raycaster.c:7
ItemBase::PrepareMeasurement
void PrepareMeasurement()
Definition
raycaster.c:25
ItemBase::m_Timer
ref Timer m_Timer
Definition
raycaster.c:5
ItemBase::SetActions
override void SetActions()
Definition
raycaster.c:71
Math
Definition
enmath.c:7
Particle
Legacy way of using particles in the game.
Definition
particle.c:7
ParticleList
Definition
particlelist.c:12
ParticleList::DEBUG_DOT
static const int DEBUG_DOT
Definition
particlelist.c:23
Timer
Definition
dayzplayerimplement.c:39
vector
Definition
enconvert.c:119
vector::AnglesToVector
proto vector AnglesToVector()
Converts spherical coordinates (yaw, pitch, roll in degrees) to unit length vector.
vector::VectorToAngles
proto vector VectorToAngles()
Converts vector to spherical coordinates with radius = 1.
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
Vector
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
Math::RandomFloat
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
GetPosition
vector GetPosition()
Get the world position of the Effect.
Definition
effect.c:473
ParticleManager
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor).
Definition
particlemanager.c:88
Games
Dayz
scripts
4_world
entities
itembase
raycaster.c
Generated by
1.17.0