Added mouth animation when speaking
This commit is contained in:
@ -272,6 +272,10 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
Main.QueueAction(() =>
|
Main.QueueAction(() =>
|
||||||
{
|
{
|
||||||
|
SyncedPed player = EntityPool.GetPedByID(packet.ID);
|
||||||
|
player.IsSpeaking = true;
|
||||||
|
player.LastSpeakingTime = Main.Ticked;
|
||||||
|
|
||||||
Sync.Voice.AddVoiceData(packet.Buffer, packet.Recorded);
|
Sync.Voice.AddVoiceData(packet.Buffer, packet.Recorded);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ namespace RageCoop.Client
|
|||||||
}
|
}
|
||||||
public static void SendVoiceMessage(byte[] buffer, int recorded)
|
public static void SendVoiceMessage(byte[] buffer, int recorded)
|
||||||
{
|
{
|
||||||
SendSync(new Packets.Voice() { Buffer = buffer, Recorded = recorded }, ConnectionChannel.Voice, NetDeliveryMethod.ReliableOrdered);
|
SendSync(new Packets.Voice() { ID = Main.LocalPlayerID, Buffer = buffer, Recorded = recorded }, ConnectionChannel.Voice, NetDeliveryMethod.ReliableOrdered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,34 @@
|
|||||||
using System;
|
using GTA;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using GTA;
|
|
||||||
using GTA.Native;
|
using GTA.Native;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace RageCoop.Client
|
namespace RageCoop.Client
|
||||||
{
|
{
|
||||||
public partial class SyncedPed
|
public partial class SyncedPed
|
||||||
{
|
{
|
||||||
|
private void DisplaySpeaking(bool speaking)
|
||||||
|
{
|
||||||
|
if (MainPed == null || !MainPed.Exists() || !MainPed.IsHuman)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (speaking)
|
||||||
|
{
|
||||||
|
Function.Call(Hash.PLAY_FACIAL_ANIM, MainPed.Handle, "mic_chatter", "mp_facial");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (MainPed.Gender)
|
||||||
|
{
|
||||||
|
case Gender.Male:
|
||||||
|
Function.Call(Hash.PLAY_FACIAL_ANIM, MainPed.Handle, "mood_normal_1", "facials@gen_male@variations@normal");
|
||||||
|
break;
|
||||||
|
case Gender.Female:
|
||||||
|
Function.Call(Hash.PLAY_FACIAL_ANIM, MainPed.Handle, "mood_normal_1", "facials@gen_female@variations@normal");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Function.Call(Hash.PLAY_FACIAL_ANIM, MainPed.Handle, "mood_normal_1", "facials@mime@variations@normal");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void DisplayInCover()
|
private void DisplayInCover()
|
||||||
{
|
{
|
||||||
|
@ -7,6 +7,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace RageCoop.Client
|
namespace RageCoop.Client
|
||||||
{
|
{
|
||||||
@ -80,6 +81,8 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
internal float Heading { get; set; }
|
internal float Heading { get; set; }
|
||||||
|
|
||||||
|
internal ulong LastSpeakingTime { get; set; } = 0;
|
||||||
|
internal bool IsSpeaking { get; set; } = false;
|
||||||
|
|
||||||
#region -- VARIABLES --
|
#region -- VARIABLES --
|
||||||
public byte Speed { get; set; }
|
public byte Speed { get; set; }
|
||||||
@ -214,6 +217,21 @@ namespace RageCoop.Client
|
|||||||
DisplayOnFoot();
|
DisplayOnFoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsSpeaking)
|
||||||
|
{
|
||||||
|
if (Main.Ticked - LastSpeakingTime < 10)
|
||||||
|
{
|
||||||
|
DisplaySpeaking(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DisplaySpeaking(false);
|
||||||
|
|
||||||
|
IsSpeaking = false;
|
||||||
|
LastSpeakingTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LastUpdated=Main.Ticked;
|
LastUpdated=Main.Ticked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,12 +6,14 @@ namespace RageCoop.Core
|
|||||||
{
|
{
|
||||||
internal class Voice : Packet
|
internal class Voice : Packet
|
||||||
{
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
public byte[] Buffer { get; set; }
|
public byte[] Buffer { get; set; }
|
||||||
public int Recorded { get; set; }
|
public int Recorded { get; set; }
|
||||||
public override PacketType Type => PacketType.Voice;
|
public override PacketType Type => PacketType.Voice;
|
||||||
public override byte[] Serialize()
|
public override byte[] Serialize()
|
||||||
{
|
{
|
||||||
var data = new List<byte>();
|
var data = new List<byte>();
|
||||||
|
data.AddInt(ID);
|
||||||
data.AddArray(Buffer);
|
data.AddArray(Buffer);
|
||||||
data.AddInt(Recorded);
|
data.AddInt(Recorded);
|
||||||
return data.ToArray();
|
return data.ToArray();
|
||||||
@ -19,6 +21,7 @@ namespace RageCoop.Core
|
|||||||
public override void Deserialize(byte[] array)
|
public override void Deserialize(byte[] array)
|
||||||
{
|
{
|
||||||
var reader = new BitReader(array);
|
var reader = new BitReader(array);
|
||||||
|
ID = reader.ReadInt32();
|
||||||
Buffer = reader.ReadByteArray();
|
Buffer = reader.ReadByteArray();
|
||||||
Recorded = reader.ReadInt32();
|
Recorded = reader.ReadInt32();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user