private static void FindAllActions(EditorConfig _editorConfig) { string[] actionGuids = AssetDatabase.FindAssets("t:OTGCombatAction"); ActionsInstantiated.Clear(); for (int i = 0; i < actionGuids.Length; i++) { string assetPath = AssetDatabase.GUIDToAssetPath(actionGuids[i]); ActionsInstantiated.Add(AssetDatabase.LoadAssetAtPath <OTGCombatAction>(assetPath)); } for (int i = 0; i < ActionsInstantiated.Count; i++) { for (int j = 0; j < ActionsAvailable.Count; j++) { OTGCombatAction actionInstance = ActionsInstantiated[i]; OTGCombatAction spawnAction = ActionsAvailable[j]; if (actionInstance.GetType() == spawnAction.GetType()) { ActionsAvailable.Remove(spawnAction); } } } for (int k = 0; k < ActionsAvailable.Count; k++) { OTGCombatAction act = ActionsAvailable[k]; string[] splitFileName = act.GetType().ToString().Split('.'); AssetDatabase.CreateAsset(act, _editorConfig.CombatActionsPath + "/" + splitFileName[splitFileName.Length - 1] + ".asset"); } }
public static bool CollisionTriggerObstacles(ref GameStateData gs, bool isPlayer, int id, ActionsAvailable action) { if (isPlayer) { var playerData = gs.players[id]; for (int i = 0; i < gs.obstacles.Length; i++) { var obstacle = gs.obstacles[i]; switch (action) { case ActionsAvailable.MOVE_FORWARD: if (!(playerData.playerPosition.x + playerData.PlayerRadius < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius + 0.2 < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.forward).z - playerData.PlayerRadius < obstacle.position.z + obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_BACK: if (!(playerData.playerPosition.x + playerData.PlayerRadius < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius - 0.2 > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.back).z + playerData.PlayerRadius > obstacle.position.z - obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_LEFT: if (!(playerData.playerPosition.x + playerData.PlayerRadius < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius - 0.2 > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.left).x + playerData.PlayerRadius > obstacle.position.x - obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_RIGHT: if (!(playerData.playerPosition.x + playerData.PlayerRadius + 0.2 < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.right).x - playerData.PlayerRadius < obstacle.position.x + obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_FORWARD_LEFT: if (!(playerData.playerPosition.x + playerData.PlayerRadius < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius - 0.2 > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius + 0.2 < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.forward).z - playerData.PlayerRadius < obstacle.position.z + obstacle.radius && (playerData.playerPosition + Vector3.left).x + playerData.PlayerRadius > obstacle.position.x - obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_FORWARD_RIGHT: if (!(playerData.playerPosition.x + playerData.PlayerRadius + 0.2 < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius + 0.2 < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.forward).z - playerData.PlayerRadius < obstacle.position.z + obstacle.radius && (playerData.playerPosition + Vector3.right).x - playerData.PlayerRadius < obstacle.position.x + obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_BACK_LEFT: if (!(playerData.playerPosition.x + playerData.PlayerRadius < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius - 0.2 > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius - 0.2 > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.back).z + playerData.PlayerRadius > obstacle.position.z - obstacle.radius && (playerData.playerPosition + Vector3.left).x + playerData.PlayerRadius > obstacle.position.x - obstacle.radius) { return(true); } break; case ActionsAvailable.MOVE_BACK_RIGHT: if (!(playerData.playerPosition.x + playerData.PlayerRadius + 0.2 < obstacle.position.x - obstacle.radius || playerData.playerPosition.x - playerData.PlayerRadius > obstacle.position.x + obstacle.radius || playerData.playerPosition.z + playerData.PlayerRadius < obstacle.position.z - obstacle.radius || playerData.playerPosition.z - playerData.PlayerRadius - 0.2 > obstacle.position.z + obstacle.radius) && (playerData.playerPosition + Vector3.back).z + playerData.PlayerRadius > obstacle.position.z - obstacle.radius && (playerData.playerPosition + Vector3.right).x - playerData.PlayerRadius < obstacle.position.x + obstacle.radius) { return(true); } break; } } } else { for (int i = 0; i < gs.obstacles.Length; i++) { var projectile = gs.projectiles[id]; var obstacle = gs.obstacles[i]; if (!(projectile.position.x + projectile.radius < obstacle.position.x - obstacle.radius || projectile.position.x - projectile.radius > obstacle.position.x + obstacle.radius || projectile.position.z + projectile.radius < obstacle.position.z - obstacle.radius || projectile.position.z - projectile.radius > obstacle.position.z + obstacle.radius)) { gs.projectiles.RemoveAtSwapBack(id); return(true); } } } return(false); }