Dear Friends at Epic,
I’ve tried to replicate the following with no success, each version is trying to carry same data
over the network, which is 255 true or false values to know whether to hide certain landcapes for the client
Context: Please note I am doing this all within a class extending AStaticMeshActor, not sure if this is relevant
//static array of uint8
uint8 LandscapeHidden[255];
//static array of int32
int32 LandscapeHidden[255];
//struct version, code below
The Compile Error
I am getting a compile error along the lines of:
1>E:\RocketVictory\VictoryGame\Source\VictoryGame\Private\Editor\VictoryPower.cpp(46): error C2665: 'NEQ' : none of the 19 overloads could convert all the argument types
1> c:\program files\rocket\engine\intermediate\builddata\include\engine\../../../../Source/Runtime/Engine/Classes/Vehicles/VehicleMovementComponent.h(128): could be 'bool NEQ(const FReplicatedVehicleState &,const FReplicatedVehicleState &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(58): or 'bool NEQ(uint8,uint8,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(59): or 'bool NEQ(int32,int32,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(60): or 'bool NEQ(uint64,uint64,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(61): or 'bool NEQ(uint32,uint32,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(62): or 'bool NEQ(float &,float &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(63): or 'bool NEQ(FVector &,FVector &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(66): or 'bool NEQ(FRotator &,FRotator &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(68): or 'bool NEQ(const UObject *,const UObject *,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(73): or 'bool NEQ(FName &,FName,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(74): or 'bool NEQ(FColor &,FColor &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(75): or 'bool NEQ(FLinearColor &,FLinearColor &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(76): or 'bool NEQ(FPlane &,FPlane &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(79): or 'bool NEQ(const FString &,const FString &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(80): or 'bool NEQ(const FRigidBodyState &,const FRigidBodyState &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(84): or 'bool NEQ(FVector2D &,FVector2D &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(85): or 'bool NEQ(FGuid &,FGuid &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(86): or 'bool NEQ(FRepMovement &,FRepMovement &,UPackageMap *,UActorChannel *)'
1> C:\Program Files\Rocket\Engine\Source\Runtime\Engine\Public\Net/UnrealNetwork.h(92): or 'bool NEQ(FNetworkGUID &,FNetworkGUID &,UPackageMap *,UActorChannel *)'
1> while trying to match the argument list '(FLandscapeHiddenStruct, FLandscapeHiddenStruct, UPackageMap *, UActorChannel *)'
Here is my Struct version code
.h
//LandscapeHiddenStruct
USTRUCT()
struct FLandscapeHiddenStruct
{
GENERATED_USTRUCT_BODY()
//Vars
uint8 LandscapeHidden[255]; //only using 0 and 1
//~~~~~~~~~~~~~~~~~~~
//default properties
FLandscapeHiddenStruct()
{
LandscapeHidden[0] = 1;
for (uint8 i = 1; i < 256; i++ )
{
LandscapeHidden[i] = 0;
}
}
};
UCLASS(placeable)
class AVictoryPower : public AJoySMA
{
GENERATED_UCLASS_BODY()
//Landscapes
public:
//make static array
/*
Rep Retry
Only useful for struct properties.
Retry replication of this property if it fails to be fully sent
(e.g. object references not yet available to serialize over
the network). For simple references this is the default,
but for structs this is often undesirable due to the bandwidth cost,
so it is disabled unless this flag is specified.
*/
UPROPERTY(Replicated, RepRetry)
FLandscapeHiddenStruct LandscapeHidden;
here is my .cpp
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Replication List
int32* AVictoryPower::GetReplicationList(uint8* Recent, FPropertyRetirement* Retire, int32* Ptr, UPackageMap* Map, UActorChannel* Channel, FReplicationFlags RepFlags)
{
Ptr = Super::GetReplicationList(Recent, Retire, Ptr, Map, Channel, RepFlags);
//Landscapes
DOREP(AVictoryPower, LandscapeHidden);
return Ptr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Again please note this is a compile error so I’m not posting any other code about how I actually call/set LandscapeHidden values
Thanks!
Rama