54 Days Ago
Network Authority / Permissions (#1457) * Can a connection create objects? * Send network destroy even if DestroyImmediate is called * Ownership authority flags * Let GameObject have [Sync] too (test) * Reorder enum, add [Expose] * Change up logic for can create objects - only check if we have a source * Default CanCreateObjects to true for now (this is current behavior) * Initial implementatior for ownership authority * Use NetworkAccessor for changing ownership authority. (Temp? Depending on review) don't use TL for set prop for Sync Vars * Initial implementation of Rpc authority * Remove a test log * CodeGen static array for attributes on a CodeGenerator method/prop now marked as [SkipHotload] and readonly, so they do update when changed * Make it CanSpawnObjects * CanSpawnObjects settable only by the host * Some renaming. Set OwnerTransfer direct on GameObject instead of method on NetworkAccessor * Make sure CanSpawnObjects is synchronized to clients when set from host via ConnectionInfo * Default CanSpawnObjects to true for now * When OwnerTransfer is Request, make actual requests to the host for Drop/Assign/Take ownership and if host approves, then host will send the messages to everyone to take that action. Each message will then validate if was received from host * Remove this for now, sus is later * CanSpawnObjects is always true for the host. Early out in NetworkSpawn if local connection can't spawn objects - why bother trying at all? * NetworkAccessor.SetOwnerTransfer method * Documentation fixes * Rename Rpc.HasAuthority to Rpc.HasPermission for consistency * Owner can always drop ownership * Allow owner transfer changing from current owner