GithubHelp home page GithubHelp logo

Comments (11)

jamescourtney avatar jamescourtney commented on May 28, 2024 3

I have a fix for this pending a bunch of test breaks.

There are two new MSBuild properties you can leverage:

<PropertyGroup>
    <!-- this goes in your shared library. This emits the class definitions, but no serializers -->
   <FlatSharpClassDefinitionsOnly>true</FlatSharpClassDefinitionsOnly>

    <!-- this goes in the consuming library. This triggers only processing 
            explicitly-passed input files. Serializers will be generated for included files, but no class definitions -->
   <FlatSharpInputFilesOnly>true</FlatSharpInputFilesOnly>
</PropertyGroup>

One big limitation is that I can't resolve different drive letters on Windows. Flatc doesn't tell me the drive letter, so I'm kind of up a creek in that regard.

from flatsharp.

jamescourtney avatar jamescourtney commented on May 28, 2024 1

Congrats! You've broken FlatSharp in a way I never anticipated or even really considered :) Looks like you're running afoul of this. FlatSharp internally invokes flatc to do the IDL parsing.

One thing you can do as a short term workaround is to have one "index" FBS file:

include "A.fbs";
include "B.fbs";
...
include "Z.fbs";

It seems I should probably switch from command-line switches to using a configuration file to avoid the path-length limitations.

Regarding the original topic of this thread, I've created this issue in the FlatBuffers repository to see if I can get some guidance. The short version is that flatc doesn't do a great job of telling me which files were explicitly passed in and which were included.

from flatsharp.

jamescourtney avatar jamescourtney commented on May 28, 2024 1

Fixed in 7.2.0 -- let me know how it works for you!

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

On a related note. In an attempt to work around this, I placed all files inside one project. Unfortunately this also doesn't work.

