diff --git a/assets/Data/creatures.json b/assets/Data/creatures.json index db2f8747..5f2d0aa7 100644 --- a/assets/Data/creatures.json +++ b/assets/Data/creatures.json @@ -222,6 +222,7 @@ ], "files" : [ - "Data/creatures/human.json" + "Data/creatures/human.json", + "Data/creatures/elf.json" ] } diff --git a/assets/Data/creatures/elf.json b/assets/Data/creatures/elf.json new file mode 100644 index 00000000..3d4de3e1 --- /dev/null +++ b/assets/Data/creatures/elf.json @@ -0,0 +1,324 @@ +{ + "creatures" : [ + { + "creatureId" : "elf", + "hitboxes" : [ + { + "type": "hurt", + "bone": "Bone.031", + "radius": 0.04 + }, + { + "type": "hurt", + "bone": "Bone.012", + "radius": 0.04 + }, + { + "type": "hurt", + "bone": "Bone.003", + "radius": 0.04 + }, + { + "type": "hurt", + "bone": "Bone.010", + "radius": 0.06 + }, + { + "type": "hurt", + "bone": "Bone.001", + "radius": 0.06 + }, + { + "type": "hurt", + "bone": "Bone.014", + "radius": 0.06 + }, + { + "type": "hurt", + "bone": "Bone", + "radius": 0.08 + }, + { + "type": "hurt", + "bone": "Bone.014", + "radius": 0.06 + }, + { + "type": "hurt", + "bone": "Bone.019", + "radius": 0.04 + } + ], + "tokens" : [ + "BLENDER_TRANSFORM", + "SENTIENT", + "ATTACKER", + "GRAVITY", + "TARGETABLE", + "CAN_EQUIP", + "INVENTORY", + "OUTLINE", + "PLAYABLE" + ], + "visualAttributes" : [ + { + "attributeId" : "TorsoHeight", + "type" : "bone", + "subtype" : "offy", + "primaryBone" : "UpperTorso", + "minValue" : -0.2, + "maxValue" : 0.2 + }, + { + "attributeId" : "TorsoWidth", + "type" : "bone", + "subtype" : "scalex", + "primaryBone" : "UpperTorso", + "minValue" : 0.8, + "maxValue" : 1.2 + }, + { + "attributeId" : "ShoulderSize", + "type" : "bone", + "subtype" : "scale", + "primaryBone" : "Shoulder.R", + "mirrorBone" : "Shoulder.L", + "minValue" : 0.8, + "maxValue" : 1.2 + }, + { + "attributeId" : "JawWidth", + "type" : "bone", + "subtype" : "scalex", + "primaryBone" : "Jaw", + "minValue" : 0.8, + "maxValue" : 1.2 + }, + { + "attributeId" : "JawExtrude", + "type" : "bone", + "subtype" : "posz", + "primaryBone" : "Jaw", + "minValue" : -0.1, + "maxValue" : 0.1 + }, + { + "attributeId" : "HeadWidth", + "type" : "bone", + "subtype" : "scalex", + "primaryBone" : "Head", + "minValue" : 0.8, + "maxValue" : 1.2 + } + ], + "movementSystems" : [ + { + "type" : "GROUND", + "acceleration" : 10.0, + "maxVelocity" : 0.025, + "animationStartup" : { + "name" : "Jog", + "length" : 1, + "loops" : false + }, + "animationLoop" : { + "name" : "Jog", + "length" : 1, + "loops" : false + }, + "animationWindDown" : { + "name" : "Jog", + "length" : 1, + "loops" : false + }, + "sprintSystem" : { + "maxVelocity" : 5.8, + "staminaMax" : 500, + "animationStartUp" : { + "name" : "SprintStart", + "length" : 1, + "loops" : false + }, + "animationMain" : { + "name" : "Sprint", + "length" : 1, + "loops" : false + } + } + }, + { + "type" : "JUMP", + "jumpFrames" : 30, + "jumpForce" : 0.05, + "animationJump" : { + "name" : "Jump", + "length" : 1, + "loops" : false + } + }, + { + "type" : "FALL", + "animationFall" : { + "name" : "Fall", + "length" : 1, + "loops" : true + }, + "animationLand" : { + "name" : "Land", + "length" : 1, + "loops" : true + } + } + ], + "rotatorSystem" : { + "rotatorItems" : [ + { + "boneName" : "Bone", + "constraints" : [ + { + "followsView" : true, + "followsBone" : false, + "parentBone" : "", + "allowedMarginPitch" : 0.2 + } + ] + }, + { + "boneName" : "Leg.L", + "constraints" : [ + { + "followsView" : false, + "followsBone" : true, + "parentBone" : "myTorsoBone", + "allowedMarginYaw" : 0.2 + } + ] + }, + { + "boneName" : "Leg.R", + "constraints" : [ + { + "followsView" : false, + "followsBone" : true, + "parentBone" : "myTorsoBone", + "allowedMarginYaw" : 0.2 + } + ] + } + ] + }, + "equipPoints" : [ + { + "equipPointId" : "handLeft", + "bone" : "MiddleLower.L", + "offsetVector" : [], + "offsetRotation" : [], + "equipClassWhitelist" : [ + "tool", + "shield", + "item" + ] + }, + { + "equipPointId" : "handRight", + "bone" : "MiddleLower.R", + "offsetVector" : [], + "offsetRotation" : [], + "equipClassWhitelist" : [ + "tool", + "weapon", + "item" + ] + }, + { + "equipPointId" : "Torso", + "bone" : "Bone", + "offsetVector" : [], + "offsetRotation" : [], + "equipClassWhitelist" : [ + "armor", + "clothing" + ] + }, + { + "equipPointId" : "Legs", + "bone" : "Bone", + "offsetVector" : [], + "offsetRotation" : [], + "equipClassWhitelist" : [ + "armor", + "clothing" + ] + } + ], + "collidable" : { + "type" : "CYLINDER", + "dimension1" : 0.1, + "dimension2" : 0.45, + "dimension3" : 0.1, + "offsetX" : 0, + "offsetY" : 0.45, + "offsetZ" : 0 + }, + "attackMoves" : [ + { + "attackMoveId" : "Sword1HSlash1", + "type" : "MELEE_WEAPON_SWING_ONE_HAND", + "attackAnimationName" : "Sword1HSlash1", + "windupFrames" : 5, + "attackFrames" : 5, + "cooldownFrames" : 25, + "firesProjectile" : false, + "nextMoveId" : "Sword1HSlash2", + "nextAttackMoveWindowStart" : 0, + "nextAttackMoveWindowEnd" : 1, + "moveChainWindowStart" : 12, + "moveChainWindowEnd" : 18, + "driftGoal" : 0.02, + "driftFrameStart" : 7, + "driftFrameEnd" : 15, + "initialMove" : true + }, + { + "attackMoveId" : "Sword1HSlash2", + "type" : "MELEE_WEAPON_SWING_ONE_HAND", + "attackAnimationName" : "Sword1HSlash2", + "windupFrames" : 2, + "attackFrames" : 5, + "cooldownFrames" : 28, + "firesProjectile" : false, + "nextMoveId" : "Sword1HSlash1", + "nextAttackMoveWindowStart" : 10, + "nextAttackMoveWindowEnd" : 18, + "driftGoal" : 0.03, + "driftFrameStart" : 1, + "driftFrameEnd" : 10, + "initialMove" : false + }, + { + "attackMoveId" : "Bow2HFire", + "type" : "RANGED_WEAPON_BOW_TWO_HAND", + "windupAnimationName" : "HoldBowString", + "holdAnimationName" : "HoldBow", + "attackAnimationName" : "HoldBowString", + "damageStartFrame" : 30, + "damageEndFrame" : 60, + "firesProjectile" : true, + "nextMoveId" : "", + "nextAttackMoveWindowStart" : 0, + "nextAttackMoveWindowEnd" : 1, + "movementStart" : 0, + "movementEnd" : 0, + "movementGoal" : 0, + "initialMove" : false + } + ], + "healthSystem" : { + "maxHealth" : 100, + "onDamageIFrames" : 30 + }, + "modelPath" : "Models/elf1.fbx" + } + ], + "files" : [] +} \ No newline at end of file diff --git a/assets/Data/creatures/human.json b/assets/Data/creatures/human.json index e01aa4a9..0859a643 100644 --- a/assets/Data/creatures/human.json +++ b/assets/Data/creatures/human.json @@ -117,17 +117,17 @@ "acceleration" : 10.0, "maxVelocity" : 0.025, "animationStartup" : { - "name" : "Armature|Jog", + "name" : "Jog", "length" : 1, "loops" : false }, "animationLoop" : { - "name" : "Armature|Jog", + "name" : "Jog", "length" : 1, "loops" : false }, "animationWindDown" : { - "name" : "Armature|Jog", + "name" : "Jog", "length" : 1, "loops" : false }, @@ -151,7 +151,7 @@ "jumpFrames" : 30, "jumpForce" : 0.05, "animationJump" : { - "name" : "Armature|Jump", + "name" : "Jump", "length" : 1, "loops" : false } @@ -159,12 +159,12 @@ { "type" : "FALL", "animationFall" : { - "name" : "Armature|Fall", + "name" : "Fall", "length" : 1, "loops" : true }, "animationLand" : { - "name" : "Armature|Land", + "name" : "Land", "length" : 1, "loops" : true } @@ -264,7 +264,7 @@ { "attackMoveId" : "Sword1HSlash1", "type" : "MELEE_WEAPON_SWING_ONE_HAND", - "attackAnimationName" : "Armature|Sword1HSlash1", + "attackAnimationName" : "Sword1HSlash1", "windupFrames" : 5, "attackFrames" : 5, "cooldownFrames" : 25, @@ -282,7 +282,7 @@ { "attackMoveId" : "Sword1HSlash2", "type" : "MELEE_WEAPON_SWING_ONE_HAND", - "attackAnimationName" : "Armature|Sword1HSlash2", + "attackAnimationName" : "Sword1HSlash2", "windupFrames" : 2, "attackFrames" : 5, "cooldownFrames" : 28, @@ -298,9 +298,9 @@ { "attackMoveId" : "Bow2HFire", "type" : "RANGED_WEAPON_BOW_TWO_HAND", - "windupAnimationName" : "Armature|HoldBowString", - "holdAnimationName" : "Armature|HoldBow", - "attackAnimationName" : "Armature|HoldBowString", + "windupAnimationName" : "HoldBowString", + "holdAnimationName" : "HoldBow", + "attackAnimationName" : "HoldBowString", "damageStartFrame" : 30, "damageEndFrame" : 60, "firesProjectile" : true, diff --git a/assets/Models/elf1.fbx b/assets/Models/elf1.fbx new file mode 100644 index 00000000..cd3b117d Binary files /dev/null and b/assets/Models/elf1.fbx differ diff --git a/assets/Textures/default_texture_map.json b/assets/Textures/default_texture_map.json index 51eff848..113df8ad 100644 --- a/assets/Textures/default_texture_map.json +++ b/assets/Textures/default_texture_map.json @@ -166,6 +166,104 @@ "/Textures/b1.png" ] }, + "Models/elf1.fbx" : { + "Torso" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Hand.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Forearm.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Bicep.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Hand.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Forearm.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Bicep.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Foot.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Foot.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "LowerLeg.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "LowerLeg.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "UpperLeg.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "UpperLeg.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Shorts" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Shoulder.L" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Shoulder.R" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Neck" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Head" : [ + "/Textures/skin1.png", + "/Textures/skin1.png" + ], + "Eyebrow.R" : [ + "/Textures/b1.png", + "/Textures/b1.png" + ], + "Eyebrow.L" : [ + "/Textures/b1.png", + "/Textures/b1.png" + ], + "Eye.R" : [ + "/Textures/w1.png", + "/Textures/w1.png" + ], + "Eye.L" : [ + "/Textures/w1.png", + "/Textures/w1.png" + ], + "Iris.R" : [ + "/Textures/b1.png", + "/Textures/b1.png" + ], + "Iris.L" : [ + "/Textures/b1.png", + "/Textures/b1.png" + ] + }, "Models/building1.fbx" : { "Cube.001" : [ "/Textures/building_diffuse.png", diff --git a/src/main/java/electrosphere/renderer/anim/Animation.java b/src/main/java/electrosphere/renderer/anim/Animation.java index 5c48d63f..069778da 100644 --- a/src/main/java/electrosphere/renderer/anim/Animation.java +++ b/src/main/java/electrosphere/renderer/anim/Animation.java @@ -21,15 +21,15 @@ import org.lwjgl.assimp.AIVectorKey; */ public class Animation { - public static final String ANIMATION_MOVEMENT_STARTUP = "Armature|WalkStart"; - public static final String ANIMATION_MOVEMENT_MOVE = "Armature|Walk"; - public static final String ANIMATION_IDLE_1 = "Armature|Idle1"; - public static final String ANIMATION_SWING_PRIMARY = "Armature|SwingWeapon"; - public static final String ANIMATION_SPRINT_STARTUP = "Armature|RunStart"; - public static final String ANIMATION_SPRINT = "Armature|Run"; - public static final String ANIMATION_SPRINT_WINDDOWN = "Armature|RunStart"; - public static final String ANIMATION_WALK_RIGHT = "Armature|JogRight"; - public static final String ANIMATION_WALK_LEFT = "Armature|JogLeft"; + public static final String ANIMATION_MOVEMENT_STARTUP = "WalkStart"; + public static final String ANIMATION_MOVEMENT_MOVE = "Walk"; + public static final String ANIMATION_IDLE_1 = "Idle1"; + public static final String ANIMATION_SWING_PRIMARY = "SwingWeapon"; + public static final String ANIMATION_SPRINT_STARTUP = "RunStart"; + public static final String ANIMATION_SPRINT = "Run"; + public static final String ANIMATION_SPRINT_WINDDOWN = "RunStart"; + public static final String ANIMATION_WALK_RIGHT = "JogRight"; + public static final String ANIMATION_WALK_LEFT = "JogLeft";