
15.07.2020, 11:55
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Проверяет на экране ли объект / пикап / 3dтекст
Без проверки на то что этот объект / пикап / 3dтекст существует
C++:
[CODE]
void
CalcScreenCoors
(
D3DXVECTOR3
*
vecWorld
,
D3DXVECTOR3
*
vecScreen
)
{
D3DXMATRIX
m
(
(
float
*
)
(
0xB6FA2C
)
)
;
DWORD
*
dwLenX
=
(
DWORD
*
)
(
0xC17044
)
;
DWORD
*
dwLenY
=
(
DWORD
*
)
(
0xC17048
)
;
vecScreen
->
x
=
(
vecWorld
->
z
*
m
.
_31
)
+
(
vecWorld
->
y
*
m
.
_21
)
+
(
vecWorld
->
x
*
m
.
_11
)
+
m
.
_41
;
vecScreen
->
y
=
(
vecWorld
->
z
*
m
.
_32
)
+
(
vecWorld
->
y
*
m
.
_22
)
+
(
vecWorld
->
x
*
m
.
_12
)
+
m
.
_42
;
vecScreen
->
z
=
(
vecWorld
->
z
*
m
.
_33
)
+
(
vecWorld
->
y
*
m
.
_23
)
+
(
vecWorld
->
x
*
m
.
_13
)
+
m
.
_43
;
double
fRecip
=
(
double
)
1.0
/
vecScreen
->
z
;
vecScreen
->
x
*=
(
float
)
(
fRecip
*
(
*
dwLenX
)
)
;
vecScreen
->
y
*=
(
float
)
(
fRecip
*
(
*
dwLenY
)
)
;
}
bool
IsPickOnScreen
(
int
p
)
{
D3DXVECTOR3 vecPos
;
vecPos
.
x
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
0
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
+
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
+
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
0
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z
|
|
|