1>dotnet C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\tools\net6.0\FlatSharp.Compiler.dll --nullable-warnings true --normalize-field-names true --gen-poolable false --input "..\Reflection\Schemas\reflection.fbs;..\Arceus\Schemas\Config\AppConfigList.fbs;..\Arceus\Schemas\Config\ConfigureTable.fbs;..\Arceus\Schemas\DressUp\DressUpTable.fbs;..\Arceus\Schemas\Event\Trigger.fbs;..\Arceus\Schemas\Field\LandmarkItemSpawnTable.fbs;..\Arceus\Schemas\Field\LandmarkItemTable.fbs;..\Arceus\Schemas\Field\MassOutbreakTable.fbs;..\Arceus\Schemas\Field\NewHuge\NewHugeOutbreakGroup.fbs;..\Arceus\Schemas\Field\NewHuge\NewHugeOutbreakGroupLottery.fbs;..\Arceus\Schemas\Field\NewHuge\NewHugeOutbreakLottery.fbs;..\Arceus\Schemas\Field\NewHuge\NewHugeOutbreakTimeLimit.fbs;..\Arceus\Schemas\Field\Resident\AreaBGMTable.fbs;..\Arceus\Schemas\Field\Resident\AreaSettingsTable.fbs;..\Arceus\Schemas\Field\Resident\AreaWeatherTable.fbs;..\Arceus\Schemas\Field\Slots\EncounterDataArchive.fbs;..\Arceus\Schemas\Field\Slots\EncounterMultiplerArchive.fbs;..\Arceus\Schemas\Field\Static\EventEncountArchive.fbs;..\Arceus\Schemas\Geometry\AABB.fbs;..\Arceus\Schemas\Geometry\Sphere.fbs;..\Arceus\Schemas\HaShopTable.fbs;..\Arceus\Schemas\Math\math.fbs;..\Arceus\Schemas\Math\Matrix4x3f.fbs;..\Arceus\Schemas\Math\PackedVec2f.fbs;..\Arceus\Schemas\Math\PackedVec3f.fbs;..\Arceus\Schemas\Math\PackedVec4f.fbs;..\Arceus\Schemas\Math\PackedVec4i.fbs;..\Arceus\Schemas\Math\Quat4f.fbs;..\Arceus\Schemas\Math\Transform.fbs;..\Arceus\Schemas\Math\Vec2f.fbs;..\Arceus\Schemas\Math\Vec3f.fbs;..\Arceus\Schemas\Math\Vec4f.fbs;..\Arceus\Schemas\Misc\ArchiveContents.fbs;..\Arceus\Schemas\Misc\KeyAssignmentTable.fbs;..\Arceus\Schemas\Misc\LbPointsTable.fbs;..\Arceus\Schemas\Misc\MoveShopTable.fbs;..\Arceus\Schemas\Misc\PlayReportTable.fbs;..\Arceus\Schemas\Misc\ScriptIDRecordRelease.fbs;..\Arceus\Schemas\NPC\NPCModelSet.fbs;..\Arceus\Schemas\Placement\OybnSettingTable.fbs;..\Arceus\Schemas\Placement\PlacementItemArchive.fbs;..\Arceus\Schemas\Placement\PlacementLocationArchive.fbs;..\Arceus\Schemas\Placement\PlacementMkrgTable.fbs;..\Arceus\Schemas\Placement\PlacementParameters.fbs;..\Arceus\Schemas\Placement\PlacementSearchItemTable.fbs;..\Arceus\Schemas\Placement\PlacementSpawnerData.fbs;..\Arceus\Schemas\Placement\PlacementUnnnTable.fbs;..\Arceus\Schemas\Pokedex\PokedexDistributionTable.fbs;..\Arceus\Schemas\Pokedex\PokedexRankTable.fbs;..\Arceus\Schemas\Pokedex\PokedexResearchTable.fbs;..\Arceus\Schemas\Poke\EvolutionTable.fbs;..\Arceus\Schemas\Poke\Model Set\PokeModelSet.fbs;..\Arceus\Schemas\Poke\Model\BoneScalarMesh.fbs;..\Arceus\Schemas\Poke\Model\Material.fbs;..\Arceus\Schemas\Poke\Model\Mesh.fbs;..\Arceus\Schemas\Poke\Model\MeshBuffer.fbs;..\Arceus\Schemas\Poke\Model\Model.fbs;..\Arceus\Schemas\Poke\Model\MultiMaterialTable.fbs;..\Arceus\Schemas\Poke\Model\PokeConfig.fbs;..\Arceus\Schemas\Poke\Model\Shader.fbs;..\Arceus\Schemas\Poke\Model\Skeleton.fbs;..\Arceus\Schemas\Poke\Moves\Learnset.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWaza.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaNsLegendArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaNsLegendEffectArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaSeArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaWildArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaWildEffectArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaWildWaterArchive.fbs;..\Arceus\Schemas\Poke\Moves\PokeFieldObstructionWazaWildWaterEffectArchive.fbs;..\Arceus\Schemas\Poke\Moves\Waza.fbs;..\Arceus\Schemas\Poke\PersonalInfoLAfb.fbs;..\Arceus\Schemas\Poke\PokeAdd.fbs;..\Arceus\Schemas\Poke\PokeAIArchive.fbs;..\Arceus\Schemas\Poke\PokeBattleSpawnArchive.fbs;..\Arceus\Schemas\Poke\PokeBodyParticleArchive.fbs;..\Arceus\Schemas\Poke\PokeCaptureCollisionArchive.fbs;..\Arceus\Schemas\Poke\PokeDefaultLocatorArchive.fbs;..\Arceus\Schemas\Poke\PokeDropItem.fbs;..\Arceus\Schemas\Poke\PokeDropItemArchive.fbs;..\Arceus\Schemas\Poke\PokeDropItemBattleArchive.fbs;..\Arceus\Schemas\Poke\PokeEatingHabitsArchive.fbs;..\Arceus\Schemas\Poke\PokeMiscTable.fbs;..\Arceus\Schemas\Poke\PokeResource\PokeInfoList.fbs;..\Arceus\Schemas\Poke\PokeResource\PokeResourceTable.fbs;..\Arceus\Schemas\Shared\AbilityType.fbs;..\Arceus\Schemas\Shared\FlatDummyObject.fbs;..\Arceus\Schemas\Shared\NatureType.fbs;..\Arceus\Schemas\Shared\ShinyType.fbs;..\Arceus\Schemas\Throw\CommonCaptureConfigTable.fbs;..\Arceus\Schemas\Throw\ThrowableBaitParamDictionary.fbs;..\Arceus\Schemas\Throw\ThrowableParamTable.fbs;..\Arceus\Schemas\Throw\ThrowableResourceDictionary.fbs;..\Arceus\Schemas\Throw\ThrowableResourceSetDictionary.fbs;..\Arceus\Schemas\Throw\ThrowParamTable.fbs;..\Arceus\Schemas\Throw\ThrowPermissionSet.fbs;..\Arceus\Schemas\TrainerData.fbs;..\Arceus\Schemas\Util\Color3f.fbs;..\Arceus\Schemas\Util\Color4f.fbs;..\LGPE\Schemas\shop.fbs;..\LGPE\Schemas\wild.fbs;..\SV\Schemas\Audio\BGMEventArray.fbs;..\SV\Schemas\Audio\BGMEventType.fbs;..\SV\Schemas\Audio\EnvPokeVoiceLotterySetting.fbs;..\SV\Schemas\Battle\BattleConfig.fbs;..\SV\Schemas\Battle\BattleEffectTableArray.fbs;..\SV\Schemas\Battle\ItemTableArray.fbs;..\SV\Schemas\Battle\PokeExceptionTableArray.fbs;..\SV\Schemas\Cooking\CookingCommonData.fbs;..\SV\Schemas\Cooking\Enums\FoodSkillType.fbs;..\SV\Schemas\Cooking\Enums\IngredientType.fbs;..\SV\Schemas\Cooking\Enums\RecipeType.fbs;..\SV\Schemas\Cooking\Enums\SeasoningType.fbs;..\SV\Schemas\Cooking\FoodPowerComboArray.fbs;..\SV\Schemas\Cooking\IngredientDataArray.fbs;..\SV\Schemas\Cooking\IngredientDishDataArray.fbs;..\SV\Schemas\Cooking\Param\FoodPokeTypeParam.fbs;..\SV\Schemas\Cooking\Param\FoodPowerComboParam.fbs;..\SV\Schemas\Cooking\Param\FoodPowerParam.fbs;..\SV\Schemas\Cooking\Param\IngredientParam.fbs;..\SV\Schemas\Cooking\RecipeDataArray.fbs;..\SV\Schemas\Cooking\SeasoningDataArray.fbs;..\SV\Schemas\Cooking\TakaraSpicePowerTableArray.fbs;..\SV\Schemas\Entity\CollisionShape.fbs;..\SV\Schemas\Entity\ComparisonOperatorType.fbs;..\SV\Schemas\Entity\ConditionSimpleAutoBattleHecklerAreaArray.fbs;..\SV\Schemas\Entity\OwnerInfo.fbs;..\SV\Schemas\Entity\ParamSet.fbs;..\SV\Schemas\Entity\PokemonTriggerID.fbs;..\SV\Schemas\Entity\PokemonUniquePathData.fbs;..\SV\Schemas\Entity\PokeObjArray.fbs;..\SV\Schemas\Event\EventAddPokemonArray.fbs;..\SV\Schemas\Event\EventSub012.RewardTableArray.fbs;..\SV\Schemas\Event\EventTradeListArray.fbs;..\SV\Schemas\Event\EventTradePokemonArray.fbs;..\SV\Schemas\Event\Motion\FieldNpcFaceType.fbs;..\SV\Schemas\Event\Motion\FieldNpcMotion.fbs;..\SV\Schemas\Event\Motion\FieldNpcMotionType.fbs;..\SV\Schemas\Event\Motion\FieldNpcPokemonDefaultMotion.fbs;..\SV\Schemas\Event\Motion\FieldNpcPokemonMotion.fbs;..\SV\Schemas\Event\Motion\NpcTrafficFormation.fbs;..\SV\Schemas\Event\Motion\NpcTrafficPartnerType.fbs;..\SV\Schemas\Event\NpcTrafficGenerateTableArray.fbs;..\SV\Schemas\Event\PopupWindowTableArray.fbs;..\SV\Schemas\Event\TreeShakePokemonArray.fbs;..\SV\Schemas\Geometry\PackedVec2f.fbs;..\SV\Schemas\Geometry\PackedVec3f.fbs;..\SV\Schemas\Geometry\PackedVec4f.fbs;..\SV\Schemas\Geometry\Transform.fbs;..\SV\Schemas\Geometry\Vec3f.fbs;..\SV\Schemas\Gym\ExerciseRewardData.fbs;..\SV\Schemas\Gym\ExerciseSetting.fbs;..\SV\Schemas\Gym\gym.denki.PopupPosTableArray.fbs;..\SV\Schemas\Gym\gym.esper.ENDLESS_BORDERArray.fbs;..\SV\Schemas\Gym\gym.esper.EXERCISE_COURSESArray.fbs;..\SV\Schemas\Gym\gym.kusa.PokeTableArray.fbs;..\SV\Schemas\Gym\gym.kusa.RewardTableArray.fbs;..\SV\Schemas\Gym\gym.mizu.FixTableArray.fbs;..\SV\Schemas\Gym\gym.mizu.SeriItemTableArray.fbs;..\SV\Schemas\Gym\gym.mizu.SeriNpcTableArray.fbs;..\SV\Schemas\Gym\gym.mizu.SeriVenueTableArray.fbs;..\SV\Schemas\Gym\gym.mushi.GymMushiData.fbs;..\SV\Schemas\Gym\gym.mushi.GymMushiRewardArray.fbs;..\SV\Schemas\Gym\GymKooriCoursePokemonTable.fbs;..\SV\Schemas\Gym\GymKooriCourseTableArray.fbs;..\SV\Schemas\Gym\gym_denki.PopupFixTableArray.fbs;..\SV\Schemas\Item\DLCItemGroupArray.fbs;..\SV\Schemas\Item\DropItemDataArray.fbs;..\SV\Schemas\Item\Enums\BattleFunctionType.fbs;..\SV\Schemas\Item\Enums\EquipEffect.fbs;..\SV\Schemas\Item\Enums\FieldFunctionType.fbs;..\SV\Schemas\Item\Enums\FieldPocket.fbs;..\SV\Schemas\Item\Enums\ItemGroup.fbs;..\SV\Schemas\Item\Enums\ItemType.fbs;..\SV\Schemas\Item\Enums\PluckEffect.fbs;..\SV\Schemas\Item\Enums\WorkPpSelTgt.fbs;..\SV\Schemas\Item\Enums\WorkType.fbs;..\SV\Schemas\Item\HiddenItemBiomeTableArray.fbs;..\SV\Schemas\Item\HiddenItemDataTableArray.fbs;..\SV\Schemas\Item\ItemDataArray.fbs;..\SV\Schemas\Item\ItemPointTypeBiomeTableArray.fbs;..\SV\Schemas\Item\MonohiroiItemArray.fbs;..\SV\Schemas\Item\RummagingItemDataTableArray.fbs;..\SV\Schemas\Misc\Ajito\AjitoCommonLevelArray.fbs;..\SV\Schemas\Misc\Ajito\AjitoDifficultEnum.fbs;..\SV\Schemas\Misc\Ajito\AjitoPokemonArray.fbs;..\SV\Schemas\Misc\Ajito\AjitoTypeEnum.fbs;..\SV\Schemas\Misc\Ajito\AjitoUnitArray.fbs;..\SV\Schemas\Misc\GemSettingRootTableArray.fbs;..\SV\Schemas\Misc\RibbonDataArray.fbs;..\SV\Schemas\NetBattle\NetBattleRuleDataArray.fbs;..\SV\Schemas\NetBattle\NetBattleRuleParamArray.fbs;..\SV\Schemas\Personal\PersonalInfoDetail.fbs;..\SV\Schemas\Personal\PersonalInfoDex.fbs;..\SV\Schemas\Personal\PersonalInfoEvolution.fbs;..\SV\Schemas\Personal\PersonalInfoGender.fbs;..\SV\Schemas\Personal\PersonalInfoHatch.fbs;..\SV\Schemas\Personal\PersonalInfoMove.fbs;..\SV\Schemas\Personal\PersonalInfoStats.fbs;..\SV\Schemas\Personal\PersonalTable.fbs;..\SV\Schemas\Picnic\PicnicPokemon.fbs;..\SV\Schemas\Picnic\PicnicSystemData.fbs;..\SV\Schemas\Picnic\PicnicTablesetData.fbs;..\SV\Schemas\Picnic\PicnicWagonData.fbs;..\SV\Schemas\PokeData\PokeDataBattle.fbs;..\SV\Schemas\PokeData\PokeDataEventBattle.fbs;..\SV\Schemas\PokeData\PokeDataFull.fbs;..\SV\Schemas\PokeData\PokeDataSymbol.fbs;..\SV\Schemas\PokeData\PokeDataTrade.fbs;..\SV\Schemas\PokeData\WazaSet.fbs;..\SV\Schemas\Raid\DeliveryRaidEnemyTableArray.fbs;..\SV\Schemas\Raid\DeliveryRaidFixedRewardItemArray.fbs;..\SV\Schemas\Raid\DeliveryRaidLotteryRewardItemArray.fbs;..\SV\Schemas\Raid\DeliveryRaidPriorityArray.fbs;..\SV\Schemas\Raid\Enums\RaidBossExtraActType.fbs;..\SV\Schemas\Raid\Enums\RaidBossExtraTimingType.fbs;..\SV\Schemas\Raid\Enums\RaidRewardItemCategoryType.fbs;..\SV\Schemas\Raid\Enums\RaidRewardItemSubjectType.fbs;..\SV\Schemas\Raid\Enums\RaidRomType.fbs;..\SV\Schemas\Raid\RaidDifficultyLotteryTableArray.fbs;..\SV\Schemas\Raid\RaidEnemyInfo.fbs;..\SV\Schemas\Raid\RaidEnemyTableArray.fbs;..\SV\Schemas\Raid\RaidFixedRewardItemArray.fbs;..\SV\Schemas\Raid\RaidFixedRewardItemInfo.fbs;..\SV\Schemas\Raid\RaidGemSetting.fbs;..\SV\Schemas\Raid\RaidLotteryRewardItemArray.fbs;..\SV\Schemas\Raid\RaidLotteryRewardItemInfo.fbs;..\SV\Schemas\Raid\RaidPokeScaleDataArray.fbs;..\SV\Schemas\Raid\RaidRewardSlotArray.fbs;..\SV\Schemas\Raid\RaidTrainerArray.fbs;..\SV\Schemas\Shared\BallType.fbs;..\SV\Schemas\Shared\BattleType.fbs;..\SV\Schemas\Shared\DataType.fbs;..\SV\Schemas\Shared\DevID.fbs;..\SV\Schemas\Shared\GemType.fbs;..\SV\Schemas\Shared\ItemID.fbs;..\SV\Schemas\Shared\LangType.fbs;..\SV\Schemas\Shared\MoveType.fbs;..\SV\Schemas\Shared\PokeMemoType.fbs;..\SV\Schemas\Shared\RareType.fbs;..\SV\Schemas\Shared\RibbonType.fbs;..\SV\Schemas\Shared\SeikakuType.fbs;..\SV\Schemas\Shared\Sex.fbs;..\SV\Schemas\Shared\SexType.fbs;..\SV\Schemas\Shared\SizeType.fbs;..\SV\Schemas\Shared\TalentType.fbs;..\SV\Schemas\Shared\TokuseiType.fbs;..\SV\Schemas\System\ObjectGenerationRangeArray.fbs;..\SV\Schemas\Trainers\Talk\CheckCategory.fbs;..\SV\Schemas\Trainers\Talk\TalkData.fbs;..\SV\Schemas\Trainers\Talk\TalkRankEffect.fbs;..\SV\Schemas\Trainers\TrainerBodySize.fbs;..\SV\Schemas\Trainers\TrainerCategory.fbs;..\SV\Schemas\Trainers\TrainerDataArray.fbs;..\SV\Schemas\Trainers\TrainerEnvArray.fbs;..\SV\Schemas\Trainers\TrainerTypeArray.fbs;..\SV\Schemas\Trinity\TrinityComponent.fbs;..\SV\Schemas\Trinity\TrinityFileDescriptors.fbs;..\SV\Schemas\Trinity\TrinityFileSystemMetadata.fbs;..\SV\Schemas\Trinity\TrinityPak.fbs;..\SV\Schemas\Trinity\TrinityPropertySheet.fbs;..\SV\Schemas\Trinity\TrinitySceneObject.fbs;..\SV\Schemas\Trinity\TrinitySceneObjectTemplate.fbs;..\SV\Schemas\Trinity\TrinityScenePoint.fbs;..\SV\Schemas\UI\BattleBgmSelectTableArray.fbs;..\SV\Schemas\UI\BufDataArray.fbs;..\SV\Schemas\UI\Dressup\DressupCategoryDataArray.fbs;..\SV\Schemas\UI\Dressup\DressupItemDataArray.fbs;..\SV\Schemas\UI\Dressup\DressupShopDataArray.fbs;..\SV\Schemas\UI\Dressup\DressupStyleDataArray.fbs;..\SV\Schemas\UI\Dressup\DressupStylePresetDataArray.fbs;..\SV\Schemas\UI\Enums\ClerkType.fbs;..\SV\Schemas\UI\Enums\CondEnum.fbs;..\SV\Schemas\UI\Enums\PayType.fbs;..\SV\Schemas\UI\Enums\SellType.fbs;..\SV\Schemas\UI\Enums\ShopKind.fbs;..\SV\Schemas\UI\Quest\DanQuestClearArray.fbs;..\SV\Schemas\UI\Quest\EventSkyFlyArray.fbs;..\SV\Schemas\UI\Quest\GymQuestClearArray.fbs;..\SV\Schemas\UI\Quest\NushiQuestClearArray.fbs;..\SV\Schemas\UI\Restaurant\RestaurantMenuDataArray.fbs;..\SV\Schemas\UI\Restaurant\RestaurantShopDataArray.fbs;..\SV\Schemas\UI\SchoolMapDataArray.fbs;..\SV\Schemas\UI\Shop\FriendlyShopDataArray.fbs;..\SV\Schemas\UI\Shop\LineupDataArray.fbs;..\SV\Schemas\UI\Shop\ShopDataArray.fbs;..\SV\Schemas\UI\Shop\ShopWazamachineDataArray.fbs;..\SV\Schemas\UI\SystemBgArray.fbs;..\SV\Schemas\UI\TipsDataArray.fbs;..\SV\Schemas\UI\ymap\DestinationDataTableArray.fbs;..\SV\Schemas\UI\ymap\NpcDestinationDataTableArray.fbs;..\SV\Schemas\UI\ymap\PlaceNameDataTableArray.fbs;..\SV\Schemas\Waza\Waza.fbs;..\SV\Schemas\Waza\WazaAffinity.fbs;..\SV\Schemas\Waza\WazaEntityStat.fbs;..\SV\Schemas\Waza\WazaID.fbs;..\SV\Schemas\Waza\WazaInflict.fbs;..\SV\Schemas\Waza\WazaType.fbs;..\SV\Schemas\World\Area\AreaInfo.fbs;..\SV\Schemas\World\Area\AreaTag.fbs;..\SV\Schemas\World\Area\AreaType.fbs;..\SV\Schemas\World\Area\BandType.fbs;..\SV\Schemas\World\Area\Biome.fbs;..\SV\Schemas\World\Area\BringItem.fbs;..\SV\Schemas\World\Area\EnableTable.fbs;..\SV\Schemas\World\Area\EncAttr.fbs;..\SV\Schemas\World\Area\EncBiome.fbs;..\SV\Schemas\World\Area\FieldAttrKey.fbs;..\SV\Schemas\World\Area\FieldDungeonAreaArray.fbs;..\SV\Schemas\World\Area\FieldInsideAreaArray.fbs;..\SV\Schemas\World\Area\FieldLocationArray.fbs;..\SV\Schemas\World\Area\FieldMainAreaArray.fbs;..\SV\Schemas\World\Area\FieldSubAreaArray.fbs;..\SV\Schemas\World\Area\OverrideBiome.fbs;..\SV\Schemas\World\EncountPokeDataArray.fbs;..\SV\Schemas\World\EventBattlePokemonArray.fbs;..\SV\Schemas\World\Field\AreaFlyFlagArray.fbs;..\SV\Schemas\World\Field\CoinSymbolManager.fbs;..\SV\Schemas\World\Field\ExclusionGroupArray.fbs;..\SV\Schemas\World\Field\FieldAutomaticReturnTableArray.fbs;..\SV\Schemas\World\Field\FieldAutoReturnPosTableArray.fbs;..\SV\Schemas\World\Field\FieldCamera.fbs;..\SV\Schemas\World\Field\FieldInteriorCamera.fbs;..\SV\Schemas\World\Field\FieldOutOfRangeTableArray.fbs;..\SV\Schemas\World\Field\FieldPlayer.fbs;..\SV\Schemas\World\Field\FieldRide.fbs;..\SV\Schemas\World\Field\GemSymbolLotteryTableArray.fbs;..\SV\Schemas\World\Field\GemSymbolSetting.fbs;..\SV\Schemas\World\Field\MapChangeParametersArray.fbs;..\SV\Schemas\World\FixedSymbol\BehaviorFrequency.fbs;..\SV\Schemas\World\FixedSymbol\FixedSymbolAI.fbs;..\SV\Schemas\World\FixedSymbol\FixedSymbolArray.fbs;..\SV\Schemas\World\FixedSymbol\FixedSymbolGeneration.fbs;..\SV\Schemas\World\FixedSymbol\FixedSymbolManager.fbs;..\SV\Schemas\World\FixedSymbol\GenerationPattern.fbs;..\SV\Schemas\World\FixedSymbol\PokemonActionID.fbs;..\SV\Schemas\World\PointDataArray.fbs;..\SV\Schemas\World\SettingData.fbs;..\SV\Schemas\World\TimeTable.fbs;..\SV\Schemas\World\VersionTable.fbs;..\SV\Schemas\Zukan\BlacklistArray.fbs;..\SV\Schemas\Zukan\DistributionRootArray.fbs;..\SV\Schemas\Zukan\MemoPokeTableArray.fbs;..\SV\Schemas\Zukan\RewardDataArray.fbs;..\SWSH\Schemas\ArchiveContent.fbs;..\SWSH\Schemas\BattleTowerPoke.fbs;..\SWSH\Schemas\BattleTowerTrainer.fbs;..\SWSH\Schemas\CellTable.fbs;..\SWSH\Schemas\EncounterArchive.fbs;..\SWSH\Schemas\EncounterNestArchive.fbs;..\SWSH\Schemas\EncounterStaticArchive.fbs;..\SWSH\Schemas\EncounterTradeArchive.fbs;..\SWSH\Schemas\Geometry\AABB.fbs;..\SWSH\Schemas\Geometry\Sphere.fbs;..\SWSH\Schemas\GiftArchive.fbs;..\SWSH\Schemas\Math\math.fbs;..\SWSH\Schemas\Math\PackedVec3f.fbs;..\SWSH\Schemas\Model\GFBModel.fbs;..\SWSH\Schemas\Model\GFBPokeConfig.fbs;..\SWSH\Schemas\NestHoleCrystalEncounterArchive.fbs;..\SWSH\Schemas\NestHoleDistributionEncounterArchive.fbs;..\SWSH\Schemas\NestHoleDistributionRewardArchive.fbs;..\SWSH\Schemas\NestHoleLevelArchive.fbs;..\SWSH\Schemas\NestHoleRewardArchive.fbs;..\SWSH\Schemas\NestHoleUndergroundArchive.fbs;..\SWSH\Schemas\Placement\Placement.fbs;..\SWSH\Schemas\Placement\PlacementShared.fbs;..\SWSH\Schemas\Placement\PlacementZone.fbs;..\SWSH\Schemas\Placement\PlacementZoneAdvancedTipHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneBerryTreeHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneEnvironmentHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneFieldItemHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneFishingPointHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneFlightAnchorHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneHiddenItemHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneIKStepHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneLadderHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneMovementPathHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneNestHoleHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneNPCHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneOtherNPCHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneParticleHolder.fbs;..\SWSH\Schemas\Placement\PlacementZonePokeCenterSpawnAnchorHolder.fbs;..\SWSH\Schemas\Placement\PlacementZonePopupHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneQuadrantHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneRotomRallyEntry.fbs;..\SWSH\Schemas\Placement\PlacementZoneSpeciesHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneStaticObjectsHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneStepJumpHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneSymbolSpawnHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneTrainerHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneTrainerTipHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneTriggerHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneUnitObjectHolder.fbs;..\SWSH\Schemas\Placement\PlacementZoneWarpHolder.fbs;..\SWSH\Schemas\PokeResourceTable.fbs;..\SWSH\Schemas\RentalArchive.fbs;..\SWSH\Schemas\ScriptMeta.fbs;..\SWSH\Schemas\shop.fbs;..\SWSH\Schemas\SymbolBehavior.fbs;..\SWSH\Schemas\Util\Color3f.fbs;..\SWSH\Schemas\Util\Color4f.fbs;..\SWSH\Schemas\Waza.fbs;..\SWSH\Schemas\WeatherEntry.fbs" --includes "" --output obj\Debug\net7.0\

