- Just a old name for a set of changes to make the game framework hardened for multiplayer as well as some ease of use functionality.
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include "GasaCommon.h"
 | |
| #include "Networking/GasaNetLibrary.h"
 | |
| #include "UObject/Object.h"
 | |
| #include "GasaObject.generated.h"
 | |
| 
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE(FGasaObjectEventSig);
 | |
| 
 | |
| // A UObject which supports replication and other features.
 | |
| UCLASS( Blueprintable )
 | |
| class GASA_API UGasaObject : public UObject
 | |
| {
 | |
| 	GENERATED_BODY()
 | |
| public:
 | |
| 	
 | |
| 	UGasaObject();
 | |
| 
 | |
| 	UFUNCTION(BlueprintPure)
 | |
| 	FORCEINLINE AActor* GetOwningActor() const { return GetTypedOuter<AActor>(); };
 | |
| 	
 | |
| 	UPROPERTY(BlueprintAssignable, Category="Lifetime")
 | |
| 	FGasaObjectEventSig Event_OnDestroyed;
 | |
| 	
 | |
| 	UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category="Lifetime")
 | |
| 	virtual void Destroy();
 | |
| 
 | |
| 	virtual void OnDestroyed();
 | |
| 
 | |
| 	UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "On Destroyed"))
 | |
| 	void BP_OnDestroyed();
 | |
| 
 | |
| #pragma region Replication
 | |
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Replication")
 | |
| 	bool bReplicates;
 | |
| 	
 | |
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Replication")
 | |
| 	bool bDisconnectOnBadReplication ;
 | |
| 	
 | |
| 	virtual bool ReplicateAsSubobject(AActor* ActorResponsible, UActorChannel* Channel, FOutBunch* Bunch, FReplicationFlags* RepFlags);
 | |
| 
 | |
| 	UFUNCTION(BlueprintCallable)
 | |
| 	void SetIsReplicated(bool DesiredValue)
 | |
| 	{
 | |
| 		bReplicates = DesiredValue;
 | |
| 	}
 | |
| #pragma endregion Replication
 | |
| 
 | |
| #pragma region NetSlime
 | |
| 	// NetSlime interface is generated by GasaGen/GasaGen_NetSlime.cpp
 | |
| 	FORCEINLINE ENetworkMode GetNetworkMode() const { return Gasa::GetNetworkMode( this ); }
 | |
| 	FORCEINLINE bool IsClient()               const { return Gasa::IsClient( this ); }
 | |
| 	FORCEINLINE bool IsListenServer()         const { return Gasa::IsListenServer( this ); }
 | |
| 	FORCEINLINE bool IsNetOwner()             const { return Gasa::IsNetOwner( this ); }
 | |
| 	FORCEINLINE bool IsServer()               const { return Gasa::IsServer( this ); }
 | |
| 	FORCEINLINE bool IsSimulatedProxy()       const { return Gasa::IsSimulatedProxy( this ); }
 | |
| 	FORCEINLINE void NetLog(
 | |
| 	    FString           Message,
 | |
| 	    EGasaVerbosity    Verbosity = EGasaVerbosity::Log,
 | |
| 	    FLogCategoryBase& Category  = LogGasaNet,
 | |
| 	    bool              DumpStack = false,
 | |
| 	    int32             Line      = __builtin_LINE(),
 | |
| 	    ANSICHAR const*   File      = __builtin_FILE(),
 | |
| 	    ANSICHAR const*   Func      = __builtin_FUNCTION()
 | |
| 	)
 | |
| 	{
 | |
| 		Gasa::NetLog( this, Message, Verbosity, Category, DumpStack, Line, File, Func );
 | |
| 	}
 | |
| #pragma endregion NetSlime
 | |
| 
 | |
| #pragma region UObject
 | |
| 	bool CallRemoteFunction(UFunction* Function, void* Parms, FOutParmRec* OutParms, FFrame* Stack) override;
 | |
| 
 | |
| 	int32 GetFunctionCallspace(UFunction* Function, FFrame* Stack) override;
 | |
| 
 | |
| 	void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
 | |
| 
 | |
| 	bool IsSupportedForNetworking() const override;
 | |
| #pragma endregion UObject
 | |
| };
 |