Merge branch 'develop' of https://git.brew.monster/Unity/perfect-world-unity into develop
This commit is contained in:
@@ -11,7 +11,8 @@ GameObject:
|
||||
- component: {fileID: 8870675310055835121}
|
||||
- component: {fileID: 1032798951918398042}
|
||||
- component: {fileID: 7301032545156009848}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 462207276974431652}
|
||||
m_Layer: 8
|
||||
m_Name: 14
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -86,6 +87,28 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &462207276974431652
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2583190483620898206}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: b659accf661a837479218c29e2eb3529, type: 2}
|
||||
--- !u!1 &5209988378375773062
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -11,7 +11,8 @@ GameObject:
|
||||
- component: {fileID: 6162223966912026141}
|
||||
- component: {fileID: 965572838707464366}
|
||||
- component: {fileID: 2799419047870559492}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 3416380344146776827}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -86,6 +87,28 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &3416380344146776827
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1158422796600389547}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: fc25f780d25e0ef4ea66bd04e30ed658, type: 2}
|
||||
--- !u!1 &5766366828536359331
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -12,6 +12,7 @@ GameObject:
|
||||
- component: {fileID: 1106703170944066569}
|
||||
- component: {fileID: 5489700157768253589}
|
||||
- component: {fileID: 4298657190085613173}
|
||||
- component: {fileID: 1609863900414086204}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
@@ -88,6 +89,28 @@ MeshRenderer:
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &4298657190085613173
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2129434667301194551}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: ce83280d624f8e74789ed3cdeb08e76e, type: 2}
|
||||
--- !u!64 &1609863900414086204
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
||||
@@ -11,7 +11,8 @@ GameObject:
|
||||
- component: {fileID: 2077347467210120610}
|
||||
- component: {fileID: 2965316739725448086}
|
||||
- component: {fileID: 1576250916172009662}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 4019614048923385075}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -86,6 +87,28 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &4019614048923385075
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5533184014301445498}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 044737b6cc6aab9428ff497cc85b34fa, type: 2}
|
||||
--- !u!1 &8220570836172173197
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -44,6 +44,7 @@ GameObject:
|
||||
- component: {fileID: 1085622182787639888}
|
||||
- component: {fileID: 116834778258431673}
|
||||
- component: {fileID: 3317247844365150934}
|
||||
- component: {fileID: 3543540647331422299}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
@@ -141,3 +142,25 @@ MeshCollider:
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 9c42325bdd3279f40b20a5c67aea773a, type: 2}
|
||||
--- !u!64 &3543540647331422299
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1278964582912123360}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 9c42325bdd3279f40b20a5c67aea773a, type: 2}
|
||||
|
||||
@@ -43,7 +43,8 @@ GameObject:
|
||||
- component: {fileID: 7062665856913133189}
|
||||
- component: {fileID: 5252691402266366719}
|
||||
- component: {fileID: 8181785019207413421}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 2607412906901198044}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -118,3 +119,25 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2607412906901198044
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4719748383613153397}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: ac223a98475ce5040878ad73deeb960a, type: 2}
|
||||
|
||||
@@ -43,7 +43,8 @@ GameObject:
|
||||
- component: {fileID: 1478712142538266266}
|
||||
- component: {fileID: 2131850469933741979}
|
||||
- component: {fileID: 6697441912009192607}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 770633596912448150}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -118,3 +119,25 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &770633596912448150
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6077317593588673797}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: b2f7526b9b6eb6d4b976678628fec85d, type: 2}
|
||||
|
||||
@@ -43,7 +43,8 @@ GameObject:
|
||||
- component: {fileID: 4941995905154783035}
|
||||
- component: {fileID: 8834982675719581640}
|
||||
- component: {fileID: 4008051189880721500}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 2927931621078331128}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -118,3 +119,25 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2927931621078331128
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8870165540406502598}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 5221555d479145f4098a1a90d443d25f, type: 2}
|
||||
|
||||
@@ -11,7 +11,8 @@ GameObject:
|
||||
- component: {fileID: 4601054390393476764}
|
||||
- component: {fileID: 8898356444586392207}
|
||||
- component: {fileID: 3768077324547372759}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 1187865960676330687}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -86,6 +87,28 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &1187865960676330687
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2908047605614509929}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 71432f5f083a6eb46bd2e86c544240fe, type: 2}
|
||||
--- !u!1 &8693206018944694632
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -43,7 +43,8 @@ GameObject:
|
||||
- component: {fileID: 636089995233464392}
|
||||
- component: {fileID: 2080258521648944025}
|
||||
- component: {fileID: 3480335849606063585}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 227664486918571123}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -118,3 +119,25 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &227664486918571123
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8682860827833279859}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 7b8eb8acdca70014c8fb0b4690909469, type: 2}
|
||||
|
||||
@@ -43,7 +43,8 @@ GameObject:
|
||||
- component: {fileID: 6182866067743937211}
|
||||
- component: {fileID: 6890386030446961812}
|
||||
- component: {fileID: 3007527381162661553}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 6960099531645814751}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -118,3 +119,25 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &6960099531645814751
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8634685187563485881}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 1417b7dbba8d24c4b8fcc930a31ea1ca, type: 2}
|
||||
|
||||
@@ -11,7 +11,8 @@ GameObject:
|
||||
- component: {fileID: 2020333967464460385}
|
||||
- component: {fileID: 2497554547442989164}
|
||||
- component: {fileID: 8596635813813102696}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 3281521522256558373}
|
||||
m_Layer: 8
|
||||
m_Name: WaterMeshRenderer(Clone)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -86,6 +87,28 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &3281521522256558373
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 189273667865298136}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: e869fae75abcd0d439c281909363035a, type: 2}
|
||||
--- !u!1 &3653160677674576190
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -17,6 +17,9 @@ namespace BrewMonster.Scripts
|
||||
protected bool m_fForceDown;
|
||||
|
||||
Vector3 g_vOrigin = Vector3.zero;
|
||||
|
||||
const float EC_NACCE_WATER = -5.0f;
|
||||
|
||||
public static class FlyFallStage
|
||||
{
|
||||
public const int enumStageNone = 0,
|
||||
@@ -130,13 +133,13 @@ namespace BrewMonster.Scripts
|
||||
else
|
||||
FreeFall_Air(fDeltaTime);
|
||||
}
|
||||
//else // m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER
|
||||
//{
|
||||
// if (m_iFallType == Fall_type.TYPE_FLYFALL)
|
||||
// Fall_Water(fDeltaTime);
|
||||
// else
|
||||
// FreeFall_Water(fDeltaTime);
|
||||
//}
|
||||
else // m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER
|
||||
{
|
||||
if (m_iFallType == Fall_type.TYPE_FLYFALL)
|
||||
Fall_Water(fDeltaTime);
|
||||
else
|
||||
FreeFall_Water(fDeltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -303,6 +306,11 @@ namespace BrewMonster.Scripts
|
||||
return true;
|
||||
}
|
||||
|
||||
private float A3d_Magnitude(A3DVECTOR3 v)
|
||||
{
|
||||
return Mathf.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
|
||||
}
|
||||
|
||||
// Finish
|
||||
public void Finish()
|
||||
{
|
||||
@@ -313,5 +321,177 @@ namespace BrewMonster.Scripts
|
||||
//if (m_iFallType == Fall_type.TYPE_FLYFALL)
|
||||
// m_pHost.ShowWing(false);
|
||||
}
|
||||
|
||||
// Free fall in water
|
||||
bool Fall_Water(float fDeltaTime)
|
||||
{
|
||||
A3DVECTOR3 vCurPos = m_pHost.GetPos();
|
||||
A3DVECTOR3 vCurVel = m_pHost.m_vVelocity;
|
||||
float fGndHei = m_pHost.m_GndInfo.fGndHei;
|
||||
|
||||
if (!m_bEnterWater)
|
||||
{
|
||||
m_bEnterWater = true;
|
||||
vCurVel = m_pHost.m_CDRInfo.vAbsVelocity;
|
||||
float fWaterHei = m_pHost.m_GndInfo.fWaterHei;
|
||||
if (fWaterHei - fGndHei > 1.5f)
|
||||
m_nCurStage = FlyFallStage.enumStageDeepWater;
|
||||
else
|
||||
m_nCurStage = FlyFallStage.enumStageShallowWater;
|
||||
}
|
||||
|
||||
float fSpeed1 = vCurVel.Normalize();
|
||||
float na = -fSpeed1 * 0.7f + EC_NACCE_WATER * 4.0f;
|
||||
float fSpeed2 = fSpeed1 + na * fDeltaTime;
|
||||
if (fSpeed2 * fSpeed1 < 0.0f)
|
||||
fSpeed2 = 0.0f;
|
||||
|
||||
if (m_fForceDown)
|
||||
{
|
||||
// Note: When speed=0 we should check whether a special case: EstimateMoveEnv find
|
||||
// we are in water but we stop at a underwater position which is very close
|
||||
// to water surface.
|
||||
// if (vCurPos.y < m_pHost.m_GndInfo.fWaterHei &&
|
||||
// m_pHost.m_GndInfo.fWaterHei - m_pHost.m_GndInfo.fGndHei > m_pHost.m_MoveConst.fShoreDepth &&
|
||||
if (m_pHost.CheckWaterMoveEnv(vCurPos, m_pHost.m_GndInfo.fWaterHei, m_pHost.m_GndInfo.fGndHei) &&
|
||||
m_pHost.m_GndInfo.fWaterHei - vCurPos.y < m_pHost.m_MoveConst.fShoreDepth)
|
||||
{
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vDirH, m_fSpeedH, fDeltaTime, -5.0f);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
// Fall on ground
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.m_vVelocity.Magnitude(), (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Math.Abs(fSpeed2 - 0f) > float.Epsilon)
|
||||
{
|
||||
A3DVECTOR3 vOldPos = vCurPos;
|
||||
vCurPos = m_pHost.m_MoveCtrl.AirWaterMove(vCurVel, fSpeed2, fDeltaTime, false, false);
|
||||
vCurVel *= fSpeed2;
|
||||
|
||||
if (m_nCurStage == FlyFallStage.enumStageShallowWater)
|
||||
{
|
||||
if (vCurPos.y - fGndHei < 1.0f)
|
||||
{
|
||||
//if (m_pHost.UsingWing())
|
||||
if (m_pHost.GetWingType() == enumWingType.WINGTYPE_WING)
|
||||
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_LANDON, false);
|
||||
else
|
||||
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_LANDON_SWORD, false);
|
||||
|
||||
m_nCurStage = FlyFallStage.enumStageLandOn;
|
||||
}
|
||||
}
|
||||
else if (m_nCurStage == FlyFallStage.enumStageDeepWater)
|
||||
{
|
||||
if (vCurVel.y > -9.0f)
|
||||
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_HANGINWATER, false);
|
||||
}
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3 ||
|
||||
vCurPos.y - m_pHost.m_MoveConst.fMinWaterHei <= fGndHei)
|
||||
{
|
||||
// Fall on ground
|
||||
Finish();
|
||||
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.m_vVelocity.Magnitude(), (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(vCurPos, 2, EC_Utility.ToA3DVECTOR3(g_vOrigin), vCurVel, (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity = vCurVel;
|
||||
}
|
||||
|
||||
// If moving too small
|
||||
if (A3d_Magnitude(vCurPos - vOldPos) < 0.001f)
|
||||
m_fForceDown = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed1, (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Free fall in water
|
||||
bool FreeFall_Water(float fDeltaTime)
|
||||
{
|
||||
A3DVECTOR3 vCurPos = m_pHost.GetPos();
|
||||
A3DVECTOR3 vCurVel = m_pHost.m_vVelocity;
|
||||
float fGndHei = m_pHost.m_GndInfo.fGndHei;
|
||||
|
||||
if (!m_bEnterWater)
|
||||
{
|
||||
m_bEnterWater = true;
|
||||
vCurVel = m_pHost.m_CDRInfo.vAbsVelocity;
|
||||
float fWaterHei = m_pHost.m_GndInfo.fWaterHei;
|
||||
if (fWaterHei - fGndHei > 1.5f)
|
||||
m_nCurStage = FlyFallStage.enumStageDeepWater;
|
||||
else
|
||||
m_nCurStage = FlyFallStage.enumStageShallowWater;
|
||||
}
|
||||
|
||||
float fSpeed1 = vCurVel.Normalize();
|
||||
float na = EC_NACCE_WATER * 4.0f;
|
||||
float fSpeed2 = fSpeed1 + na * fDeltaTime;
|
||||
if (fSpeed2 * fSpeed1 < 0.0f)
|
||||
fSpeed2 = 0.0f;
|
||||
|
||||
if (Math.Abs(fSpeed2 - 0f) > float.Epsilon)
|
||||
{
|
||||
vCurPos = m_pHost.m_MoveCtrl.AirWaterMove(vCurVel, fSpeed2, fDeltaTime, false, false);
|
||||
vCurVel *= fSpeed2;
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3 ||
|
||||
vCurPos.y - m_pHost.m_MoveConst.fMinWaterHei <= fGndHei)
|
||||
{
|
||||
// Fall on ground
|
||||
Finish();
|
||||
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.m_vVelocity.Magnitude(), (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(vCurPos, 2, EC_Utility.ToA3DVECTOR3(g_vOrigin), vCurVel, (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity = vCurVel;
|
||||
|
||||
if (m_nCurStage == FlyFallStage.enumStageDeepWater)
|
||||
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_HANGINWATER, false);
|
||||
else
|
||||
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_JUMP_LOOP, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed1, (int)GPMoveMode.GP_MOVE_WATER | m_iFallMode);
|
||||
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1091,6 +1091,11 @@ namespace BrewMonster.Scripts
|
||||
// vUp = a3d_RotatePosAroundAxis(vUp, vPushDir, m_fPushPitch);
|
||||
|
||||
//m_pHost.StartModelMove(vPushDir, vUp, 0);
|
||||
|
||||
if (vPushDir != Vector3.zero)
|
||||
{
|
||||
m_pHost.SetRotationHPWithTime(vPushDir, 0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
// if (bPush)
|
||||
@@ -1124,6 +1129,7 @@ namespace BrewMonster.Scripts
|
||||
// A3DVECTOR3 vVel = vPushDir * fSpeed2;
|
||||
Vector3 vVel = vVelDir * fSpeed2;
|
||||
vCurPos = m_pHost.m_MoveCtrl.AirWaterMove(EC_Utility.ToA3DVECTOR3(vVel), fDeltaTime, bInAir);
|
||||
Debug.DrawLine(EC_Utility.ToVector3(m_pHost.GetPos()), EC_Utility.ToVector3(vCurPos), Color.red, 0.5f);
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
Finish();
|
||||
|
||||
@@ -5,12 +5,15 @@ using CSNetwork.GPDataType;
|
||||
using PerfectWorld.Scripts;
|
||||
using CSNetwork;
|
||||
using UnityEngine;
|
||||
using static BrewMonster.Scripts.CECHPWork;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public partial class CECHostPlayer
|
||||
{
|
||||
float _JumpTime = -1;
|
||||
public float _JumpTime = -1;
|
||||
public bool isPressMoveUp = false;
|
||||
public bool isPressMoveDown = false;
|
||||
|
||||
public void OnKeyDown()
|
||||
{
|
||||
@@ -18,10 +21,18 @@ namespace BrewMonster
|
||||
{
|
||||
OnMsgLBtnClick();
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
if (Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
isPressMoveUp = true;
|
||||
OnMsgHstPushMove();
|
||||
OnClickBtnJump();
|
||||
}
|
||||
if (Input.GetKeyUp(KeyCode.Space))
|
||||
{
|
||||
isPressMoveUp = false;
|
||||
}
|
||||
#endif
|
||||
if (Input.GetKeyDown(KeyCode.Escape))
|
||||
{
|
||||
OnClickBtnEscape();
|
||||
@@ -119,7 +130,6 @@ namespace BrewMonster
|
||||
// Check for NPC with pate text (hover text) first
|
||||
// Note: This would require GetMouseOnPateTextNPC implementation
|
||||
// For now, we'll proceed with raycast
|
||||
|
||||
if (Physics.RaycastNonAlloc(ray, hits) > 0)
|
||||
{
|
||||
// Check if hit terrain, building, or forest (no CECObject component)
|
||||
@@ -513,6 +523,88 @@ namespace BrewMonster
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnClickJoystick(JoystickPressEvent joystickPressEvent)
|
||||
{
|
||||
OnMsgHstPushMove();
|
||||
}
|
||||
|
||||
public void OnMsgHstPushMove()
|
||||
{
|
||||
//_playerStateMachine.ChangeState(_moveState);
|
||||
/* if (m_pWorkMan.IsSitting())
|
||||
{
|
||||
g_pGame.GetGameSession().c2s_CmdStandUp();
|
||||
return;
|
||||
}*/
|
||||
m_dwMoveRelDir = 0;
|
||||
if (!CanDo(ActionCanDo.CANDO_MOVETO)) return;
|
||||
if (joystick.Vertical > 0)
|
||||
{
|
||||
if (joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if (joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)MOVE_DIR.MD_FORWARD;
|
||||
}
|
||||
}
|
||||
else if (joystick.Vertical < 0)
|
||||
{
|
||||
if (joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_BACK | MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if (joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_BACK | MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)MOVE_DIR.MD_BACK;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if (joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
}
|
||||
if (isPressMoveUp)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_ABSUP);
|
||||
}
|
||||
if (isPressMoveDown)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_ABSDOWN);
|
||||
}
|
||||
bool bPushMove = true;
|
||||
if (isPressMoveUp || isPressMoveDown)
|
||||
{
|
||||
if (m_iMoveEnv != (int)MoveEnvironment.MOVEENV_AIR && m_iMoveEnv != (int)MoveEnvironment.MOVEENV_WATER)
|
||||
bPushMove = false;
|
||||
}
|
||||
|
||||
if (bPushMove && !IsAboutToDie() && CanDo(ActionCanDo.CANDO_MOVETO))
|
||||
{
|
||||
if (m_pWorkMan.CanStartWork(Host_work_ID.WORK_MOVETOPOS))
|
||||
{
|
||||
CECHPWorkMove pNewWork = (CECHPWorkMove)m_pWorkMan.CreateWork(Host_work_ID.WORK_MOVETOPOS);
|
||||
pNewWork.SetDestination(CECHPWorkMove.DestTypes.DEST_PUSH, g_vOrigin);
|
||||
m_pWorkMan.StartWork_p1(pNewWork);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnClickBtnEscape()
|
||||
{
|
||||
// if( bInAutoMode ) break;
|
||||
|
||||
@@ -88,6 +88,7 @@ namespace BrewMonster
|
||||
// 需要是可能 || Need is possible
|
||||
protected bool m_bHangerOn = false;
|
||||
protected int m_iCurAction;
|
||||
bool m_bAboutToDie = false;
|
||||
|
||||
public MOVECONST m_MoveConst; // Const used when moving control
|
||||
public Move_Mode m_MoveMode;
|
||||
@@ -1602,6 +1603,10 @@ namespace BrewMonster
|
||||
return bRet;
|
||||
|
||||
}
|
||||
|
||||
public bool IsAboutToDie() { return m_bAboutToDie; }
|
||||
|
||||
public void SetAboutToDie(bool bFlag) { m_bAboutToDie = bFlag; }
|
||||
}
|
||||
|
||||
public struct PlayActionEvent
|
||||
|
||||
@@ -176,7 +176,7 @@ namespace BrewMonster
|
||||
h0 = fHitsWater[0].point.y;
|
||||
}
|
||||
float h1 = 0f;
|
||||
countHits0 = Physics.RaycastNonAlloc((vWatStart + vDelta), Vector3.down, fHitsWater, 1000f, 1 << 8);
|
||||
countHits0 = Physics.RaycastNonAlloc((vWatStart + vDelta) + Vector3.up * 500f, Vector3.down, fHitsWater, 1000f, 1 << 8);
|
||||
if(countHits0 > 0)
|
||||
{
|
||||
h1 = fHitsWater[0].point.y;
|
||||
@@ -818,7 +818,7 @@ namespace BrewMonster
|
||||
trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_WATER;
|
||||
trcInfo.vExt = vExt;
|
||||
|
||||
while (nTry < 1)
|
||||
while (nTry < 4)
|
||||
{
|
||||
if (vDelta.SquaredMagnitude() < DIST_EPSILON)
|
||||
{
|
||||
@@ -850,7 +850,7 @@ namespace BrewMonster
|
||||
{//rescue from solid
|
||||
//@note : it may cause some problems. By Kuiwu[11/10/2005]
|
||||
float fHWater = 0f;
|
||||
int countHits0 = Physics.RaycastNonAlloc(EC_Utility.ToVector3(vStart) + Vector3.up * 900f, Vector3.down, fHitsWater, 1000f, 1 << 8);
|
||||
int countHits0 = Physics.RaycastNonAlloc(EC_Utility.ToVector3(vStart) + Vector3.up * 500f, Vector3.down, fHitsWater, 1000f, 1 << 8);
|
||||
if(countHits0 > 0)
|
||||
{
|
||||
fHWater = fHitsWater[0].point.y;
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
using BrewMonster.Network;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BrewMonster.UI
|
||||
{
|
||||
public class JumpBtn : MonoBehaviour
|
||||
public class JumpBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
{
|
||||
Button jumpBtn;
|
||||
CECHostPlayer pHost => EC_Game.GetGameRun()?.GetHostPlayer();
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
@@ -20,9 +22,24 @@ namespace BrewMonster.UI
|
||||
|
||||
private void OnClickBtnJump()
|
||||
{
|
||||
if(EC_Game.GetGameRun()?.GetHostPlayer() != null)
|
||||
|
||||
}
|
||||
|
||||
public void OnPointerDown(PointerEventData eventData)
|
||||
{
|
||||
if (pHost != null)
|
||||
{
|
||||
EC_Game.GetGameRun()?.GetHostPlayer().OnClickBtnJump();
|
||||
pHost.isPressMoveUp = true;
|
||||
pHost.OnMsgHstPushMove();
|
||||
pHost.OnClickBtnJump();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPointerUp(PointerEventData eventData)
|
||||
{
|
||||
if (pHost != null)
|
||||
{
|
||||
pHost.isPressMoveUp = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace BrewMonster.Scripts.World
|
||||
uint m_dwBornStamp = 0;
|
||||
CECAssureMove m_pAssureMove; // object used to assure move
|
||||
int m_idInst = 161; // id of instance
|
||||
RaycastHit[] fHitsWater = new RaycastHit[5];
|
||||
|
||||
public uint GetBornStamp() { return m_dwBornStamp++; }
|
||||
|
||||
@@ -39,8 +40,17 @@ namespace BrewMonster.Scripts.World
|
||||
public float GetWaterHeight(A3DVECTOR3 vPos)
|
||||
{
|
||||
// TODO: Hook into the actual water system once it is available.
|
||||
A3DVECTOR3 dummy = default;
|
||||
return GetTerrainHeight(vPos, ref dummy);
|
||||
//A3DVECTOR3 dummy = default;
|
||||
//return GetTerrainHeight(vPos, ref dummy);
|
||||
|
||||
//Get Height Water in Unity
|
||||
float h0 = 0f;
|
||||
int countHits0 = Physics.RaycastNonAlloc(EC_Utility.ToVector3(vPos) + Vector3.up * 500f, Vector3.down, fHitsWater, 1000f, 1 << 8);
|
||||
if (countHits0 > 0)
|
||||
{
|
||||
h0 = fHitsWater[0].point.y;
|
||||
}
|
||||
return h0;
|
||||
}
|
||||
|
||||
public CECObject GetObject(int idObject, int iAliveFlag)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8d000c591a07dbcc738de27f875dae17a1efdb95215b343f09f55ae37bf13ee0
|
||||
size 200785881
|
||||
oid sha256:2e061f4870d980f3ea929a34fa1dc95ea640cd5d8071ed5638bcdd9a7ac5461c
|
||||
size 200797970
|
||||
|
||||
+142
-87
@@ -16,6 +16,7 @@ using ModelRenderer.Scripts.GameData;
|
||||
using PerfectWorld.Scripts;
|
||||
using PerfectWorld.Scripts.Managers;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
@@ -2242,14 +2243,14 @@ namespace BrewMonster
|
||||
|
||||
public void OnMsgHstCorrectPos(in ECMSG Msg)
|
||||
{
|
||||
//Debug.LogError("HoangDev : OnMsgHstCorrectPos");
|
||||
Debug.LogError("HoangDev : OnMsgHstCorrectPos");
|
||||
byte[] buf = (byte[])Msg.dwParam1; // chỗ bạn lưu pDataBuf
|
||||
GCHandle handle = GCHandle.Alloc(buf, GCHandleType.Pinned);
|
||||
cmd_host_correct_pos pCmd = (cmd_host_correct_pos)Marshal.PtrToStructure(
|
||||
handle.AddrOfPinnedObject(), typeof(cmd_host_correct_pos));
|
||||
handle.Free();
|
||||
//cmd_host_correct_pos pCmd = GPDataTypeHelper.FromBytes<cmd_host_correct_pos>((byte[])Msg.dwParam1);
|
||||
//Debug.LogError("HoangDev :pCmd.pos " + pCmd.pos);
|
||||
Debug.LogError("HoangDev :pCmd.pos " + pCmd.pos);
|
||||
SetPos(pCmd.pos);
|
||||
m_vVelocity.Clear();
|
||||
m_CDRInfo.vAbsVelocity.Clear();
|
||||
@@ -2471,7 +2472,7 @@ namespace BrewMonster
|
||||
m_dwResFlags = (uint)PlayerResourcesReadyFlag.RESFG_ALL;
|
||||
joystick = FindAnyObjectByType<Joystick>();
|
||||
EventBus.Subscribe<JoystickRealeaseEvent>(JoystickRelease);
|
||||
EventBus.Subscribe<JoystickPressEvent>(OnMsgHstPushMove);
|
||||
EventBus.Subscribe<JoystickPressEvent>(OnClickJoystick);
|
||||
if (TryGetComponent<PlayerVisual>(out var visual))
|
||||
{
|
||||
visual.InitPlayerEventDoneHandler();
|
||||
@@ -2562,79 +2563,10 @@ namespace BrewMonster
|
||||
// TODO: Move this to right flow later , it's just for test now
|
||||
}
|
||||
|
||||
private void OnMsgHstPushMove(JoystickPressEvent joystickPressEvent)
|
||||
{
|
||||
//_playerStateMachine.ChangeState(_moveState);
|
||||
/* if (m_pWorkMan.IsSitting())
|
||||
{
|
||||
g_pGame.GetGameSession().c2s_CmdStandUp();
|
||||
return;
|
||||
}*/
|
||||
m_dwMoveRelDir = 0;
|
||||
if (!CanDo(ActionCanDo.CANDO_MOVETO)) return;
|
||||
if(joystick.Vertical > 0)
|
||||
{
|
||||
if(joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if(joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)MOVE_DIR.MD_FORWARD;
|
||||
}
|
||||
}
|
||||
else if (joystick.Vertical < 0)
|
||||
{
|
||||
if (joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_BACK | MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if (joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_BACK | MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)MOVE_DIR.MD_BACK;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (joystick.Horizontal > 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_RIGHT);
|
||||
}
|
||||
else if (joystick.Horizontal < 0)
|
||||
{
|
||||
m_dwMoveRelDir |= (uint)(MOVE_DIR.MD_LEFT);
|
||||
}
|
||||
}
|
||||
bool bPushMove = true;
|
||||
/* if (Msg.dwParam1 == 8 || Msg.dwParam1 == 9)
|
||||
{
|
||||
if (m_iMoveEnv != (int)MoveEnvironment.MOVEENV_AIR && m_iMoveEnv != (int)MoveEnvironment.MOVEENV_WATER)
|
||||
bPushMove = false;
|
||||
}*/
|
||||
|
||||
if (bPushMove /*&& !IsAboutToDie()*/ && CanDo(ActionCanDo.CANDO_MOVETO))
|
||||
{
|
||||
if (m_pWorkMan.CanStartWork(Host_work_ID.WORK_MOVETOPOS))
|
||||
{
|
||||
CECHPWorkMove pNewWork = (CECHPWorkMove)m_pWorkMan.CreateWork(Host_work_ID.WORK_MOVETOPOS);
|
||||
pNewWork.SetDestination(CECHPWorkMove.DestTypes.DEST_PUSH, g_vOrigin);
|
||||
m_pWorkMan.StartWork_p1(pNewWork);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
EventBus.Unsubscribe<JoystickRealeaseEvent>(JoystickRelease);
|
||||
EventBus.Unsubscribe<JoystickPressEvent>(OnMsgHstPushMove);
|
||||
EventBus.Unsubscribe<JoystickPressEvent>(OnClickJoystick);
|
||||
}
|
||||
|
||||
//TODO: Remove this function. Since it has been deprecated.
|
||||
@@ -4523,6 +4455,14 @@ namespace BrewMonster
|
||||
vPushDir = Vector3.zero;
|
||||
if (joystick.Horizontal == 0 && joystick.Vertical == 0)
|
||||
{
|
||||
if (isPressMoveUp)
|
||||
{
|
||||
vPushDir = Vector3.up;
|
||||
}
|
||||
else if (isPressMoveDown)
|
||||
{
|
||||
vPushDir = Vector3.down;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -4531,10 +4471,22 @@ namespace BrewMonster
|
||||
}
|
||||
else if (m_iMoveEnv == Move_environment.MOVEENV_WATER)
|
||||
{
|
||||
vPushDir.x = joystick.Horizontal;
|
||||
vPushDir.y = (transform.position - mainCam.transform.position).normalized.y;
|
||||
vPushDir.z = joystick.Vertical;
|
||||
vPushDir.Normalize();
|
||||
float angle = Vector2.Angle(new Vector2(joystick.Horizontal, joystick.Vertical), Vector2.up);
|
||||
angle *= joystick.Horizontal < 0 ? 1 : -1;
|
||||
Vector2 v2Cam = new Vector2(mainCam.transform.forward.x, mainCam.transform.forward.z);
|
||||
v2Cam = Quaternion.Euler(0, 0, angle) * v2Cam;
|
||||
v2Cam.Normalize();
|
||||
vPushDir.x = v2Cam.x;
|
||||
vPushDir.y = ((transform.position + Vector3.up * m_CDRInfo.vExtent.y) - mainCam.transform.position).normalized.y;
|
||||
if (isPressMoveUp)
|
||||
{
|
||||
vPushDir.y = Math.Abs(vPushDir.y) * Time.deltaTime;
|
||||
}
|
||||
else if (isPressMoveDown)
|
||||
{
|
||||
vPushDir.y = -Math.Abs(vPushDir.y) * Time.deltaTime;
|
||||
}
|
||||
vPushDir.z = v2Cam.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4554,12 +4506,28 @@ namespace BrewMonster
|
||||
// Is under water
|
||||
bool CanTakeOffWater()
|
||||
{
|
||||
return true;
|
||||
// TO DO: fix later
|
||||
//A3DVECTOR3 vPos = GetPos();
|
||||
//if (vPos.y < EC_Game.GetGameRun().GetWorld().GetWaterHeight(vPos) - m_MoveConst.fShoreDepth)
|
||||
// return false;
|
||||
//else
|
||||
// return true;
|
||||
|
||||
A3DVECTOR3 vPos = GetPos();
|
||||
float h0 = 0f;
|
||||
int countHits0 = Physics.RaycastNonAlloc(EC_Utility.ToVector3(vPos) + Vector3.up * 500f, Vector3.down, hits, 1000f, 1 << 8);
|
||||
if (countHits0 > 0)
|
||||
{
|
||||
h0 = hits[0].point.y;
|
||||
}
|
||||
if(vPos.y < h0 - m_MoveConst.fShoreDepth)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsUsingItem()
|
||||
@@ -4583,6 +4551,27 @@ namespace BrewMonster
|
||||
transform.rotation = Quaternion.LookRotation(dir);
|
||||
}
|
||||
|
||||
public void SetRotationHPWithTime(Vector3 dir, float time)
|
||||
{
|
||||
StartCoroutine(RotateToDir(transform, dir, time));
|
||||
}
|
||||
|
||||
IEnumerator RotateToDir(Transform target, Vector3 dir, float duration)
|
||||
{
|
||||
Quaternion startRot = target.rotation;
|
||||
Quaternion endRot = Quaternion.LookRotation(dir);
|
||||
float t = 0f;
|
||||
|
||||
while (t < duration)
|
||||
{
|
||||
t += Time.deltaTime;
|
||||
target.rotation = Quaternion.Slerp(startRot, endRot, t / duration);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
target.rotation = endRot;
|
||||
}
|
||||
|
||||
void SetJumpInWater(bool b)
|
||||
{
|
||||
m_bJumpInWater = b;
|
||||
@@ -5328,7 +5317,7 @@ namespace BrewMonster
|
||||
}
|
||||
|
||||
// Is under water
|
||||
bool IsUnderWater()
|
||||
public bool IsUnderWater()
|
||||
{
|
||||
return m_iMoveEnv == Move_environment.MOVEENV_WATER ? true : false;
|
||||
}
|
||||
@@ -5418,7 +5407,7 @@ namespace BrewMonster
|
||||
VertRayTrace(EC_Utility.ToVector3(vTestPos), ref vGndPos, ref m_GndInfo.vGndNormal, 1000f);
|
||||
m_GndInfo.fGndHei = vGndPos.y;
|
||||
|
||||
if(Physics.RaycastNonAlloc(EC_Utility.ToVector3(vTestPos), Vector3.down, hits, 1000f, 1<<8) > 0)
|
||||
if (Physics.RaycastNonAlloc(EC_Utility.ToVector3(vTestPos) + Vector3.up * 500f, Vector3.down, hits, 1000f, 1 << 8) > 0)
|
||||
{
|
||||
m_GndInfo.fWaterHei = hits[0].point.y;
|
||||
}
|
||||
@@ -5520,13 +5509,13 @@ namespace BrewMonster
|
||||
|
||||
LayerMask layerMaskTerrain = 1 << 6;
|
||||
LayerMask layerMaskBush = 1 << 7;
|
||||
if (Physics.RaycastNonAlloc(vPos, (vPos + Vector3.down), hits, layerMaskTerrain) > 0)
|
||||
if (Physics.RaycastNonAlloc(vPos, (Vector3.down), hits, layerMaskTerrain) > 0)
|
||||
{
|
||||
vTerrainPos = hits[0].point;
|
||||
vTerrainNormal = hits[0].normal;
|
||||
}
|
||||
|
||||
if (Physics.RaycastNonAlloc(vPos, (vPos + Vector3.down), hits, DeltaY, layerMaskTerrain) > 0)
|
||||
if (Physics.RaycastNonAlloc(vPos, (Vector3.down), hits, DeltaY, layerMaskBush) > 0)
|
||||
{
|
||||
if (vBuildingPos.y > vTerrainPos.y)
|
||||
{
|
||||
@@ -5554,19 +5543,85 @@ namespace BrewMonster
|
||||
vHitPos.y -= DeltaY;
|
||||
|
||||
LayerMask layerMask = 1 << 6 | 1 << 7;
|
||||
if (Physics.BoxCastNonAlloc(vCenter, vExt, (vCenter + Vector3.down).normalized,
|
||||
hits, transform.rotation, DeltaY, layerMask) == 0)
|
||||
hits = new RaycastHit[5];
|
||||
int count = Physics.BoxCastNonAlloc(vCenter, vExt, (Vector3.down).normalized,
|
||||
hits, transform.rotation, DeltaY, layerMask);
|
||||
if (count == 0)
|
||||
{
|
||||
vHitPos = vCenter;
|
||||
vHitNormal = EC_Utility.ToA3DVECTOR3(Vector3.up);
|
||||
}
|
||||
else
|
||||
{
|
||||
vHitPos = hits[0].point;
|
||||
vHitNormal = EC_Utility.ToA3DVECTOR3(hits[0].normal);
|
||||
{
|
||||
if (Math.Abs(hits[0].distance - 0f) <= float.Epsilon)
|
||||
{
|
||||
count = Physics.BoxCastNonAlloc(vCenter, new Vector3(vExt.x, 0.05f, vExt.z), (Vector3.down).normalized,
|
||||
hits, transform.rotation, DeltaY, layerMask);
|
||||
if(count == 0)
|
||||
{
|
||||
vHitPos = vCenter;
|
||||
vHitNormal = EC_Utility.ToA3DVECTOR3(Vector3.up);
|
||||
}
|
||||
else
|
||||
{
|
||||
vHitPos = hits[0].point;
|
||||
vHitPos.y += vExt.y;
|
||||
vHitNormal = EC_Utility.ToA3DVECTOR3(hits[0].normal);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DebugBoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction,
|
||||
Quaternion orientation, float distance, Color color)
|
||||
{
|
||||
Vector3 end = center + direction.normalized * distance;
|
||||
|
||||
// Vẽ box ở vị trí bắt đầu
|
||||
DebugDrawBox(center, halfExtents, orientation, color);
|
||||
|
||||
// Vẽ box ở vị trí kết thúc
|
||||
DebugDrawBox(end, halfExtents, orientation, color);
|
||||
|
||||
// Vẽ đường nối giữa 2 box
|
||||
Debug.DrawLine(center, end, color);
|
||||
}
|
||||
|
||||
// Vẽ 1 box từ center + halfExtents + rotation
|
||||
void DebugDrawBox(Vector3 center, Vector3 halfExtents, Quaternion orientation, Color color)
|
||||
{
|
||||
var matrix = Matrix4x4.TRS(center, orientation, Vector3.one);
|
||||
Vector3[] points = {
|
||||
matrix.MultiplyPoint3x4(new Vector3(-halfExtents.x, -halfExtents.y, -halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3( halfExtents.x, -halfExtents.y, -halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3( halfExtents.x, -halfExtents.y, halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3(-halfExtents.x, -halfExtents.y, halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3(-halfExtents.x, halfExtents.y, -halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3( halfExtents.x, halfExtents.y, -halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3( halfExtents.x, halfExtents.y, halfExtents.z)),
|
||||
matrix.MultiplyPoint3x4(new Vector3(-halfExtents.x, halfExtents.y, halfExtents.z))
|
||||
};
|
||||
|
||||
// đáy
|
||||
Debug.DrawLine(points[0], points[1], color);
|
||||
Debug.DrawLine(points[1], points[2], color);
|
||||
Debug.DrawLine(points[2], points[3], color);
|
||||
Debug.DrawLine(points[3], points[0], color);
|
||||
|
||||
// đỉnh
|
||||
Debug.DrawLine(points[4], points[5], color);
|
||||
Debug.DrawLine(points[5], points[6], color);
|
||||
Debug.DrawLine(points[6], points[7], color);
|
||||
Debug.DrawLine(points[7], points[4], color);
|
||||
|
||||
// cạnh
|
||||
Debug.DrawLine(points[0], points[4], color);
|
||||
Debug.DrawLine(points[1], points[5], color);
|
||||
Debug.DrawLine(points[2], points[6], color);
|
||||
Debug.DrawLine(points[3], points[7], color);
|
||||
}
|
||||
|
||||
|
||||
void OnMsgHstExtProp(ECMSG Msg)
|
||||
{
|
||||
cmd_own_ext_prop pCmd = GPDataTypeHelper.FromBytes<cmd_own_ext_prop>((byte[])Msg.dwParam1);
|
||||
|
||||
Reference in New Issue
Block a user