1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error : System.ComponentModel.Win32Exception (206): An error occurred trying to start process 'C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\tools\net6.0\flatc\windows\flatc.exe' with working directory 'C:\Users\Admin\Documents\Projects\Pokemon Projects\pkNX\pkNX.Structures.FlatBuffers\pkNX.Structures.FlatBuffers'. The filename or extension is too long.
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at System.Diagnostics.Process.Start()
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at FlatSharp.Compiler.FlatSharpCompiler.GetBfbs(CompilerOptions options) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 437
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at FlatSharp.Compiler.FlatSharpCompiler.RunCompiler(CompilerOptions options) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 105
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at FlatSharp.Compiler.FlatSharpCompiler.<>c__DisplayClass7_0.<Main>b__0(CompilerOptions x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 51
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
1>C:\Users\Admin\.nuget\packages\flatsharp.compiler\7.1.1\build\FlatSharp.Compiler.targets(123,9): error :    at FlatSharp.Compiler.FlatSharpCompiler.Main(String[] args) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 47

Maybe we could separate the schemas based on namespaces?
We have separate namespaces for most fbs files. namespace pkNX.Structures.FlatBuffers.Arceus;
And we could then have namespace pkNX.Structures.FlatBuffers for the shared fbs files.

Any files not it that namespace should have no overlap so it'd be safe to treat them as separate compile units. Files that are part of a namespace would still be part of the high level namespace compile units, but be 'shared'

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

Awesome stuff. Thanks for taking the time to help me with this.

The index file is a great idea, that might actually do the trick for now. Will try it tomorrow.

In regards to the include thing. I think you might not need to know what files are included.

Can't we do something like:

var namespace = GetNamespaceFromFile()
var typeName = GetTypeNameFromFile(); // name of class or struct or enum etc.

string fullyQualifiedName = namespace + "." + typeName;

And then

Map<string, FBSCodeInfo> typesMap;

If not typesMap contains fullyQualifiedName {
    Add to map
}
Else
{
  Type is already defined. Might want to produce an error if the source file doesn't match. (Since that would mean it's actually defined twice in a single compilation unit)
}

