public override void SharedCreatePhysicsConstructionBlueprint(IPhysicsBody physicsBody) { var worldObject = (IStaticWorldObject)physicsBody.AssociatedWorldObject; var isHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: true); SharedCreateDoorPhysics(physicsBody, isHorizontalDoor, isOpened: true); }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; WorldObjectOwnersSystem.ServerInitialize(worldObject); if (!data.IsFirstTimeInit) { return; } var publicState = data.PublicState; var privateState = data.PrivateState; privateState.AccessMode = WorldObjectAccessMode.OpensToObjectOwnersOrAreaOwners; // refresh door type publicState.IsHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: false); publicState.IsOpened = true; // refresh nearby door types (horizontal/vertical) DoorHelper.RefreshNeighborDoorType(worldObject.OccupiedTile); SharedWallConstructionRefreshHelper.SharedRefreshNeighborObjects( data.GameObject.OccupiedTile, isDestroy: false); }
public override void ClientSetupBlueprint(Tile tile, IClientBlueprint blueprint) { var renderer = blueprint.SpriteRenderer; var isHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(tile, checkExistingDoor: true); renderer.PositionOffset = (0, isHorizontalDoor ? DrawWorldOffsetYHorizontalDoor : DrawWorldOffsetYVerticalDoor); renderer.TextureResource = isHorizontalDoor ? this.lazyHorizontalDoorBlueprintTexture.Value : this.lazyVerticalDoorBlueprintTexture.Value; }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; var privateState = data.PrivateState; WorldObjectOwnersSystem.ServerInitialize(worldObject); if (!data.IsFirstTimeInit) { if (!this.HasOwnersList) { privateState.AccessMode = WorldObjectAccessMode.OpensToEveryone; } return; } var publicState = data.PublicState; privateState.AccessMode = this.HasOwnersList ? WorldObjectAccessMode.OpensToObjectOwnersOrAreaOwners : WorldObjectAccessMode.OpensToEveryone; // refresh door type publicState.IsHorizontalDoor = this.IsHorizontalDoorOnly ?? DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: false); publicState.IsOpened = true; foreach (var occupiedTile in worldObject.OccupiedTiles) { SharedWallConstructionRefreshHelper.SharedRefreshNeighborObjects(occupiedTile, isDestroy: false); } }