Now that things are coming together on github, should we start providing models sets as pure resources without any extra information about how they will be used? Then provide additional modules to specify usage, along the lines of what LightAndShadow/Resources appears to be doing?
For example, the Oreons module prefabs contain references to spawners, minions, and character attributes. I would suggest that the OreonResources module only contain "persisted", "skeletalmesh", and "Animation". Maybe also Character/Location/CharacterMovement/CharacterSound as these are engine components. Then the user of this module would add in things like Minion, SimpleMinionAI, Inventory, AccessInventoryAction, and Spawnable in a prefab that inherits from Oreons:OreoBuilder.
For example, the Oreons module prefabs contain references to spawners, minions, and character attributes. I would suggest that the OreonResources module only contain "persisted", "skeletalmesh", and "Animation". Maybe also Character/Location/CharacterMovement/CharacterSound as these are engine components. Then the user of this module would add in things like Minion, SimpleMinionAI, Inventory, AccessInventoryAction, and Spawnable in a prefab that inherits from Oreons:OreoBuilder.
Code:
{
"persisted" : true,
"location" : {},
"skeletalmesh" : {
"mesh" : "Oreons:OreoBuilder",
"material" : "Oreons:OreonSkin",
"animation" : "Oreons:BuilderIdle",
"loop" : true
},
"Minion" : {
"icon" = "minionskull",
"Healthtotal" = 300,
"Hungertotal" = 100,
"Staminatotal" = 100
},
"CharacterMovement" : {
"faceMovementDirection" : true
},
"Character" : {
},
"Animation" : {
"walkAnim" = "Oreons:BuilderWalk",
"idleAnim" = "Oreons:BuilderIdle",
"attackAnim" = "Oreons:BuilderThor",
"dieAnim" = "Oreons:BuilderDead",
"fadeInAnim" = "Oreons:BuilderIdle",
"fadeOutAnim" = "Oreons:BuilderIdle",
"workAnim" = "Oreons:BuilderBuild",
"terraformAnim" = "Oreons:BuilderShow",
"randomAnim" : ["Oreons:BuilderWave", "Oreons:BuilderShow"]
},
"SimpleMinionAI" : {},
"CharacterSound" : {
"footstepSounds" : ["Slime1", "Slime2", "Slime3", "Slime4", "Slime5"],
"footstepVolume" : 0.7
},
"Inventory": {
"itemSlots": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
"AccessInventoryAction": {},
"Spawnable" : {
"type" : "oreon"
}
}