Then you'd be able to serialize typesMap and import it from the derived projects

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

And maybe we could even give the end user some control over the compilation units by allowing multiple tags and adding an additional output file option.

For something along the lines of:

We have one large project, but we want to generate one set of flat buffers as ProjectA and another set as ProjectB. You might want this if you have conditional compilation. And right now, it would solve part of my problem by compiling into multiple units allowing shorter commands to be used.

But tbh, if the issue here is solved, I don't think we'd need this option anymore.

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

I think it's safe-ish to assume the drive letter is the same as the input file. No one in their right mind would put in absolute paths to a different drive letter to includes in their .fbs

Unless.. it might be added to the aditional includes directory. But that one you'd be able to iterate through yourself so you can manually link the file paths to included files

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

Awesome! Thanks for all the effort you put into helping us integrate it into our project!

I'll be testing everything first chance I get :)

from flatsharp.

jamescourtney avatar jamescourtney commented on May 28, 2024

@duckdoom4 -- Please LMK if this is working as you expect. You should probably use FlatSharp 7.2.1 as it resolves the drive-letter issue.

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

Sorry, didn't have much time yet. I tried to get things to work but didn't complete the update yet. So far everything seems to work with one exception, but that might be my mistake. I'll let you know when I can be certain

from flatsharp.

duckdoom4 avatar duckdoom4 commented on May 28, 2024

@jamescourtney Hi there, I finally got time to test everything out properly. I am running into a small issue still though, but I think that's easy to solve. How did you intend the projects to be structured?

I now have:
ClassLibrary called pkNX.Structures.FlatBuffers.Shared
With the following properties:

<PropertyGroup>
  <FlatSharpClassDefinitionsOnly>true</FlatSharpClassDefinitionsOnly>
</PropertyGroup>

<ItemGroup>
  <FlatSharpSchema Include="Schemas\**\*.fbs">
    <IncludePath>Schemas\</IncludePath>
  </FlatSharpSchema>
</ItemGroup>

ClassLibrary called pkNX.Structures.FlatBuffers.Main
With the following properties:

<ItemGroup>
  <ProjectReference Include="..\pkNX.Structures.FlatBuffers.Shared\pkNX.Structures.FlatBuffers.Shared.csproj" />
</ItemGroup>

<PropertyGroup>
  <FlatSharpDeserializers>GreedyMutable</FlatSharpDeserializers>
  <FlatSharpInputFilesOnly>true</FlatSharpInputFilesOnly>
</PropertyGroup>

<ItemGroup>
  <FlatSharpSchema Include="Schemas\**\*.fbs">
    <IncludePath>Schemas\</IncludePath>
    <IncludePath>..\pkNX.Structures.FlatBuffers.Shared\Schemas\</IncludePath>
  </FlatSharpSchema>
</ItemGroup>

This generates the following warning:
.\pkNX.Structures.FlatBuffers.SWSH\..\FlatSharp.generated.cs(171497,21,171497,25): warning CS0436: The type 'AABB' in '.\pkNX.Structures.FlatBuffers.SWSH\..\FlatSharp.generated.cs' conflicts with the imported type 'AABB' in 'pkNX.Structures.FlatBuffers.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in '.\pkNX.Structures.FlatBuffers.SWSH\..\FlatSharp.generated.cs'.

I can see that in both files it still generates the partial class for both projects in their FlatSharp.generated.cs. I'm guessing I just need to edit the project setup?

(Everything else is working wonderfully btw. Very happy with the new features :D)

from flatsharp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.